Перейти к основному содержимому
Версия: Последняя

Auth API

Лицензия

API доступно только при наличии модуля "IQChannels – API. Auth.C" или "IQChannels – API. Auth.B" или "IQChannels – iSimpleCorporate" или "IQChannels – iSimpleRetail"

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

Для авторизации юридических и физических лиц используется единое API, при этом минимальный атрибутный состав API будет обрабатываться только при наличие соответствующего модуля (например companyList обрабатывается только при наличии модуля "IQChannels – API. Auth.B" или "IQChannels – iSimpleCorporate").

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

Auth.png

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

Запрос

Запросы можно отправлять с помощью одного из HTTP методов к REST-сервису: GET или POST.

При этом в случае с методом GET - токен содержится в URL-запроса, при использовании метода POST - токен передается в параметре header.

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

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

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

ПараметрОбязательностьОписание
tokenдаТокен клиента

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

http://[host]:[port]/rest/chat/client/id/
ЭлементОбязательностьГде передаетсяОписание
tokenдаheaderТокен клиента

Ответ

Response

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

ПолеТипОбязательноеКомментарий
clientClientнетИнформация о клиенте
companyListList CompanyнетСписок организаций, к которым относится текущий клиент. (Только для модулей "IQChannels – API. Auth.B" и "IQChannels – iSimpleCorporate")
errorCodeStringнетКод ошибки
errorTextStringнетТекст ошибки

Client

ПолеТипОбязательноеКомментарий
idStringдаИдентификатор клиента в CRM (Master ID)
contractStringнетНомер генерального соглашения, соглашений может быть несколько, передавать через запятую
telSysClientIdStringнетИдентификатор клиента в системе телефонии
nameStringдаФИО клиента
surnameStringдаФамилия
firstnameStringдаИмя
patronymicStringнетОтчество
typeString (0 или 1)даКод типа клиента (физическое лицо \ юридическое лицо).
enabledStringдаОбслуживание организации разрешено - "true", иначе - "false"
birthDateString (YYYY-MM-DD)нетДата рождения
extRefStringнетИдентификатор клиента в АБС
cardRefStringнетИдентификатор клиента в карточный системе (ДКБО ID)
bankBranchBranchнетИнформация о подразделении клиента
actionListList ActionListнетСписок кнопок-ссылок в формате: name - value
innStringнетИНН клиента.
shortNameStringнетКраткое наименование клиента.
accountNumbersStringнетНомера счета клиента. Данное поле не сохраняется в карточке клиента и храниться только в рамках открытого обращения
positionStreamBooleanнетНовый портфель, значение для PositionStream (true/false)
betaUserBooleanнетФлаг бета пользователя (true/false)
lvlClientStringнетСервисный уровень клиента, приоритет обслуживания
timezoneStringнетЧасовой пояс на устройстве клиента
osVersionStringнетВерсия ОС устройства
deviceStringнетТип устройства
deviceVersionStringнетВерсия приложения
contactsContactsнетИнформация о контактах клиента для информирования оператора и выстраивания омниканальных связей
secretWordStringнетКодовое слово, которое операторы или бот используют для ручной идентификации клиента
groupGroupнетИнформация о группах клиентов для версии iQPro.

Branch

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

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

Company

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

ПолеТипОбязательноеКомментарий
idIntegerдаИдентификатор организации во внешней системе
nameStringнетНаименование организации
typeStringнетКод типа организации
enabledStringнетОбслуживание организации разрешено - "true", иначе - "false"
extRefStringнетКод организации в главной учетной системе (например АБС)
innStringнетИНН
kppStringнетКПП
residentBooleanнетПризнак "Нерезидент"
phoneStringнетТелефоны
shortNameStringнетСокращенное наименование
internationalNameStringнетМеждународное наименование
ogrnStringнетОГРН
ogrnDateString (YYYY-MM-DD)нетДата ОГРН
internationalAddressStringнетПолный международный адрес компании

Field

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

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

Contacts

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

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

Group

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

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

ActionList

Группа кнопок \ ссылок.

ПолеТипОбязательноеКомментарий
nameStringнетНазвание/текст кнопки \ ссылки. Если не указано, то по умолчанию заполняется как “Открыть в CRM”
typeIntegerнетТип элемента (ссылка \ кнопка). Допустимые значения: * 0 (или не указано) - Ссылка (вертикальная последовательность) * 1 - Кнопка (горизонтальная последовательность)
valueStringдаЗначение поля - URL ссылка, куда будет вести кнопка \ ссылка

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

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

В случае успешного ответа сервер возвращает статус 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.

Версия 1.3

  • Добавлена возможность использовать протокол AUTH с методом POST.
  • В типе Client добавлено поле accountNumbers.
  • В типе Client добавлено поле positionStream.
  • В типе Client добавлено поле betaUser.
  • В типе Client добавлено поле lvlClient.
  • В типе Client добавлено поле timezone.
  • В типе Client добавлено поле osVersion.
  • В типе Client добавлено поле device.
  • В типе Client добавлено поле deviceVersion.

Версия 1.4

  • В типе Client добавлено поле actionList.
  • Добавлен тип ActionList.