Перейти к основному содержимому

Operator API

подсказка
Operator API — REST API для интеграции операторских каналов с Aimylogic.

При помощи Operator API вы можете подключить любой операторский канал к проекту чат-бота, который был создан в Aimylogic. При интеграции с Aimylogic в приложение оператора направляются данные, полученные чат-ботом в диалоге с клиентом.

Методы API позволяют:

  • отправить сообщение или ссылку на файл оператору;
  • выбрать группу операторов для обработки обращений;
  • передать оператору дополнительную информацию о клиенте;
  • подписаться на уведомления, посредством которых Operator API информирует о сообщениях для клиента, о доставке сообщений клиента, о закрытии сообщения оператором и других событиях.

Методы API

При интеграции с Aimylogic по Operator API вы должны создать веб-сервер, который поддерживает запросы:

предупреждение
Во всех запросах к Operator API используется {apiUrl} — полный URL-адрес веб-сервера, на который будут отправляться запросы. Иными словами, это URL используемой вами операторской платформы.

POST /setWebhook

Метод устанавливает URL, на который будут направляться события для обработки Aimylogic. Например, отправка сообщения оператором или закрытие чата.

Запрос

POST {apiUrl}/setWebhook

Тело запроса

{
"url": "http://{host_name}/chatadapter/chatapi/webhook/operatorapi/{apiKey}",
}

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

ПараметрТипОписание
apiUrlstringURL веб-сервера, на который будут направляться запросы Operator API.
urlstringВебхук, который приходит в результате установки setWebhook. В дальнейшем на него необходимо направлять события в Aimylogic.
ApiKeystringИдентификатор канала.

POST /sendText

Клиент отправил сообщение в чат с оператором.

Запрос

POST {apiUrl}/sendText

Тело запроса

{
"userId": "<userId>",
"text": "текст"
}

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

ПараметрТипОбязательныйОписание
userIdstringДаИдентификатор клиента.
textstringДаТекстовое сообщение, отправленное клиентом.

POST /sendFile

Клиент отправил файл в чат с оператором.

Запрос

POST {apiUrl}/sendFile

Тело запроса

{
"userId": "<userId>",
"url": "http://someUrl",
"fileName": "example",
"size": 1
}

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

ПараметрТипОбязательныйОписание
userIdstringДаИдентификатор клиента.
urlstringДаСсылка для скачивания файла.
fileNamestringНетИмя файла для скачивания.
sizeintegerНетРазмер файла в байтах.

POST /closeChat

Клиент закрыл чат с оператором.

Запрос

POST {apiUrl}/closeChat

Тело запроса

{
"userId": "<userId>",
"text": "Пользователь закрыл диалог"
}

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

ПараметрТипОбязательныйОписание
userIdstringДаИдентификатор клиента.
textstringДаТекстовое сообщение, отправленное при закрытии чата.

POST /selectDestination

Метод устанавливает сессию между клиентом чат-бота и выбранным оператором.

Запрос

POST {apiUrl}/selectDestination

Тело запроса

{
"userId":"<userId>",
"destinationId":"54321",
"userName":"firstName lastName",
"attributes":{
"key1":"value1",
"key2":"value2"
},
"hiddenAttributes":{
"key1":"value1",
"key2":"value2"
},
"customData":{

}
}

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

ПараметрТипОбязательныйОписание
userIdstringДаИдентификатор клиента, присвоенный в Aimylogic.
destinationIdstringДаИдентификатор оператора, присвоенный приложением оператора.
userNamestringНетИмя клиента. Если значение не передано, то оператор увидит {channel} {userId} в качестве имени.
attributesstringНетПречат поля.
Принимает JSON в виде пар {"ключ":"значение"}.
Параметры будут переданы оператору как дополнительная информация о клиенте.
hiddenAttributesstringНетПречат поля, которые не будут переданы оператору.
Формат аналогичен attributes.
customDatastringНетДополнительные данные при переводе на оператора.

GET /getDestinations

Получение доступных групп операторов для направления событий.

Запрос

GET {apiUrl}/getDestinations

Ответ

{
"destinations":[
{
"destinationId":"1",
"name":"Группа операторов 1",
"hasOnline":true
},
{
"destinationId":"2",
"name":"Группа операторов 2",
"hasOnline":false
}
]
}

Формат ответа

ПараметрТипОписание
destinationIdstringИдентификатор группы операторов.
namestringИмя группы операторов.
hasOnlinebooleanДоступность группы операторов для направления событий.

Передача событий в Aimylogic

подсказка
При запросе POST {apiUrl}/setWebhookбудет установлен вебхук, на который следует направлять события от операторов.

Формат вебхука

http://{host_name}/chatadapter/chatapi/webhook/operatorapi/{apiKey}

Запрос

POST ​/chatapi​/webhook​/operatorapi​/{apiKey}

Тело запроса

Тело запроса содержит информацию, необходимую для создания или изменения объекта. Информация должна передаваться в формате JSON.

Ниже представлены допустимые для отправки события, их структура и поля.

Развернуть
Request body: TextMessage | FileMessage | Closed

TextMessage: {
"id": "id",
"userId": "54321",
"type": "TextMessage",
"text": "text",
"employee": {
"employeeId": "id",
"firstName": "first name",
"lastName": "last name",
"avatarUrl": "http://someUrl",
},
},

FileMessage {
"id": "id",
"userId": "54321",
"type": "FileMessage",
"url": "http://someUrl",
"employee": {
"employeeId": "id",
"firstName": "first name",
"lastName": "last name",
"avatarUrl": "http://someUrl",
},
"name": "example",
"size": "2",
"comment": "file",
},

Closed {
"id": "id",
"userId": "54321",
"type": "Closed",
"employee": {
"employeeId": "id",
"firstName": "first name",
"lastName": "last name",
"avatarUrl": "http://someUrl",
},
},

SelectDestination {
"id": "id",
"userId": "54321",
"type": "SelectDestination",
"destination": {
"destinationId": "id",
"name": "name",
"hasOnline": "true",
},
}

Типы событий

СобытиеОписание
TextMessageТекстовое сообщение от оператора.
FileMessageВложенный файл от оператора.
ClosedЗакрытие обращения со стороны оператора.
SelectDestinationВыбор направления обращения.

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

ПараметрТипОбязательныйОписание
idstringДаИдентификатор сообщения.
userIdstringДаИдентификатор клиента.
typestringДаТип события.
Employee
employeeIdstringДаИдентификатор оператора.
firstNamestringДаИмя оператора.
lastNamestringДаФамилия оператора.
avatarUrlstringДаСсылка на аватар оператора.
TextMessage
textstringДаТекстовое сообщение, отправленное оператором.
FileMessage
urlstringДаСсылка для скачивания файла.
namestringДаИмя файла для скачивания.
sizeintegerДаРазмер файла в байтах.
commentstringДаКомментарий к передаваемому файлу.
SelectDestination
destinationIdstringДаИдентификатор группы операторов.
namestringДаИмя группы операторов.
hasOnlinebooleanДаДоступность группы операторов для направления событий.

Подключение канала

Авторизуйтесь в Aimylogic, перейдите в проект. Нажмите на панели управления Каналы → Перевод на оператора. Выберите канал для подключения Operator API.

Заполните поля:

  • Название — укажите название канала.
  • API URL — URL, на который будут направляться запросы Operator API.

При использовании Operator API вы можете осуществлять перевод диалога не только на конкретного оператора, но и на группу операторов. В таком случае диалог будет распределен на одного из операторов в указанной вами группе в соответствии с логикой назначения диалогов в используемой вами операторской платформе.

Чтобы добавить группу операторов, нажмите Добавить группу и заполните следующие поля:

  • Название канала — укажите произвольное название для добавляемой группы операторов.
  • Описание справочника — добавьте текстовое описание для группы операторов.
  • Ids — выберите из выпадающего списка идентификатор группы операторов, существующей на стороне операторского канала.

Вы можете добавить несколько групп аналогичным образом.

Чтобы удалить группу, воспользуйтесь иконкой в правом верхнем углу добавленной группы.

Нажмите Подключить.

Перевод на оператора

В сценарии вам нужно добавить блок Перевод на оператора на этапе, где пользователи могут позвать оператора. Например, все вопросы, на которые бот не знает пока ответа, могут вести на данный блок. Вы можете связать блок Перевод на оператора с нужными частями сценария с помощью кнопок и интентов.

Так как Aimylogic позволяет одновременно добавлять только один операторский канал, при добавлении блока Перевод на оператора созданный канал Operator API автоматически будет добавлен в блок, а вам будет необходимо только настроить параметры блока.