ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Настройка ARI для получения событий через WebSoket

WEB GUI и не только WEB

Модераторы: stas2k, april22, Zavr2008

Настройка ARI для получения событий через WebSoket

Сообщение AlexPeresvet » 22 янв 2024, 11:10

Приветствую вас, коллеги, коллеги. Проблема состоит в следующем: есть задача получать события из астериска через /ari/events. В качестве "подопытного" используется FreePBX 16 с asterisk 18 Мною были выполнены следующие настройки:
Изображение
и
Изображение
.
После этого ARI запросы не использующие WebSoket "заработали".
Изображение

При попытке отправить запрос использующий WebSoket, ws://ipaddr:58088/asterisk/ari/events?a ... 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 игнорируется.

Нужна помощь, возможно кто то сталкивался с подобной проблемой.
Вложения
2024_01_22_09_40.png
image_2024_01_18T12_18_03_035Z.png
image_2024_01_18T12_18_55_094Z.png
AlexPeresvet
 
Сообщений: 15
Зарегистрирован: 07 июн 2019, 16:49

Re: Настройка ARI для получения событий через WebSoket

Сообщение Zavr2008 » 22 янв 2024, 12:36

https://asterisk-pbx.ru/wiki/asterisk/ari/ari_start
*CLI> module show like res_http_websocket.so
Module Description Use Count Status
res_http_websocket.so HTTP WebSocket Support 2 Running
1 modules loaded
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
Аватар пользователя
Zavr2008
 
Сообщений: 2174
Зарегистрирован: 27 янв 2011, 01:35

Re: Настройка ARI для получения событий через WebSoket

Сообщение AlexPeresvet » 22 янв 2024, 12:59

Модуль работает:
SAGA*CLI> module show like res_http
Module Description Use Count Status Support Level
res_http_media_cache.so HTTP Media Cache Backend 1 Running core
res_http_websocket.so HTTP WebSocket Support 5 Running core
2 modules loaded
AlexPeresvet
 
Сообщений: 15
Зарегистрирован: 07 июн 2019, 16:49

Re: Настройка ARI для получения событий через WebSoket

Сообщение Zavr2008 » 22 янв 2024, 13:58

дальше через wscat как в статье.
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
Аватар пользователя
Zavr2008
 
Сообщений: 2174
Зарегистрирован: 27 янв 2011, 01:35

Re: Настройка ARI для получения событий через WebSoket

Сообщение AlexPeresvet » 22 янв 2024, 15:06

Я изначально тестировал с включенным модулем res_http_websocket.so. С wscat результат тот же.
> [root@SAGA ~]wscat -c "ws:////127.0.0.1:8088/asterisk/ari/events?api_key=login:pass&subscribeAll=true"
error: Unexpected server response: 404
> [root@SAGA ~]# wscat -c "ws:////127.0.0.1:8088/asterisk/ari/events?api_key=login:pass&app=qwer"
error: Unexpected server response: 404
> [root@SAGA ~]# wscat -c "ws:////127.0.0.1:8088/asterisk/ari/events?api_key=login:pass&app=qwer&subscribeAll=true"
error: Unexpected server response: 404

"qwer " - зарегистрирован в диал плане.

[from-internal-additional-custom]
exten => 1,1,NoOp()
same => n,Answer()
same => n,Stasis(qwer)
same => n,Hangup()
AlexPeresvet
 
Сообщений: 15
Зарегистрирован: 07 июн 2019, 16:49

Re: Настройка ARI для получения событий через WebSoket

Сообщение Zavr2008 » 22 янв 2024, 16:20

ari show status что говорит?

Также может поможет вот это: https://github.com/asterisk/ari-py/issues/29
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
Аватар пользователя
Zavr2008
 
Сообщений: 2174
Зарегистрирован: 27 янв 2011, 01:35

Re: Настройка ARI для получения событий через WebSoket

Сообщение AlexPeresvet » 22 янв 2024, 17:46

SAGA*CLI> ari show status
ARI Status:
Enabled: Yes
Output format: pretty
Auth realm: Asterisk REST Interface
Allowed Origins: localhost:8088
User count: 1


Статью посмотрю, спасибо
AlexPeresvet
 
Сообщений: 15
Зарегистрирован: 07 июн 2019, 16:49

Re: Настройка ARI для получения событий через WebSoket

Сообщение Zavr2008 » 23 янв 2024, 13:15

Код: выделить все
require => res_http_websocket.so ; HTTP WebSocket Support, needed for res_ari_events
require => res_ari.so ; Asterisk RESTful Interface
require => res_ari_applications
require => res_ari_asterisk.so
require => res_ari_bridges
require => res_ari_channels.so
require => res_ari_device_states.so ; RESTful API module - Device state resources
require => res_ari_endpoints.so
require => res_ari_events.so
require => res_ari_model.so ; ARI Model validators
require => res_ari_playbacks.so
require => res_ari_recordings.so
require => res_ari_sounds
require => res_stasis.so ; Stasis application support
require => app_stasis.so ; Stasis dialplan application
require => res_stasis_answer.so
require => res_stasis_device_state.so ; Stasis application device state support
require => res_stasis_playback.so ; Stasis application playback support
require => res_stasis_recording.so ; Stasis application recording support
require => res_stasis_snoop.so ; Stasis application snoop support
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
Аватар пользователя
Zavr2008
 
Сообщений: 2174
Зарегистрирован: 27 янв 2011, 01:35

Re: Настройка ARI для получения событий через WebSoket

Сообщение AlexPeresvet » 23 янв 2024, 21:35

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
SAGA*CLI> module show like stasis
Module Description Use Count Status Support Level
app_stasis.so Stasis dialplan application 0 Running core
res_stasis.so Stasis application support 17 Running core
res_stasis_answer.so Stasis application answer support 1 Running core
res_stasis_device_state.so Stasis application device state support 1 Running core
res_stasis_playback.so Stasis application playback support 3 Running core
res_stasis_recording.so Stasis application recording support 4 Running core
res_stasis_snoop.so Stasis application snoop support 1 Running core
7 modules loaded
SAGA*CLI> module show like websocket
Module Description Use Count Status Support Level
res_http_websocket.so HTTP WebSocket Support 5 Running core
res_pjsip_transport_websocket.so PJSIP WebSocket Transport Support 0 Running core
2 modules loaded

Проверил все модули работают.
AlexPeresvet
 
Сообщений: 15
Зарегистрирован: 07 июн 2019, 16:49


Вернуться в Графические интерфейсы Астериск

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH