IQ4

Auth API — это протокол авторизации клиента, который использует сервер чата для авторизации клиента во внешней системе (CRM/ДБО или другой учетной системе).

Протокол авторизации

  1. Получение токена. Браузер или мобильное приложение получают или генерируют токен клиента для авторизации в чате. Токен — это любая строка. Например, это может быть токен текущей сессии.
  2. Передача токена в SDK. При инициализации SDK чата (виджета, мобильных SDK) браузер или мобильное приложение передает в него токен клиента.
  3. Запрос авторизации по токену. SDK чата отправляет запрос на авторизацию клиента на сервер чата.
  4. Запрос карточки клиента. Сервер чата получает токен и отправляет этот токен в сервис авторизации для авторизации клиента и получение его карточки. Сервисом авторизации может выступать CRM, ДБО и т.д.
  5. Возврат карточки клиента. Сервис авторизации проверяет токен клиента и возвращает карточку клиента или ошибку.
  6. Сохранение информации о клиенте. Сервер чата сохраняет карточку клиента локально.
  7. Возврат сессии авторизации в чате. Сервер чата создает сессию авторизации клиента в чате и возвращает ее в SDK.
  8. Авторизация клиента в SDK завершена.

Запрос

Все запросы отправляются с помощью HTTP GET запросов к REST-сервису.

Пример запроса

http://[host]:[port]/rest/chat/client/id/{token}

Входные параметры в URL

Параметр

Обязательность

Описание

token

да

Токен клиента

Ответ

Response

В случае успешного ответа сервер возвращает статус 200 с ответом в формате application/json.

Поле

Тип

Обязательное

Комментарий

clientClientнетИнформация о клиенте
companyListList<Company>нетСписок организаций, к которым относится текущий клиент.




errorCodeStringнетКод ошибки
errorTextStringнетТекст ошибки

Client

Поле

Тип

Обязательное

Комментарий

idLongдаИдентификатор клиента в CRM
nameStringда

ФИО клиента

surnameStringдаФамилия
firstnameStringдаИмя
patronymicStringдаОтчество
typeLongдаКод типа клиента
enabledBooleanдаОбслуживание клиента разрешено
birthDateDateнетДата рождения
extRefStringнетИдентификатор клиента в АБС
cardRefStringнетИдентификатор клиента в карточный системе
bankBranchBranchнетИнформация о подразделении клиента
crmURLStringнетПолная ссылка, по которой клиента можно открыть в CRM.
innStringнетИНН клиента.
shortNameStringнетКраткое наименование клиента.




fieldsMap<String, String>нет

Deprecated, нужно использовать fieldList

Поля с дополнительной информацией о клиенте в виде название поле → значение.

fieldListList<Field>нетПоля с дополнительной информацией о клиенте, при отображении в интерфейсе оператора учитывается порядок полей.
contactsContactsнетИнформация о контактах клиента для информирования оператора и выстраивания омниканальных связей
secretWordStringнетКодовое слово, которое операторы или бот используют для ручной идентификации клиента
groupList<Group>нетИнформация о группах клиентов для версии iQPro.

Branch

Информация о филиале обслуживания клиента..

Поле

Тип

Обязательное

Комментарий

idLongнетИдентификатор подразделения \ филиала во внешней системе
extRefStringнетИдентификатор в главной учетной системе (например АБС)
bikStringнетБИК подразделения (для банка)
nameStringнетНаименование подразделения \ филиала

Company

Информация об организации.

Поле

Тип

Обязательное

Комментарий

idLongдаИдентификатор организации во внешней системе
nameStringнетНаименование организации
typeLongнетКод типа организации
enabledBooleanнетОбслуживание организации разрешено
extRefStringнетКод организации в главной учетной системе (например АБС)
innString
ИНН
kppString
КПП
residentBoolean
Признак "Нерезидент"
phoneString
Телефоны
shortNameString
Сокращенное наименование
internationalNameString
Международное наименование
ogrnString
ОГРН
ogrnDateDate
Дата ОГРН
internationalAddressString

Field

Поле с дополнительной информацией о клиенте.

Поле

Тип

Обязательное

Комментарий

nameStringдаНазвание поля, которое будет отображаться в интерфейсе оператора
valueStringдаЗначение поля

Contacts

Официальные подтвержденные контакты клиента. Данные контакты и идентификаторы используются системой для построения омниканальных связей.


ПолеТипОбязательноеКомментарий
phoneStringнетНомер телефона
emailStringнетЭлектронная почта
telegramUserNameStringнетТекстовый идентификатор пользователя в Telegram
whatsappPhoneStringнетИдентификатор пользователя в Whatsapp в формате номера телефона

Group

Группа клиента. Данные используются системой для автоматической сегментации клиентов по группам.

ПолеТипОбязательноеКомментарий
idLongдаИдентификатор группы во внешней системе
parentGroupGroupнетИнформация о родительской группе в случае древовидной структуры
nameStringнетНаименование группы. Если не задано, можно указать вручную в iQChannels
descriptionStringнетОписание группы
priorityLongнетПриоритет обращений от клиентов в данной группе по умолчанию

Примеры ответов

Успешный ответ

В случае успешного ответа сервер возвращает статус 200 с ответом в формате application/json:

GET http://127.0.0.1:8080/rest/chat/client/id/a57974242d0146c28056

Успешный ответ:

{
    "client": {
        "id": "1064775",
        "name": "Давыдов Юрий Викторович",
        "surname": "Давыдов",
        "firstname": "Юрий",
        "patronymic": "Викторович",
        "shortName": "Юрий",
        "birthDate": "1976-03-31",
        "type": "0",
        "enabled": "true",
        "extRef": "1",
        "bankBranch": {
            "id": "720987",
            "extRef": "1",
            "bik": "042809888",
            "name": "ЗАО КБ \"ГЛОБАЛЬНЫЙ РАСЧЕТНЫЙ ЦЕНТР\""
        },
        "fieldList": [
            {
                "name": "ИНН",
                "value": "1234567890"
            },
            {
                "name": "Город",
                "value": "Москва"
            }
        ]
    }
}

Успешный ответ со списком компаний


{
    "client": {
        "id": "124625",
        "name": "Царев Алексей Юрьевич",
        "surname": "Царев",
        "firstname": "Алексей",
        "patronymic": "Юрьевич",
        "birthDate": "1973-09-02",
        "type": "2",
        "enabled": "false"
    },
    "companyList": [
        {
            "id": "225760",
            "name": "ООО УралСтройМаш",
            "extRef": "561",
            "inn": "7701028744",
            "kpp": "770001001",
            "resident": "true",
            "phone": "+79093342334",
            "shortName": "ОАО ЛИГА",
            "internationalName": "LIGA JSC",
            "ogrn": "1057703026633",
            "ogrnDate": "2005-02-11"
        },
        {
            "id": "124612",
            "name": "ОАО Капитолий",
            "extRef": "560",
            "inn": "7701058541",
            "kpp": "770001001",
            "resident": "true",
            "phone": "123-34-45",
            "shortName": "ОАО Капитолий",
            "internationalName": "CAPITOLIY JSC",
            "ogrn": "2801283419468",
            "internationalAddress": "",
            "regAddress": ""
        }
    ]
}

Ответ с ошибкой

В случае ошибки сервер возвращает статус не 200, а также может дополнительно возвращать описание ошибки в формате application/json в теле ответа:

{
    "errorCode": "1001",
    "errorText": "Client not found"
}

Изменения

Версия 1.1

  • В типе Client добавлено поле shortName.
  • В типе Client добавлено поле fieldList.
  • Добавлен тип Field.

Версия 1.2

  • В типе Client добавлено поле contacts.
  • В типе Client добавлено поле secretWord.
  • В типе Client добавлено поле group.
  • Добавлен тип Contacts.
  • Добавлен тип Group.


  • No labels