Вывод Агента в омниканальные платформы

icon picker
Публичный асинхронный API "Omnichannel"

Omnichannel — универсальный канал с публичным API, предназначенный для подключения
@Агент
а к
@Конечный канал
, для которых нет встроенного в
@Платформа
@Брендовый коннектор
.
Организовать такой универсальный канал можно с помощью
@Универсальный коннектор
“Omnichannel”.

Подключение

Конфигурация канала агента в Платформе

@Агент
у необходимо создать и настроить
@Канал Агента
с
@Коннектор
ом “Omnichannel”.
Войдите в меню редактирования (Edit) настроек вашего
@Агент
а
image.png
В появившемся окне перейдите на вкладку Channels для настройки каналов, затем:
выберите тип канала Omnichannel
Нажмите кнопку Add channel ​
Снимок экрана 2023-07-03 в 17.59.51.png
Интеграция с сервером клиента происходит через универсальный
@Коннектор
с названием “Omnichannel”, установите его в поле Channel.
image.png
По необходимости пропишите заголовок для данного
@Канал Агента
в поле Title. ​
image.png
После выбора
@Коннектор
вам станет доступна ссылка на вебхук канала агента (поле Chatbot webhook: URL).
Снимок экрана 2023-07-03 в 23.46.00.png
Пропишите адрес вашего сервера в поле Channel webhook: URL в виде https://{server_adress},
где {server_adress} — адрес
@Платформа
.
Важно: к указанному адресу будет подставлен метод при отправке
@Агент
ом ответа на запрос из канала/сервера клиента: https://your_company.com/send_message.
Установите ваш токен в поле Channel webhook: Token в окне настроек
@Канал Агента
.
Важно: токен необходимо указывать в случае, если авторизация на стороне клиента осуществляется через header. Подробнее описано в .
Снимок экрана 2023-07-03 в 23.58.55 1.png
Активируйте канал переключением тумблера для того, чтобы
@Агент
начал отвечать в нем. ​
image.png
Если
@Агент
не был обучен, появится предупреждение. В таком случае необходимо обучить
@Агент
а, после чего повторить попытку активации
@Канал Агента
.
image.png
После активации
@Канал Агента
, если есть проблемы с его доступностью, будет выведено предупреждение (
@Канал Агента
будет активирован несмотря на проблемы):
"Can’t reach channel" — выводится в случае, если сервер не отвечает по указанному URL
image.png
Сохраните
@Канал Агента
— нажмите Save.
Важно: Все настройки будут применены только после сохранения.

Запросы из канала/сервера клиента к Агенту на Платформе

Поддерживаемый протокол и метод:
HTTPS, POST c content-type JSON
Endpoint для получения запросов каналом агента:
Запросы отправляются на Chatbot Webhook URL, указанный при
@Канал Агента
.
Формат endpoint (Chatbot Webhook URL):
Платформа развернута в облаке
https://admin.chatme.ai/connector/omnichannel/omnichannel_message/{token}/bot_api_webhook
Платформа развернута в контуре клиента
https://{server_adress}/connector/omnichannel/omnichannel_message/{token}/bot_api_webhook
Где:
{server_adress} — адрес
@Платформа
,
{token} — токен авторизации.

Общая структура запроса

Вид тела запроса:
{
"event": (string),
"chat_id": (integer),
"visitor": {
"id": (string),
"fields": {
Fields (object)
}
},
"message": {
Message (object)
}
}
Важно: структура объекта Message зависит от типа передаваемого сообщения (текст, файл, нажатие на кнопку) и может состоять из разных видов данных и полей.

Тип события event

event — тип события, которое
@Агент
обрабатывает по определенной логике.
Поддерживаемые типы событий:
new_message — cобытие, которое передается
@Агент
у каналом/сервером клиента и содержит сообщение от
@Собеседник
а.

Идентификатор chat_id

chat_id — идентификатор чата/диалога/собеседника на сервере клиента (в приложении для общения - конечном канале), на основании которого создается
@Чат
с данным
@Собеседник
ом в Платформе.

Объект Visitor

Visitor — объект, содержащий информацию о
@Собеседник
е.
Вид Visitor:
{
"id": (string — псевдоуникальный идентификатор Собеседника, назначенный сервером клиента),
"fields": {
"name": (string),
"login": (string),
"phone": (string),
"email": (string),
"site": (string)
}
}
Пример Visitor:
{
"id": "03e1c040d8214bfa8ccfbb053186a24a",
"fields": {
"name": "Иван",
"login": "ivan",
"phone": "+79991111111",
"email": "ivan@gmail.com",
"site": "https://site.com"
}
}

Объект Message

Message — объект, содержащий информацию, передаваемую в
@Агент
а для обработки.
{
"id": (string — идентификатор сообщения на стороне сервера клиента),
"kind": (string — тип сообщения),
"text": (string — текст сообщения Собеседника),
"data": (JSON — данные о файле или нажатой кнопке)
}

Поддерживаемый контент сообщений

Ниже представлены примеры содержимого объекта Message для различных типов сообщений.
Текст
Вид Message:
{
"id": (string),
"kind": "visitor",
"text": (string — текст сообщения Собеседника)
}
Пример Message:
{
"id": "feb8e0f7fe08486db2494c2d5058fd33",
"kind": "visitor",
"text": "Здравствуйте"
}
Файл
Вид Message:
{
"id": (string),
"kind": "file_visitor",
"data": {
"id": (string — идентификатор файла),
"state": (string — состояние отправки файла),
"name": (string — имя файла с расширением),
"content_type": (string — ),
"size": (integer — размер файла в байтах),
"url": (string — URL-адрес файла)
}
}
Пример Message:
{
"id": "c3e19d57f64e43c3afabdef2ef4e4054",
"kind": "file_visitor",
"data": {
"id": "81f0488",
"state": "ready",
"name": "file.txt",
"content_type": "text",
"size": 560,
"url": "https://yoursite.com/content/file.txt"
}
}
Важно: событие будет обработано только при получении state == ready.
При kind == file_visitor Публичный API "Omnichannel" получает данные о файле и преобразует их в текстовое сообщение для
@Агент
а в формате: file:{file_type}|{file_id}|{file_url} . Сам файл
@Агент
не выкачивает.
Нажатие на кнопку
Вид Message:
{
"id": (string),
"kind": "keyboard_response",
"data": {
"button": {
"id": (string — идентификатор кнопки),
"text": (string — текст кнопки)
}
}
}
Пример Message:
{
"id": "ddaa8401e1ef4910abb3657f3ea09683",
"kind": "keyboard_response",
"data": {
"button": {
"id": "937bec4863154a2fb0889ff1320d1e2f",
"text": "Задать вопрос оператору"
}
}
}

Ответы на запросы из канала/сервера клиента к Агенту на Платформе

Ответ Платформы при успешном запросе

HTTP status: 200 OK
BODY:
{
"result": "ok"
}

Ответ Платформы при неуспешном запросе

@Канал Агента
неактивен или присутствует ошибка в токене Chatbot Webhook в URL
HTTP status: 400 Bad Request
BODY:
{
"error": "There is no active channel for received event."
}
Отсутствует обязательный параметр в теле запроса
HTTP status: 400 Bad Request
Указан некорректный URL
HTTP status: 404: Not Found
Некорректный JSON тела запроса: невалидный параметр event или kind
HTTP status: 200 OK
Некорректный JSON тела запроса: другие ошибки помимо указания невалидных параметров event или kind
HTTP status: 500 Internal Server Error
Внутренние ошибки сервера
HTTP status: 500 Internal Server Error

Запросы от Платформы в канал/сервер клиента

Ниже изложены форматы, примеры и описания запросов от Публичного API "Omnichannel" на сервер клиента.

Базовый URL

Запросы отправляются на URL-адрес клиентского сервера, прописанного в поле Channel Webhook: URL при
@Канал Агента
.
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.