Обзор
Агентика сама формирует все 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:
chan_websocket).
Медиа-токен
Каждому запуску воркфлоу при создании выдается непредсказуемый медиа-токен. Он подставляется как query-параметрrt во все URL, которые Агентика передает провайдеру.
- Медиа-WebSocket смотрит в сторону провайдера и сам по себе не аутентифицирован, а идентификаторы в его пути/параметрах — последовательные целые числа. Без токена можно было бы перебором подобрать
workflow_run_idи подключиться к чужому активному звонку. - Токен сравнивается за постоянное время. Отсутствующий токен, неверный токен и запуск, не принадлежащий
workflow_idиз URL, закрывают сокет с кодом4403— неразличимо, так что зондировать нечего.
Входящие звонки
Входящие звонки не используют URL вебхуков «на каждый воркфлоу». Провайдер указывает на один диспетчер уровня организации:Локальная разработка
Для локальной разработки используйте встроенный туннель Cloudflare:Устранение неполадок
WebSocket сразу закрывается с кодом 4403
WebSocket сразу закрывается с кодом 4403
- Токен
rtотсутствует, устарел или принадлежит другому запуску. Так бывает, если URL воспроизводят вручную или копируют между запусками — токены выдаются на один запуск. Инициируйте новый звонок вместо повторного использования старого URL потока. - Убедитесь, что
workflow_idв URL совпадает с воркфлоу этого запуска.
Обрыв WebSocket-соединения
Обрыв WebSocket-соединения
- Проверьте, что заголовки обновления (upgrade) WebSocket сохраняются
- Убедитесь, что на балансировщике нагрузки/прокси нет тайм-аута
- Проверьте на предмет ограничений по памяти/CPU
Asterisk не подключается к медиа-WebSocket
Asterisk не подключается к медиа-WebSocket
- Убедитесь, что имя соединения
websocket_client.confв Asterisk совпадает сws_client_nameв конфигурации ARI Агентики - Проверьте, что домен/URL туннеля общедоступен и достижим из Asterisk
- Проверьте, что правила файрвола разрешают исходящий WebSocket-трафик от Asterisk