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

Вебхук Message

Для синхронных ответов требуется тело ответа, а также должен возвращаться статус 200 (OK); для асинхронных ответов требуется статус 202 (Accepted).

Если от клиента приходит несколько сообщений одновременно в момент вызова вебхука, edna может отправить их как отдельные сообщения или как одно, включающее в себе тексты всех сообщений. По умолчанию сообщения отправляются по отдельности. Это поведение управляется настройкой bot.message.concat.

Поля тела запроса
ПолеТипОписание

action

string (обязательно)

MESSAGE

text

string (обязательно)

Сообщение клиента для обработки ботом

clientId

string (необязательно)

Внешний ID клиента (только для авторизованных клиентов). Этот параметр устарел, вместо него используйте threadsClientId.

threadsClientId

long (необязательно)

Внутренний ID клиента (подходит как для авторизованных, так и для неавторизованных клиентов)

sessionId

string (необязательно)

Внутренний ID треда

questionId

number (необязательно)

Внутренний ID сообщения клиента в edna

questionIndex

number (необязательно)

Индекс сообщения клиента в треде

channelInfo

object (обязательно)

Информация о канале, в котором получено сообщение

channelType

string

Тип канала

authorized

boolean

true - авторизован, false - не авторизован

platform

string (необязательно)

Только для типа канала (channelType) MOBILE: iOS или Android:

clientData

dictionary (необязательно)

Данные клиента

segmentationInfo

map<String, String>

Дополнительные параметры для изменения сегментации (используется как в пользовательских, так и в преднастроенных сегментах). Параметр сегментации personal_manager доступен "из коробки". Если в этом параметре передан логин агента, а маршрут для сегмента с этим параметром настроен в системе, треды клиентов распределяются по соответствующему маршруту персональным менеджерам (агентам).

receivedAt

string (обязательно)

Время получения сообщения, дата в формате UTC: yyyy-MM-dd’T’HH:mm:ss.SSS’Z'

attachments

array of object (необязательно)

Поля
  • url - URL файла, строка до 4000 символов

  • name - Имя файла, строка до 1000 символов

  • type - MIME-тип файла, строка до 256 символов

  • size - Размер файла в байтах, целое число

sender

string (обязательно)

Информация об отправителе, всегда ThreadsAPI

settings

Object (необязательно)

Дополнительные настройки сообщения

settings.blockInput

boolean (необязательно)

Параметр, который указывает, заблокировано ли поле ввода сообщения (true - заблокировано, false - не заблокировано). Работает только для быстрых ответов.

settings.masked

boolean (необязательно)

Параметр, который указывает, замаскированы ли цифры в связанном сообщении клиента (true - замаскированы, false - не замаскированы).

metaData

Object (необязательно)

Отправляется боту при включенной функциональности распознавания голосовых сообщений

metaData.speechText

boolean

Распознанный текст голосового сообщения

metaData.score

Integer

Качество распознавания (число от 0 до 100)

metaData.resultStatus

String

Статус распознавания. Допустимые значения: processing, success, noInput, maxSpeech, noMatch, error

payload

String (необязательно)

В этом поле передается код кнопки, которая была нажата, или ID элемента ListPicker, который был выбран клиентом

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


POST <url for webhook message> HTTP/1.1
Content-Type: application/json

{
"action":"MESSAGE",
"threadsClientId":1,
"sessionId":"1",
"questionId":43,
"questionIndex":null,
"receivedAt":"2018-11-13T13:13:11.876Z",
"text":"Message",
"channelInfo":{
"channelType":"MOBILE",
"authorized":true
,
"platform":"Android",
"attachments":[
{
"url":"hhtp://...",
"name":"test.jpg",
"type":"image/jpeg",
"size":256

],
"clientData":{
"phone":"79000000000"
,
"sender":"ThreadsAPI"

Пример успешного HTTP ответа

Для синхронных ответов ожидается текст сообщения и статус 200 (OK); для асинхронных ответов ожидается статус 202 (Accepted).


{
"action":"MESSAGE",
"threadsClientId":1,
"sessionId":"1",
"questionId":43,
"questionIndex":null,
"receivedAt":"2018-11-13T13:13:11.756Z",
"text":"Message",
"segmentationInfo": {
"key":"value"
,
"attachments":[
{
"url":"https://...",
"name":"test.jpg",
"type":"image/jpeg",
"size":256

],
"sender":"ThreadsAPI",
"settings" : {
"masked" : true