Канал Пользовательский канал
Настройка Endpoint и добавление канала API
Для создания канала API в BPMSoft:
- Перейдите в раздел «Настройка чатов BPMSoft OCC» в «Дизайнере системы».
-
Нажмите
на детали «Каналы» страницы раздела «Настройка чатов BPMSoft OCC», чтобы добавить новый канал.
Рисунок 1 — Деталь «Каналы»
- В открывшемся окне выберите «Пользовательский канал» и заполните поля.
Рисунок 2 — Окно «Добавление канала API»
Для добавления этого канала введите адрес Пользовательского канала в формате «адрес_custom_channel/Home/InputJSON» (Например, «https://devcustom-customchannel.ru/Home/InputJSON»), который будет принимать ответы операторов и ботов из BPMSoft. После добавлении канала происходит отправка тестового hook на адрес, указанный в форме добавления. Используйте полученный id в запросах к API.
Формат тестового Hook
Таблица 1 — Описание полей тестового Hook
Name | Description | Data type | Comments |
id | Идентификатор канала в BPMSoft | Guid | — |
В базе данных коннектора появится запись добавленного Custom Channel. Выполните скрипт для просмотра AppId и ChannelId (Id из таблицы Channel) из таблицы:
select * from Channel as c where c."Type" = 'Custom'; 996902C5-CA62-4C8D-8CBE-C7AED80C2893 - AppId из SQL dev3 [BPMSoftOCC-dev-connector].[dbo].[Channel] EB996270-D3DE-4928-BEB3-5B8EFAC213B2 - Id из SQL dev3 [BPMSoftOCC-file-share].[dbo].[Channel]
Рисунок 3 — Результат выполнения скрипта
На среде, где настроен Custom channel (например, «https://devcustom-customchannel.ru/»), необходимо поменять в C:\папка_приложения_CustomChannel\appsettings.json строку подключения к коннектору:
connectorUrl(адрес_коннектора)/api/v1.0/sendmessage/AppId/channelId
"DefaultURI": "https://devcustom-customchannel.ru/api/v1.0/sendmessage/996902C5-CA62-4C8D-8CBE-C7AED80C2893/EB99627...;,
Рисунок 4 — Замена строки
После завершения настройки прикрепите к добавленному каналу оператора и нажмите кнопку «Актуализировать». Подробнее: Привязка оператора к каналу
Рисунок 5 — Добавление оператора
Отправка сообщения
Для того чтобы сервис мог отправлять сообщения в BPMSoft, необходимо наделить сервис функцией отправки этих сообщений в JSON-формате.
В качестве хоста указывается адрес коннектора, который используется при общении из BPMSoft. Это значение находится в системной настройке BPMSoftOCCOperatoHost.
Параметр type определяет тип отправляемого сообщения: text, image, file, location. Если type == 'text', то поле text должно быть заполнено. Аналогично и для остальных типов.
SendMessage
Таблица 2 — Поля
Описание | Интерфейс для отправки сообщения в BPMSoft |
Путь | {HOST}/api/v1.0/sendmessage/{Appid}/{ChannelId} |
Тип метода | POST |
AppId — секретный ключ.
ChannelId — guid, пришедший в тестовом hook.
Спецификация запроса
Таблица 3 — Описание полей
Name | Description | Data type | Required | Comments |
sender | Отправитель | Sender | yes | — |
message | Сообщение | Messagee | yes | — |
clientId | Идентификатор пользователя | string | no | — |
Структура класса Sender
Таблица 4 — Структура класса Sender
Name | Description | Data type | Required | Comments |
id | Идентификатор пользователя (сеанса) | string | yes | — |
name | Имя пользователя | string | yes | — |
avatar | Ссылка на аватар пользователя | string | no | — |
Структура класса Message
Таблица 5 — Структура класса Message
Name | Description | Data type | Required | Comments |
type | Тип отправляемого сообщения | string | yes | Возможные значения: text, image, file, location |
text | Текст сообщения | string | — | — |
attachment | Приложение | Attachment | — | — |
Структура класса Attachment
Таблица 6 — Структура класса Attachment
Name | Description | Data type | Required | Comments |
image | Ссылка на изображение | string | — | — |
location | Местоположение | Location | — | — |
file | Файл | File | — | — |
Структура класса Location
Таблица 7 — Структура класса Location
Name | Description | Data type | Required | Comments |
lat | Широта | string | — | — |
lng | Долгота | string | — | — |
Структура класса File
Таблица 8 — Структура класса File
Name | Description | Data type | Required | Comments |
name | Название файла | string | — | — |
size | Размер файла | long | — | В байтах. Пока не используется |
url | Ссылка на файл | string | — | — |
{ "sender": { "id": "4", "name": "Test User", "avatar": "{+}https://media.fox9.com/media.fox9.com/photo/2018/03/02/5%20P%20MISSING%20DOG%20FOUND%20DEAD_00.00.06.04_1520042792006.png_5029487_ver1.0_640_360.jpg+" }, "message": { "type": "text", "text": "Test text" } } Если запрос прошел успешно, то возвращается 200 ОК с телом, например, { "ok": true } Если прошел с ошибками, то в теле ответа будет указан текст ошибки, например, { "ok": false, "error": "hook.message.attachment.image can't be empty" }
Получение сообщений
Для получения сообщений из BPMSoft необходимо реализовать сервис, принимающий POST запросы. В теле POST запроса — JSON с информацией о полученном сообщении.
На данный момент поддерживается несколько типов сообщений: с кнопками, без кнопок, файл, картинка, местоположение. Тип указан в параметре type. В случае, если тип сообщения — кнопочное, оно может также содержать текст, который идет перед кнопками.
Спецификация запроса
Таблица 9 — Спецификация запроса
Name | Description | Data type | Comments |
channel_id | Идентификатор канала в BPMSoft | string | — |
receiver_id | Идентификатор пользователя, который получает сообщение в канале | string | — |
type | Тип присылаемого сообщения | string | text, buttons, file, image, location, operator_info |
content | Присланные кнопки | Content | — |
Структура класса Content
Таблица 10 — Спецификация класса Content
Name | Description | Data type | Comments |
text | Текст, идущий перед кнопками | string |
Если тип сообщения файл или картинка, то ссылка на файл или картинку. Если тип сообщения местоположение, то на объект location (Таблица 11) |
buttons | Тексты кнопок сообщений | string[] | Массив кнопок. Сообщение может содержать несколько кнопок |
operatorInfo | Информация об операторе | OperatorInfo | Если тип запроса operator_info |
Структура класса Location
Таблица 11 — Спецификация класса Location
Name | Description | Data type | Comments |
lat | Latitude | string | — |
lng | Longtitude | string | — |
Структура класса OperatorInfo
Таблица 12 — Спецификация класса OperatorInfo
Name | Description | Data type | Comments |
OperatorPhotoLink | Ссылка на фото оператора | string | — |
OperatorName | Имя оператора | string | — |
Для корректной работы необходимо возвращать 200 ОК на каждый запрос к вашему Endpoint.
В случае если в настройках канала проставлена галочка «Отправлять информацию об операторе», то при смене оператора будет приходить сообщение с типом operator_info.
{ "channel_id" : "28528776-3130-4C66-E811-08D55CEAB346", "receiver_id" : "123", "type" : "text", "content" : { "text" : "test", "buttons" : [] }, "operatorInfo": "" }