Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Status
colourGreen
titleiq4

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

Table of Contents

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

Image Modified

  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

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

Code Block
languagejs
{
    "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": "Москва"
            }
        ]
    }
}

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


Code Block
languagejs
{
    "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 в теле ответа:

Code Block
languagejs
{
    "errorCode": "1001",
    "errorText": "Client not found"
}

Изменения

Версия 1.1

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

Версия 1.2

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