Совершайте исходящие звонки (API)
Запускайте исходящий звонок с ИИ из собственного кода — для опросов, повторных обращений или подтверждений.
Исходящие звонки позволяют передать ThunderPhone номер назначения и конфигурацию агента, чтобы ИИ выполнил звонок от вашего имени. Типичные сценарии:
- Подтверждение записей
- Обратные звонки для опросов
- Повторные обращения после пропущенного звонка
- Уведомления в стиле диспетчеризации
Предварительные требования
- Подключите VoIP-номер
Для исходящих звонков необходимо владеть номером
from_numberчерез VoIP-подключение. Демо-номера доступны только для входящих звонков. См. Подключение собственных номеров. - Создайте агента
Промпт для исходящих звонков обычно начинается с того, что агент представляется и сообщает цель звонка — «Здравствуйте, это Acme звонит, чтобы подтвердить вашу запись на завтра в 15:00…» Установите
outbound_speak_orderв значениеagent_first(по умолчанию). - Поддерживайте положительный баланс
Исходящие звонки возвращают
402 Payment Required, если баланс ≤$0.00. Пополните баланс черезPOST /v1/billing/top-upили включите автопополнение.
Выполните звонок с сохранённым агентом
Самый простой способ — указать агента по идентификатору:
curl -X POST https://api.thunderphone.com/v1/call \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from_number": "+15551234567",
"to_number": "+14155550199",
"agent_id": 12
}'Ответ:
{ "call_id": 987654321, "status": "initiated" }Выполните звонок со встроенной конфигурацией
Если вам нужен разовый промпт, который не стоит сохранять как агента,
передайте config. Его структура соответствует схеме ответа
вебхука call.incoming:
curl -X POST https://api.thunderphone.com/v1/call \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from_number": "+15551234567",
"to_number": "+14155550199",
"config": {
"prompt": "You are confirming Jane Doe appointment for 3pm tomorrow…",
"voice": "john",
"product": "spark"
}
}'Отслеживайте звонок
Параллельно подпишитесь на
вебхук telephony.complete —
это самый быстрый способ узнать о завершении звонка. Если вы не можете принимать входящие
вебхуки, опрашивайте GET /v1/calls/{call_id} каждые несколько секунд; запись
содержит end_reason, duration_seconds и URL записи после завершения звонка.
Режимы ошибок, которые стоит обрабатывать
| Ошибка | Решение |
|---|---|
402 Payment Required | Пополните баланс или включите автопополнение |
403 исходящие звонки заблокированы (демо-номер) | Подключите VoIP-номер |
403 исходящие звонки заблокированы (непроверенный VoIP) | Выполните POST /v1/phone-numbers/{id}/verify-voip |
404 from_number is not registered to this organization | Убедитесь, что from_number соответствует номеру телефона, которым вы владеете |
502 Bad Gateway | Временная ошибка SIP / LiveKit; повторная попытка безопасна |
Управление временем ожидания
Длительные исходящие звонки из-за медленной реакции вызываемого абонента
(деревья IVR, очереди) можно ограничить с помощью max_hold_seconds:
{
"from_number": "+15551234567",
"to_number": "+14155550199",
"agent_id": 12,
"max_hold_seconds": 120
}Агент завершает звонок, если за последние N секунд не было получено аудио от человека. Значение по умолчанию — 900 (15 минут).
Следующие шаги
Все поля запроса и коды ошибок.
Передавайте завершённые исходящие звонки в свою систему.
Автопополнение, чтобы исходящие звонки не прерывались из-за баланса.
Протестируйте исходящего агента в режиме пробного запуска перед продакшеном.