Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление


Информация

Вебхук приходит с 87.251.83.190 (в вайт лист лучше добавлять весь диапазон  TWIN: 87.251.83.160/27)

...

  • "event": "CALL_REDIRECTED" Хук Вебхук, с информацией о звонке, переведенном на оператора. Отправляется только тогда, когда в диалоге бота настроен перевод на оператора.
    Событие отправляется самым первым хуком, чтобы проинформировать стороннюю систему о переводе звонка в КЦ.
    Отправляется и для входящих и для исходящих звонков, если в сценарии настроен перевод на оператора. Если перевода не было или он не предусмотрен - событие отправляться не будет.

  • "event": "CALL_ENDED"  Хук Вебхук, с информацией о попытке дозвона. Отправляется всегда, по итогам завершения звонка. Отправляется и для входящих и для исходящих звонков.

  • "event": "CANDIDATE_CHANGED" Хук Вебхук, с информацией о итоге обработки кандидата. Отправляется в качестве сигнала, что данный кандидат полностью обработан системой и больше звонков по кандидату не будет.
    На него можно опираться для снятия блокировки с кандидата в CRM или дайлера. Отправляется только для исходящих звонков. Для входящих событие отправляться не будет.

...

Информация

На нашей платформе реализована система гарантированной доставки хуков. 

Система ожидает в ответ по каждому отправленному хуку 200й код. В противном случае мы будет делать повторные отправки сообщений в течение 24 часов с увеличением интервалов повторной отправке по экспоненицальной экспоненциальной формуле (чем больше попыток - тем больше будет интервал попыток).

Меж серверное взаимодействие ожидает подтверждения в получении отправленных данных.

Если вам нужен только один тип хука, вы можете отвечать 200м кодом на все остальные передачи и ничего не делать с полученными данными. Решение что обрабатывать, а что игнорировать, находится на стороне бизнес логики компании заказчика. 

...

Блок кода
languagepy
themeDJango
firstline1
linenumberstrue
{
 
    	"event":  "CALL_REDIRECTED",
    "id":  "a9f629ab-20f0-4c11-8a82-05af87e49e43",
    "redirectAdditional": null,
    "redirectAnons": null,
    "redirectDestination":  "ch",
    "redirectDestinationId":  "10103",
    "callbackData": []
}

...

Поле

Тип

Обязательно

Описание

Соответствие с полем из метода старой телефонии

eventstringда

Тип события. 

  • CALL_REDIRECTED (Вызов переведен)
-
id

string

да

Идентификатор вызова

id
redirectAdditional

string

да

Дополнительные данные, которые идут в SIP обмене

-
redirectAnons

string

да

Текст сопровождения перевода, указанный в настройках бота при переводе звонка.

-
redirectDestination

string

да

Тип перевода (настраивается в сценарии бота):

ch (канал перевода)

custom (произвольный перевод)

int (внутренний номер, вроде не используем)

-
redirectDestinationId

string

да

Значение конечного номера, для выбранного типа перевода (номер канала, номер произвольного перевода, внутренний номер)

-

|   callbackData

Object

да (может быть пустым)

Информация о кандидате, переданная в момент добавления кандидата (см. метод добавления кандидата)

-

...

Поле

Тип

Обязательно

Описание

Соответствие с полем из метода старой телефонии

eventstringда

Тип события. 

Возможные значения:

  • CALL_ENDED (Вызов завершен)
-
type

string

да

Тип звонка.

Возможные значения:

  • INCOMING (Входящий)
  • OUTGOING (Исходящий)
-
companyId

int

да

Идентификатор компании

-
botId

string

да

Идентификатор сценария

botId
id

string

да

Идентификатор вызова

id
externalId

string

да

Переданный в запросе на инициализацию идентификатор (callId)

-
taskId

string

да

Идентификатор задания на обзвон

taskId
candidateId

string

да

Идентификатор кандидата на обзвон

-
status

string

да

Статус вызова. 

Возможные значения:

  • CANCEL (Вызов отменен)
  • ANSWERED (Вызов отвечен)
  • NOANSWER (Нет ответа)
  • BUSY (Занято)
  • CONGESTION (Оператор отклонил вызов)
  • CHANUNAVAIL (Транк не доступен)
  • FAILED (Ошибка системы при обработке вызова)
  • SCHEDULED (Вызов запланирован)
  • BLACKLIST (Телефон в черном списке)
  • DIAL (Набор номера)
  • INPROGRESS (Идет диалог)
  • FZ230 (Запрет вызова по 230ФЗ)
  • INVALID (Номер не корректный)
  • UNAVAILABLE (Удаленная АТС не доступна)
  • EXPIRED (Соединение не установлено за таймаут)
status
callFrom

string

да

Вызывающий номер

-
callTo

string

да

Вызываемый номер

phone
startedAt

string

да

Дата начала вызова

startedAt
finishedAt

string

да

Дата окончания вызова

-
billedAt

string

да

Дата билинга вызова

-
variables

Object

да (может быть пустым)

Произвольный словарь типа ключ-значения, который был передан перед инициализацией вызова.

Содержит исходные переменные

-
result

Object

да

Произвольный словарь типа ключ-значения.

Результаты разговора робота

results

|    initialVariables

Object

да (может быть пустым)

Исходные переменные

-

|    markers

Array[string]

да (может быть пустым)

Маркеры

-

|    confirmation

string

да (может быть пустым)

Подтверждение

results.confirm

|    nps

string

да (может быть пустым)

NPS

results.nps

|    ключ_1

string

нет

Произвольный результат. 

Задается в блоке "Результат" с типом "Произвольный результат"

results.ключ_1
recordPath

string

да (пустой для первого хука)

Путь к аудиофайлу.

Для получения ссылки нужно добавить в начале пути 

https://minio.twin24.ai/twin-cis-production/records

recordPath
flow

Array[Object]

да

Массив фрагментов разговора

-
|    botId

string

да

Идентификатор сценария

-
|    start

string

да

Время начала части диалога

-
|    end

string

да

Время окончания части диалога

-
|    messages

Array[Object]

да

Массив сообщений по диалогу

messages
|    |    text

string

да

Текст сообщений

messages.X.text
|    |    author

string

да

Кто произнес сообщение (BOT, CLIENT)

messages.X.author
|    |    time

string

да

Время отправки сообщения

messages.X.created_at
gmtOffset

int

да

смещение в минутах от UTC часового пояса клиента

timezone
hungUpBy

string

да (пока всегда null)

Кто положил трубку (пока всегда null)

-
duration

int

да

Общая длительность разговора

duration
totalCost

float

да

Общая стоимость разговора

-
robotCallDuration

int

да

Длительность разговора робота

botDuration
robotCallTotalCost

float

да

Стоимость разговора робота со скидкой

-
mainCallCost

float

да

Стоимость разговора (транк клиента)

-
mainCallDiscount

float

да

Скидка за разговор (транк клиента)

-
mainCallDuration

int

да

Длительность разговора (транк клиента)

-
autoCallCost

float

да

Всегда равен 0-
autoCallDiscount

float

да

Всегда равен 0-
autoCallDuration

int

да

Всегда равен 0-
autoCallTotalCost

float

да

Всегда равен 0-
robotCallCost

float

да

Стоимость разговора робота-
robotCallDiscount

float

да

Скидка за разговор робота-
transferCallCost

float

да

Стоимость перевода звонка-
transferCallDiscount

float

да

Скидка за перевод звонка

-
transferCallDuration

int

да

Длительность звонка после перевода

operatorDuration
transferCallTotalCost

float

да

Стоимость звонка после перевода со скидкой

-
callbackData

Object

да (может быть пустым)

Информация о кандидате, переданная в момент добавления кандидата (см. метод добавления кандидата)

-

...

Поле

Тип

Обязательно

Описание

Соответствие с полем из метода старой телефонии

Поле

Тип

Обязательно

Описание

Соответствие с полем из метода старой телефонии

eventstringда

Тип события. 

Возможные значения:

  • CANDIDATE_CHANGED (Обновление статуса по кандидату)

-
id

string

да

Идентификатор вызова

id
clientExternalId

string

да

Переданный в запросе на инициализацию идентификатор (callId)

-
taskId

string

да

Идентификатор задания на обзвон

taskId
candidateId

string

да

Идентификатор кандидата на обзвон

-
status

string

да

Статус вызова. 

Возможные значения:

  • FINISHED (Обработка кандидата завершена, больше звонков совершено не будет)

status

|   callbackData

Object

да (может быть пустым)

Информация о кандидате, переданная в момент добавления кандидата (см. метод добавления кандидата)

-

...