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": 79110000000
}
]'
Пример использования
Передача ключа идемпотентности в запросе поможет избежать нежелательного дублирования звонков в случае технической ошибки.
Предположим, что в результате системного сбоя запрос на добавление номера в обзвон был выполнен дважды. Номер и данные, переданные в payload
, в обоих запросах одинаковы.
- Если запросы были выполнены без ключа идемпотентности, то в очередь обзвона добавится задание на обзвон с уникальным ID, а затем новое задание на обзвон с другим ID.
- Если с запросами был передан ключ идемпотентности, то дубликат задания на обзвон не будет создан. Второй запрос вернет ID того же задания, которое ранее создал первый запрос.
Ограничения
Ограничений на формат ключа не накладывается: это может быть произвольная строка. Однако рекомендуется использовать в качестве ключа UUID, чтобы ключи были гарантированно уникальны.
Ключ идемпотентности распространяется на все проекты и обзвоны аккаунта. Для добавления одинаковых номеров телефона в разные обзвоны необходимо использовать разные ключи.