• KB Home
  • API
  • API edna Chat Center для Bot Connect
  • Вебхук Message

Вебхук Message

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

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

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

ПараметрТипОписание
actionboolean (обязательно)MESSAGE
textstring (обязательно)Сообщение клиента для обработки ботом
clientIdstring (необязательно)Внешний ID клиента (только для авторизованных клиентов). Этот параметр устарел, вместо него используйте threadsClientId.
threadsClientIdLong (необязательно)Внутренний ID клиента (подходит как для авторизованных, так и для неавторизованных клиентов)
sessionIdstring (необязательно)Внутренний ID треда
questionIdnumber (необязательно)Внутренний ID сообщения клиента в edna
questionIndexnumber (необязательно)Индекс сообщения клиента в треде
channelInfoobject (обязательно)Информация о канале, в котором получено сообщение
channelTypestringТип канала (WEB, MOBILE, EMAIL, VIBER, TELEGRAM, VIBERPA, FACEBOOK, VKONTAKTE, YANDEX, WHATSAPP, APPLE_BUSINESS_CHAT)
authorizedbooleantrue — авторизован, false — не авторизован
platformstring (необязательно)Только для типа канала (channelTypeMOBILE:

iOS
Android
clientDatadictionary (необязательно)Данные клиента (подробнее в статье Кастомизация данных клиента (clientData) в содержимом вебхука).
segmentationInfomap<String, String>Дополнительные параметры для изменения сегментации (используется как в пользовательских, так и в преднастроенных сегментах). Параметр сегментации personal_manager доступен «из коробки». Если в этом параметре передан логин агента, а маршрут для сегмента с этим параметром настроен в системе, треды клиентов распределяются по соответствующему маршруту персональным менеджерам (агентам).
receivedAtstring (обязательно)Время получения сообщения, дата в формате UTC: yyyy-MM-dd’T’HH:mm:ss.SSS’Z’
attachmentsarray of object (необязательно)Поля:

url — URL файла, строка до 4000 символов
name — Имя файла, строка до 1000 символов
type — MIME-тип файла, строка до 256 символов
size — Размер файла в байтах, целое число
senderstring (обязательно)Информация об отправителе, всегда ThreadsAPI
settingsobject (необязательно)Дополнительные настройки сообщения
settings.maskedboolean (необязательно)Параметр, который указывает, замаскированы ли цифры в связанном сообщении клиента (true — замаскированы, false — не замаскированы).
metaDataobject (необязательно)Отправляется боту при включенной функциональности распознавания голосовых сообщений
metaData.speechTextbooleanРаспознанный текст голосового сообщения
metaData.scoreintegerКачество распознавания (число от 0 до 100)
metaData.resultStatusstringСтатус распознавания. Допустимые значения:

processing
success
noInput
maxSpeech
noMatch
error
payloadstring (необязательно)Код кнопки, которую нажал клиент

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
    }
}