Обзор

Агентика сама формирует все URL, когда инициирует звонок (или отвечает на входящий), и передает их провайдеру. Вам не нужно составлять эти URL вручную — эта страница описывает их, чтобы вы могли отлаживать звонки, настраивать прокси и понимать, что именно доступно снаружи. Все пути ниже относятся к вашему бэкенду и находятся под префиксом /api/v1/telephony.

Провайдер Asterisk ARI

Единственный встроенный провайдер телефонии — Asterisk ARI. У него нет HTTP-вебхуков: Asterisk подключается напрямую к медиа-WebSocket Агентики, а события звонка (ответ, завершение, перевод) приходят по управляющему WebSocket ARI, а не отдельными HTTP-колбэками. Это означает, что для ARI не существует ни URL ответа, ни колбэков статуса, ни маршрута результата перевода. Аутентификация обеспечивается учетными данными ARI-соединения и медиа-токеном на медиа-WebSocket (см. ниже).

Медиа-WebSocket

Аудио в реальном времени передается по WebSocket. Asterisk ARI использует выделенный маршрут и передает параметры маршрутизации как query-параметры, поскольку Asterisk дописывает их к URL, заданному в websocket_client.conf:
Формат аудио: 8 кГц μ-law, «сырые» бинарные фреймы (chan_websocket).

Медиа-токен

Каждому запуску воркфлоу при создании выдается непредсказуемый медиа-токен. Он подставляется как query-параметр rt во все URL, которые Агентика передает провайдеру.
  • Медиа-WebSocket смотрит в сторону провайдера и сам по себе не аутентифицирован, а идентификаторы в его пути/параметрах — последовательные целые числа. Без токена можно было бы перебором подобрать workflow_run_id и подключиться к чужому активному звонку.
  • Токен сравнивается за постоянное время. Отсутствующий токен, неверный токен и запуск, не принадлежащий workflow_id из URL, закрывают сокет с кодом 4403 — неразличимо, так что зондировать нечего.

Входящие звонки

Входящие звонки не используют URL вебхуков «на каждый воркфлоу». Провайдер указывает на один диспетчер уровня организации:
Агентика определяет организацию по учетным данным аккаунта из вебхука, а агента — по назначению входящего воркфлоу для вызванного номера. См. Входящие звонки.

Локальная разработка

Для локальной разработки используйте встроенный туннель Cloudflare:
URL туннеля определяется автоматически и используется при формировании URL.

Устранение неполадок

  • Токен rt отсутствует, устарел или принадлежит другому запуску. Так бывает, если URL воспроизводят вручную или копируют между запусками — токены выдаются на один запуск. Инициируйте новый звонок вместо повторного использования старого URL потока.
  • Убедитесь, что workflow_id в URL совпадает с воркфлоу этого запуска.
  • Проверьте, что заголовки обновления (upgrade) WebSocket сохраняются
  • Убедитесь, что на балансировщике нагрузки/прокси нет тайм-аута
  • Проверьте на предмет ограничений по памяти/CPU
  • Убедитесь, что имя соединения websocket_client.conf в Asterisk совпадает с ws_client_name в конфигурации ARI Агентики
  • Проверьте, что домен/URL туннеля общедоступен и достижим из Asterisk
  • Проверьте, что правила файрвола разрешают исходящий WebSocket-трафик от Asterisk