Приветствую всех присутствующих!, коллеги. Проблема состоит в следующем: есть задача получать события из астериска через /ari/events. В качестве "подопытного" используется FreePBX 16 с asterisk 18 Мною были выполнены следующие настройки:
и
.
После этого ARI запросы не использующие WebSoket "заработали".
При попытке отправить запрос использующий WebSoket, ws://ipaddr:58088/asterisk/ari/events?app=hello&subscribeAll=true&api_key=login:pass в ответ получаю 404 ошибку.
В дебаге получаю следующее:
[2024-01-17 12:38:10] DEBUG[23175]: http.c:1958 httpd_helper_thread: HTTP opening session. Top level
[2024-01-17 12:38:10] DEBUG[23175]: http.c:1417 handle_uri: HTTP Request URI is /asterisk/ari/events?app=hello&subscribeAll=true&api_key=login:pass
[2024-01-17 12:38:10] DEBUG[23175]: http.c:1472 handle_uri: match request [asterisk/ari/events] with handler [httpstatus] len 10
[2024-01-17 12:38:10] DEBUG[23175]: http.c:1472 handle_uri: match request [asterisk/ari/events] with handler [ari] len 3
[2024-01-17 12:38:10] DEBUG[23175]: http.c:1472 handle_uri: match request [asterisk/ari/events] with handler [ws] len 2
[2024-01-17 12:38:10] DEBUG[23175]: http.c:1494 handle_uri: Requested URI [asterisk/ari/events] has no handler
[2024-01-17 12:38:10] DEBUG[23175]: http.c:568 ast_http_send: HTTP keeping session open. status_code:404
[2024-01-17 12:38:10] DEBUG[23175]: http.c:2015 httpd_helper_thread: HTTP closing session. Top level
Путем гугления нашел аналогичные ситуации, в случае если не все необходимые модули включены или не корректная настройка внутреннего веб сервера. Проверил модули все включено:
SAGA*CLI> module show like ari
Module Description Use Count Status Support Level
res_ari.so Asterisk RESTful Interface 10 Running core
res_ari_applications.so RESTful API module - Stasis application 0 Running core
res_ari_asterisk.so RESTful API module - Asterisk resources 0 Running core
res_ari_bridges.so RESTful API module - Bridge resources 0 Running core
res_ari_channels.so RESTful API module - Channel resources 0 Running core
res_ari_device_states.so RESTful API module - Device state resour 0 Running core
res_ari_endpoints.so RESTful API module - Endpoint resources 0 Running core
res_ari_events.so RESTful API module - WebSocket resource 0 Running core
res_ari_model.so ARI Model validators 10 Running core
res_ari_playbacks.so RESTful API module - Playback control re 0 Running core
res_ari_recordings.so RESTful API module - Recording resources 0 Running core
res_ari_sounds.so RESTful API module - Sound resources 0 Running core
12 modules loaded
Веб сервер запущен и вроде настроен правильно:
http show status
HTTP Server Status:
Prefix:
Server: Asterisk/18.20.0
Server Enabled and Bound to 0.0.0.0:8088
HTTPS Server Enabled and Bound to [::]:8089
Enabled URI's:
/httpstatus => Asterisk HTTP General Status
/ari/... => Asterisk RESTful API
/ws => Asterisk HTTP WebSocket
Была идея что не корректно составлен URL, в частности смущал ключ app=hello&subscribeAll=true, Но после изучения документации выяснил что в случае присутствия subscribeAll=true, ключ app игнорируется.
Нужна помощь, возможно кто то сталкивался с подобной проблемой.