IQ4

Описание

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

Запрос

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

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

http://[host]:[port]/rest/chat/client/search/


Параметры POST запроса


ПараметрТипОбязательностьОписание
clientStringдаОдин из идентификаторов клиента. Например: Номер телефона, email, наименование аккаунта клиента в социальной сети или crmId
clientIdTypeStringнетТип переданного идентификатора. Варианты: "email" - электронная почта, "phone" - номер телефона, "crmid" - id клиента учетной системе (CRM или ДБО), не указан - тип не указан (например при нескольких шагах).
channelIdStringнетИдентификатор канала, соответствующий короткому названию канала на английском языке (без пробелов, например, support)
secretWordStringнетКодовое слово (если установлено), СМС пароль, либо другая информация, которую запросила внешняя система
stepIdStringнетИдентификатор шага (процесса), который нужно передать во внешнюю систему (приходит от внешней системы на предыдущем шаге)

Ответ

Response

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

Поле

Тип

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

Комментарий

answerTypeLongда

Один из вариантов ответа от внешней системы.

1 - Запрос дополнительной информации. Например: Клиенту отправлен СМС с одноразовым паролем, необходимо указать значение.

2 - Идентификация прошла успешно, отправлен token клиента 

answerTextStringнетРасшифровка сообщения из внешней системы, например: "На номеру 8 922 **** 3663 отправлен СМС-пароль для идентификации"
secretWordValidatorStringнетРегулярное выражение описывающее формат проверки ожидаемого в следующем шаге атрибута secretWord
stepIdStringнетИдентификатор шага (процесса), который нужно передать во внешнюю систему на следующем шаге
tokenStringнетТокен клиента, который отправила внешняя система в результате успешной идентификации на answerStep = 2. Данный токен используется для авторизации и получения карточки клиента через протокол Auth API 
errorCodeStringнетКод ошибки
errorTextStringнетТекст ошибки

Примеры запросов и ответов

Поиск клиента

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

POST http://127.0.0.1:8080/rest/chat/client/search/a57974242d0146c28056

Параметры запроса:

ПараметрЗначение
client+79221234567


Успешный ответ c требованием отправить одноразовый пароль:

{
	"answerType": 1,
	"answerText": "Пожалуйста введите СМС пароль, который был отправлен на номер *4567",
	"stepId": "a2e4c2b5a9aaf34826ba"
}

Идентификация клиента

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

POST http://127.0.0.1:8080/rest/chat/client/search/a57974242d0146c28056

Параметры запроса:

ПараметрЗначение
client+79221234567
secretWord0987
stepIda2e4c2b5a9aaf34826ba


Успешный ответ с предоставлением токена клиента. Данный токен может быть использован для авторизации и получения карточки клиента через протокол Auth API:

{
	"answerType": 2,
	"token": "ca57974242d0146c2805b"
}

В качестве ответа может вернуться запрос дополнительной информации. Данный процесс может повторяться циклично до получения всей необходимой информации (например: 1 шаг - дата рождения, 2 шаг - кодовое слово, 3 шаг - СМС пароль). Для отслеживания шага можно использовать параметр stepId.

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

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

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

Изменения

Версия 1.1 (релиз еще не выпущен)

  • В параметры запроса добавлен необязательный параметр clientIdType с вариантами ("email", "phone", "crmid").
  • В параметры ответа добавлен необязательный параметр secretWordValidator с регулярным выражением для проверки secretWord
  • No labels