Для создания канала API в BPMSoft:
Рисунок 1 — Деталь «Каналы»
Рисунок 2 — Окно «Добавление канала API»
Для добавления этого канала введите адрес Пользовательского канала в формате «адрес_custom_channel/Home/InputJSON» (Например, «https://devcustom-customchannel.ru/Home/InputJSON»), который будет принимать ответы операторов и ботов из BPMSoft. После добавлении канала происходит отправка тестового hook на адрес, указанный в форме добавления. Используйте полученный id в запросах к API.
Таблица 1 — Описание полей тестового Hook
В базе данных коннектора появится запись добавленного 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 должно быть заполнено. Аналогично и для остальных типов.
Таблица 2 — Поля
AppId — секретный ключ. ChannelId — guid, пришедший в тестовом hook.
Таблица 3 — Описание полей
Таблица 4 — Структура класса Sender
Таблица 5 — Структура класса Message
Таблица 6 — Структура класса Attachment
Таблица 7 — Структура класса Location
Таблица 8 — Структура класса File
{ "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 — Спецификация запроса
Таблица 10 — Спецификация класса Content
Если тип сообщения файл или картинка, то ссылка на файл или картинку.
Если тип сообщения местоположение, то на объект location (Таблица 11)
Таблица 11 — Спецификация класса Location
Таблица 12 — Спецификация класса OperatorInfo
Для корректной работы необходимо возвращать 200 ОК на каждый запрос к вашему Endpoint.
В случае если в настройках канала проставлена галочка «Отправлять информацию об операторе», то при смене оператора будет приходить сообщение с типом operator_info.
{ "channel_id" : "28528776-3130-4C66-E811-08D55CEAB346", "receiver_id" : "123", "type" : "text", "content" : { "text" : "test", "buttons" : [] }, "operatorInfo": "" }
Привязка оператора к каналу