Asterisk: res_ari.c REST application not registered for endpoint
- В журнале регистрируется:
WARNING: res_ari.c: REST application 'queue_app' not registered for endpoint. - Входящий вызов попадает в диалплан на шаг
Stasis(queue_app)и немедленно завершается с ошибкой. - В выводе CLI возвращается
Stasis application 'queue_app' not registered. - Вызывающий абонент слышит сигнал занятости или сброса вызова.
1. Проверка зарегистрированных Stasis-приложений в Asterisk
Выполните команду в CLI:
asterisk -rx "ari show apps"Если список пуст или в нем отсутствует целевое приложение, значит клиентский сервис ARI не подключен по WebSocket.
2. Проверка соответствия имени приложения в диалплане
Имя, передаваемое в функцию Stasis() в /etc/asterisk/extensions.conf, должно в точности совпадать с именем подписки в клиентском приложении (регистрозависимо):
[incoming-stasis]
exten => 100,1,NoOp(Entering ARI Stasis Flow)
same => n,Answer()
; Имя приложения должно совпадать со Stasis app
same => n,Stasis(queue_app)
same => n,Verbose(1, Stasis app ended with status: ${STASISSTATUS})
same => n,Goto(s-${STASISSTATUS},1)
exten => s-FAILED,1,Verbose(1, Fallback because ARI application is offline)
same => n,Playback(service-temporarily-unavailable)
same => n,Queue(support_backup_queue,30)
same => n,Hangup(16)3. Проверка запуска клиентского приложения (Node.js/Python/Go)
Убедитесь, что демон приложения активен и подписан на события:
systemctl status ari-smart-queue.service
journalctl -u ari-smart-queue.service -n 50 --no-pager4. Проверка прав пользователя в ari.conf
Убедитесь, что у пользователя нет ограничений read_only = yes:
[ari_user]
type = user
read_only = no
password = SuperSecurePassword123! Частые вопросы (FAQ)
Почему возникает ошибка 'REST application not registered'?
Ошибка означает, что вызов пришел на строку диалплана Stasis(app_name), но в данный момент ни один внешний WebSocket клиент не зарегистрировал приложение с этим именем через ARI API.
Как организовать Fallback в диалплане при недоступности ARI приложения?
Проверяйте переменную ${STASISSTATUS} после выполнения приложения. Если статус равен FAILED, перенаправляйте звонок в резервную очередь или на голосовую почту.
Могут ли несколько инстансов приложения подключаться к одному Stasis app?
Да, несколько WebSocket клиентов могут подключиться к одному Stasis приложению. Asterisk будет дублировать события всем подключенным клиентам.
Как перерегистрировать ARI приложение без перезапуска Asterisk?
Достаточно перезапустить клиентское приложение, слушающее WebSocket. Asterisk зарегистрирует приложение на лету при установке WebSocket сессии.