Прямое подключение к голосовому роботу Twin – это тип интеграции, при которой вызов попадает сразу на робота, минуя АТС Twin. Такая интеграция может быть полезна компаниям с собственной настроенной телефонией, с особой логикой и большими мощностями. Если у вас нет своей телефонии, или вы пользуетесь услугами поставщиков АТС, то такую интеграцию реализовать невозможно.

Для отправки вызова на бота выполните три шага:
Для начала работы авторизуйтесь в системе Twin и получите JWT-токен. Информация по API авторизации доступна в документации по сервису IAM.
Прогрев вызова – это уведомление системы Twin о грядущем соединении с роботом. Прогрев – это отправка HTTP-запроса с информацией о звонке или пачке звонков, которые в скором времени будут переданы на бота по протоколу SIP.
Срок жизни сессии составляет 3 минуты.
cURL запроса на прогрев вызова:
curl --location 'https://cis.twin24.ai/api/v1/calls' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--data '{
"returnAnswerAsync": false,
"calls": [
{
"clientExternalId": "CLIENT_EXTERNAL_ID",
"callId": "CLIENT_CALL_ID",
"callerId": "7**********",
"number": "7**********",
"botSettingsId": "BOT_ID",
"variables": {
"variable_name1": "variable_value1",
"variable_name2": "variable_value2"
},
"callback": [
{
"url": "URL",
"data": {
"key1": "key2"
}
}
]
}
]
}'
| Параметр | Значение |
|---|---|
| returnAnswerAsync | Режим осуществления прогрева: синхронный (false) и асинхронный (true). При синхронном прогреве ответ от сервера придет после окончания прогрева и это означает, что бот готов к приему вызова. При асинхронном режиме ответ возвращается сразу же, прогрев происходит в фоновом режиме. |
| CLIENT_EXTERNAL_ID | Идентификатор клиента в системе заказчика. По данному параметру можно получить все вызовы, связанные с клиентом из сервиса аналитики. Бизнес-смысл данного параметра – уникальность в рамках человека/лида/сделки (в зависимости от типа системы заказчика). |
| CLIENT_CALL_ID | Идентификатор вызова в системе заказчика – отражение совершаемого вызова в системе заказчика. Данный параметр возвращается в ответе на запрос. |
| callerId | Номер телефона звонящего. |
| number | Номер получателя вызова. |
| variables | Набор переменных для сценария бота. |
| botSettingsId | Идентификатор бота, который начнет общение с пользователем. |
| callback | Массив адресов, которые нужно уведомлять о результате разговора с роботом. Каждый элемент состоит из двух полей: URL и DATA. Данные, переданные в DATA, недоступны боту и отдаются в вебхуке в неизменном виде. |
Ответ на запрос возвращается в виде:
{
"CLIENT_CALL_ID1": "a3b30a28-cf89-4fe1-be2d-aabfb9d691bb",
"CLIENT_CALL_ID2": "a3b30a28-cf89-4fe1-be2d-aabfb9d691bc",
}
Значения CLIENT_CALL_ID1 берутся из поля callId элемента массива calls.
Стоит обратить внимание:
Если вместо идентификатора вы получили null, значит запрос на прогрев вызова отклонен. Откажитесь от запуска дозвона на абонента. Система не будет готова принять вызов по указанному звонку.
Если данный endpoint отвечает не 200 кодом, значит система Twin не готова принимать вызовы. Временно остановите дозвон и попробуйте через несколько минут.
После того, как клиент ответил на вызов и прогрев совершен, отправьте вызов на робота по адресу, предоставленному сотрудниками компании Twin.
Обязательными условиями для установки соединения являются проставления следующих заголовков в INVITE:
Если необходимо включить запись вызова, то дополнительно отправьте заголовок X-TWIN-EnableRecord=1
При записи на стороне Twin будет записан только участок разговора с роботом. Весь диалог до перевода на робота и после перевода с робота на оператора на записи отражен не будет.
Срок жизни сессии составляет 3 минуты. Если между запросом на прогрев сессии и физическим установлением соединения с пользователем пройдет больше времени, то такой звонок на бота будет отклонен.