Calls API
Платформа JAICP предоставляет Calls API для работы с исходящей телефонией.
Перед началом работы с Calls API необходимо:
Методы API
API предоставляет методы для следующих операций:
-
Добавление телефонных номеров с параметрами в обзвон.
POST /api/calls/campaign/{token}/addPhones
GET /api/crmCalls/campaign/{token}/addPhone
POST /api/crmCalls/campaign/{token}/addPhone
GET /api/crmCalls/campaign/{token}/test/addPhone
-
Отмена созданных заданий на обзвон.
POST /api/calls/campaign/{token}/callJob/cancel
-
Получение отчетов по ID задания на обзвон или по номеру телефона.
POST /api/calls/campaign/{token}/callJob/getReport
POST /api/calls/campaign/{token}/callAttempt/getReport
-
Получение информации об обзвоне.
GET /api/calls/campaign/{token}
GET /api/calls/campaign/{token}/status
-
Приостановление, возобновление и остановка обзвона.
POST /api/calls/campaign/{token}/control/pause
POST /api/calls/campaign/{token}/control/resume
POST /api/calls/campaign/{token}/control/stop
Параметры запросов
Обязательные параметры
В строки запросов к Calls API подставляются следующие обязательные параметры:
host_name
— имя хоста, на котором запущен обзвон.token
— уникальный токен для управления обзвоном.
Например, для https://app.jaicp.com/
строка запроса на добавление телефонных номеров может выглядеть следующим образом:
https://app.jaicp.com/api/calls/campaign/8231.7056.1b131df1/addPhones
Ключ идемпотентности
Чтобы контролировать согласованность создаваемых ресурсов, клиентские приложения могут генерировать и передавать в Calls API ключ идемпотентности.
Если же для таких запросов ключ идемпотентности не передан или отличается между запросами, запросы считаются разными, и одинаковый результат их выполнения не гарантируется.
Передача ключа идемпотентности
Метод GET
Для метода GET /addPhone
ключ идемпотентности передается в параметре запроса Idempotence-Key
:
curl 'https://app.jaicp.com/api/calls/campaign/8231.7056.1b131df1/addPhone?phone=79110000000&Idempotence-Key=d5f41bd4'
Методы POST
Все методы POST
требуют передачи ключа идемпотентности в заголовке Idempotence-Key
:
curl --request POST 'https://app.jaicp.com/api/calls/campaign/8231.7056.1b131df1/addPhones' \
--header 'Content-Type: application/json' \
--header 'Idempotence-Key: d5f41bd4' \
--data-raw '[
{
"phone": "79123456789"
}
]'
Пример использования
Передача ключа идемпотентности в запросе поможет избежать нежелательного дублирования звонков в случае технической ошибки.
Предположим, что в результате системного сбоя запрос на добавление номера в обзвон был выполнен дважды. Номер и данные, переданные в payload
, в обоих запросах одинаковы.
-
Если запросы были выполнены без ключа идемпотентности:
Второй запрос вернет ошибку. Подробнее об ограничениях на дубликаты смотрите в статье о добавлении номеров.
-
Если с запросами был передан одинаковый ключ идемпотентности:
Второй запрос выполнится успешно, но задание на обзвон не будет создано. Второй запрос вернет ID того же задания, которое ранее создал первый запрос.
Ограничения
Ограничений на формат ключа не накладывается: это может быть произвольная строка. Однако рекомендуется использовать в качестве ключа UUID, чтобы ключи были гарантированно уникальны.
Ключ идемпотентности распространяется на все проекты и обзвоны аккаунта. Для добавления одинаковых номеров телефона в разные обзвоны необходимо использовать разные ключи.