мониторинг состояний абонентов в браузере

Для начинающих.
Всем начинающим - сюда.

Модераторы: Admins, Модераторы

Ответить
Mr.Dimas
Сообщения: 7
Зарегистрирован: 23 июн 2016, 12:17

мониторинг состояний абонентов в браузере

Сообщение Mr.Dimas » 08 фев 2017, 11:40

Есть asterisk 13.1.0, на нем настроил в manager.conf отдачу событий на порт 5038
по телнету коннектится, события прилетают.

хочу теперь как то это отдавать в web браузер.
Браузер поддерживает Websocket, но не пойму как связать с отдачей тех событий с этим протоколом
Еще в системе есть commit server realplexor, но пока то же не понимаю как его можно связать

видел примеры на node.js но перейти на него нельзя

мож кто просветит, как это все связать

сейчас у меня работает по аяксу через таймер, запрашивается из командной строки asteriska состояния абонентов, каналов.
но этот вариант съедает большое кол-во ресурсов при большой нагрузке порядка 50-70 одновременных вызовов
Последний раз редактировалось Mr.Dimas 09 фев 2017, 08:36, всего редактировалось 1 раз.

Аватара пользователя
Wapo
Сообщения: 1391
Зарегистрирован: 08 май 2009, 09:47
Откуда: СПб.
Контактная информация:

Сообщение Wapo » 08 фев 2017, 13:24

Проверьте в http.conf разрешена ли работа астер-http и все пароли. а далее уж и примеры запускать-смотреть
P4 3.0 + 1Gb CentOS 5.8 Aster 11.25.1
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.

Mr.Dimas
Сообщения: 7
Зарегистрирован: 23 июн 2016, 12:17

Сообщение Mr.Dimas » 08 фев 2017, 14:28

[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8080
prefix=asterisk
enablestatic=yes
;tlsenable=yes ; enable tls - default no.
;tlsbindport=4433 ; port to use - default is 8089
;tlsbindaddr=0.0.0.0 ; address to bind to - default is bindaddr.



http show status
HTTP Server Status:
Prefix: /asterisk
Server Enabled and Bound to 0.0.0.0:8080

Enabled URI's:
/asterisk/httpstatus => Asterisk HTTP General Status
/asterisk/phoneprov/... => Asterisk HTTP Phone Provisioning Tool
/asterisk/amanager => HTML Manager Event Interface w/Digest authentication
/asterisk/arawman => Raw HTTP Manager Event Interface w/Digest authentication
/asterisk/manager => HTML Manager Event Interface
/asterisk/rawman => Raw HTTP Manager Event Interface
/asterisk/static/... => Asterisk HTTP Static Delivery
/asterisk/amxml => XML Manager Event Interface w/Digest authentication
/asterisk/mxml => XML Manager Event Interface
/asterisk/ws => Asterisk HTTP WebSocket

xelas
admin
Сообщения: 1155
Зарегистрирован: 05 мар 2007, 11:21

Сообщение xelas » 08 фев 2017, 15:01


virus_net
Сообщения: 444
Зарегистрирован: 05 окт 2014, 06:10
Откуда: Москва
Контактная информация:

Сообщение virus_net » 08 фев 2017, 17:12

Mr.Dimas писал(а):Браузер поддерживает Winsocked
Все же наверно речь о Winsock. Не рекомендую.
Все же лучше WebSocket, который уже поддерживается ведущими браузерами и далее будет развиваться.
Mr.Dimas писал(а):мож кто просветит, как это все связать
AMI <--TCP--> PHP скрипт <--Websocket--> Браузер
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.

Mr.Dimas
Сообщения: 7
Зарегистрирован: 23 июн 2016, 12:17

Сообщение Mr.Dimas » 09 фев 2017, 08:39

т.е. писать демона php, который будет слушать события AMI и отправлять в сокет

xelas
admin
Сообщения: 1155
Зарегистрирован: 05 мар 2007, 11:21

Сообщение xelas » 09 фев 2017, 08:55

Все уже написано, до вас. Используйте ARI. Я же дал вам ссылку.

Mr.Dimas
Сообщения: 7
Зарегистрирован: 23 июн 2016, 12:17

Сообщение Mr.Dimas » 09 фев 2017, 11:40

[url=http://asteriskforum.ru/viewtopic.php?p=84347#84347][img]http://asteriskforum.ru/images/quotebackarrow.gif[/img][/url] xelas @ Чт Фев 09, 2017 08:55 писал(а):Все уже написано, до вас. Используйте ARI. Я же дал вам ссылку.
нет ари у меня, и до устанавливать нельзя

xelas
admin
Сообщения: 1155
Зарегистрирован: 05 мар 2007, 11:21

Сообщение xelas » 09 фев 2017, 11:48

Я прошу прощения, ну просто любопытно. А куда делся? ARI с 12-ой версии присутствует "из коробки". Его достаточно просто "включить".

Mr.Dimas
Сообщения: 7
Зарегистрирован: 23 июн 2016, 12:17

Сообщение Mr.Dimas » 09 фев 2017, 14:11

[url=http://asteriskforum.ru/viewtopic.php?p=84350#84350][img]http://asteriskforum.ru/images/quotebackarrow.gif[/img][/url] xelas @ Чт Фев 09, 2017 11:48 писал(а):Я прошу прощения, ну просто любопытно. А куда делся? ARI с 12-ой версии присутствует "из коробки". Его достаточно просто "включить".
собирал сам, и не усмотрел что этот модуль туда не вошел
пересобрать нельзя
можно конечно модуль подсунуть хитрым образом http://uzlec.ru/kompilyaciya-i-ustanovk ... erisk.html
но, это крайний вариант.

virus_net
Сообщения: 444
Зарегистрирован: 05 окт 2014, 06:10
Откуда: Москва
Контактная информация:

Сообщение virus_net » 10 фев 2017, 07:03

xelas, с ARI и вызовом придется управлять не диалпланом, а скриптом. ARI не будет отдавать события по каналам, которые не в Stasis.
Даже с ARI писать придется в любом случае, т.к. ARI сервер, а клиента придется рисовать ручками.
Вот моя статья, а вот тут мой пример того что было реализовано в рамках этой статьи.
Mr.Dimas писал(а):демона php, который будет слушать события AMI и отправлять в сокет
Тут главное схема, а не язык программирования. Я писан на PHP, мне он нравится больше. Вы можете писать на чем нравится вам.
Последний раз редактировалось virus_net 10 фев 2017, 07:09, всего редактировалось 1 раз.
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.

xelas
admin
Сообщения: 1155
Зарегистрирован: 05 мар 2007, 11:21

Сообщение xelas » 10 фев 2017, 07:08

Вы не правы. Будет.
У меня именно так и работает. Без стазиса. Вебприложение показывает статусы, звонки, каналы. Еще раз: без Statsis.
Мы уже тут на этом форуме с кем то осбуждали как это делается. Можно поискать.

virus_net
Сообщения: 444
Зарегистрирован: 05 окт 2014, 06:10
Откуда: Москва
Контактная информация:

Сообщение virus_net » 10 фев 2017, 07:14

xelas, об этом сказано в доке:
https://wiki.asterisk.org/wiki/pages/vi ... d=29395573
Channels not in a Stasis dialplan application generally cannot be manipulated by ARI - the purpose of ARI, after all, is to build your own dialplan application, not manipulate an existing one.
Посему не поверю пока не увижу доказуху. Пруфлинк ? Пример ?
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.

xelas
admin
Сообщения: 1155
Зарегистрирован: 05 мар 2007, 11:21

Сообщение xelas » 10 фев 2017, 08:04

Вирус, ну даже в вашей выделенной цитате написано: cannot be manipulated
Да, каналом управлять без Stasis нельзя. А вот подписаться на получение статуса канала, бриджа, девайса -- без проблем. Надо только подписаться на необходимые события:
https://wiki.asterisk.org/wiki/display/ ... -subscribe

virus_net
Сообщения: 444
Зарегистрирован: 05 окт 2014, 06:10
Откуда: Москва
Контактная информация:

Сообщение virus_net » 11 фев 2017, 06:47

xelas, когда я писал статью, я пробовал и я не мог получать события по каналу если он не в stasis.
По линку. Да я читал это не раз, но:
subscribe: POST /applications/{applicationName}/subscription
Subscribe an application to a event source. Returns the state of the application after the subscriptions have changed
https://wiki.asterisk.org/wiki/display/ ... pplication
Application
Details of a Stasis application
Т.е. опять все упирается в Stasis.

Может дело в том, что я пользовал chan_sip, а не chan_pjsip. pjsip я не пробовал. У вас какой используется ?
Пример и вывод дебага WS вы можете привести
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.

xelas
admin
Сообщения: 1155
Зарегистрирован: 05 мар 2007, 11:21

Сообщение xelas » 12 фев 2017, 08:27

Я использую PJSIP.
Дебаг приведу как только доберусь до работы.
Но поверте мне на слово. Все работает :)

virus_net
Сообщения: 444
Зарегистрирован: 05 окт 2014, 06:10
Откуда: Москва
Контактная информация:

Сообщение virus_net » 13 фев 2017, 06:58

Ок, я не тороплюсь :)
"Доверяй, но проверяй" - старая школа ;)
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.

xelas
admin
Сообщения: 1155
Зарегистрирован: 05 мар 2007, 11:21

Сообщение xelas » 13 фев 2017, 08:11

Ну, собственно, каких вам логов надо?

Цитата:
[[email protected] asterisk]# grep -i stas ext*.conf
[[email protected] asterisk]#


На скриншотах -- подписка на события по девайсу, и собственно сами события. Подписаться можно и по маске.

Используемые комманды:
Код:
wscat -c 'wc://telegk.olma.ru:8088/ari/events?api_key=aritest:aritest123&app=Test'

Код:
curl -v -u aritest:aritest123 -X POST "http://telegk.olma.ru:8088/ari/applicat ... IP/1111dev"


Собственно, говоря, стазис кроме того, что позволяет управлять каналом, просто сам подписывает приложение, на получение статусов канала, в котором отработал стазис.
Но никто не мешает вам самостоятельно подписаться на евенты канала, предварительно получив его ID вот таким образом, как на скриншотах или же получив полный список каналов отдельным запросом.

И вот видео, как это работает "в быту". Вебприложение, которое получает статусы аппаратов, кто и куда звонил.
На видео звонок с номера 7691 на номер 1111.
Собственно, не знаю как еще доказать, что все работает.

https://youtu.be/jL17rp_BFgY
Вложения
Снимок экрана 2017-02-13 в 09.55.24.png
1
Снимок экрана 2017-02-13 в 09.56.01.png

virus_net
Сообщения: 444
Зарегистрирован: 05 окт 2014, 06:10
Откуда: Москва
Контактная информация:

Сообщение virus_net » 14 фев 2017, 07:27

xelas писал(а):&app=Test
Не ну чесслово, прямо разрыв шаблона для меня:
https://wiki.asterisk.org/wiki/display/ ... s+REST+API
eventWebsocket: GET /events
WebSocket connection for events.
Query parameters
app: string - (required) Applications to subscribe to.
Allows comma separated values.
И чудеса: т.е. вы получаете статусы по несуществующему Application...

Код: Выделить всё

wscat -c 'wc&#58;//telegk.olma.ru&#58;8088/ari/events?api_key=aritest&#58;aritest123&app=NewNewTest'

Код: Выделить всё

curl -v -u aritest&#58;aritest123 -X POST "http&#58;//telegk.olma.ru&#58;8088/ari/applications/NewNewTest/subscription?eventSource=endpoint&#58;PJSIP/ENDPOINTNAME"
(где ENDPOINTNAME ессно сущ.номер)
Что выдаст ?

Так же на скрине видно, что у вас 13.5.0, а когда я писал статью я использовал 13.6.0. Вы на других версиях тестили ?
xelas писал(а):И вот видео, как это работает "в быту"
Если бы при этом была бы открыта консоль F12 и вкладка Network или Console, в которой были бы видны приход событий через ws или обработка этих событий... А так это видео для домохозяек :) а не для разрабов.

Вообщем я понял, видимо мне самому придется вернуться к этой теме ещё раз, как дойдут руки. Сделал себе пометку в todo листе.
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.

xelas
admin
Сообщения: 1155
Зарегистрирован: 05 мар 2007, 11:21

Сообщение xelas » 14 фев 2017, 07:36

Видео просто как пример конечного приложения.
Система несколько шире чем представляется. У нас написана трехзвенка. Asterisk - сервер на питоне, который общается с ARI - клиент в браузере.
Сделано так, что бы не плодить приложений на каждом клиенте.
Да, версия 13.5, запланирован апдейт, но руки не дошли.

Собственно, почему вы говорите что приложения не существует? В момент открытия websocket-а оно и создается.

Код: Выделить всё

> &#91;[email protected] ~&#93;$ wscat -c 'wc&#58;//telegk.olma.ru&#58;8088/ari/events?api_key=aritest&#58;aritest123&app=NewNewTest'

connected &#40;press CTRL+C to quit&#41;
> 

Код: Выделить всё

В этот момент в астериске&#58;
&#91;Feb 14 09&#58;35&#58;15&#93;  Creating Stasis app 'NewNewTest'
&#91;Feb 14 09&#58;35&#58;15&#93;   == WebSocket connection from '10.123.123.93&#58;50576' for protocol '' accepted using version '13'
&#91;Feb 14 09&#58;35&#58;15&#93;  Activating Stasis app 'NewNewTest'
telegk1*CLI> 
Делаем подписку:

Код: Выделить всё

&#91;[email protected] ~&#93;$ curl -v -u aritest&#58;aritest123 -X POST "http&#58;//telegk.olma.ru&#58;8088/ari/applications/NewNewTest/subscription?eventSource=endpoint&#58;PJSIP/1111dev"
* About to connect&#40;&#41; to telegk.olma.ru port 8088
*   Trying 10.123.190.2... connected
* Connected to telegk.olma.ru &#40;10.123.190.2&#41; port 8088
* Server auth using Basic with user 'aritest'
> POST /ari/applications/NewNewTest/subscription?eventSource=endpoint&#58;PJSIP/1111dev HTTP/1.1
> Authorization&#58; Basic YXJpdGVzdDphcml0ZXN0MTIz
> User-Agent&#58; curl/7.15.5 &#40;x86_64-redhat-linux-gnu&#41; libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
> Host&#58; telegk.olma.ru&#58;8088
> Accept&#58; */*
> 
< HTTP/1.1 200 OK
< Server&#58; Asterisk/13.5.0
< Date&#58; Tue, 14 Feb 2017 06&#58;31&#58;49 GMT
< Cache-Control&#58; no-cache, no-store
< Content-type&#58; application/json
< Content-Length&#58; 134
&#123;
  "name"&#58; "NewNewTest",
  "channel_ids"&#58; &#91;&#93;,
  "bridge_ids"&#58; &#91;&#93;,
  "endpoint_ids"&#58; &#91;
    "PJSIP/1111dev"
  &#93;,
  "device_names"&#58; &#91;&#93;
Connection #0 to host telegk.olma.ru left intact

xelas
admin
Сообщения: 1155
Зарегистрирован: 05 мар 2007, 11:21

Сообщение xelas » 14 фев 2017, 11:41

И кстати, почему мы не используем Statis для управления каналами: не знаю, как в текущей версии, то в 13.5 если Stasis вызван в диалплане в тот момент, когда приложения не существует -- обработка диалплана прерывается. Что, как вы понимаете, совсем не хорошо.

virus_net
Сообщения: 444
Зарегистрирован: 05 окт 2014, 06:10
Откуда: Москва
Контактная информация:

Сообщение virus_net » 14 фев 2017, 14:51

xelas писал(а):Asterisk - сервер на питоне, который общается с ARI - клиент в браузере.
Оно и понятно и это именно так и рекомендуется делать, и о чем и говорит документация.
xelas писал(а):В момент открытия websocket-а оно и создается.
Да, но каналов, то в нем нет... вот в чем штука.
если Stasis вызван в диалплане в тот момент, когда приложения не существует -- обработка диалплана прерывается.
Честно не помню как было в 13.6.0 в подобной ситуации. Но что у Stasis есть:
This application will set the following channel variable upon completion: ${STASISSTATUS}
это точно. Проверить все не могу, тестовый стенд давно разобрали, а время, на сбор нового и тесты, пока, увы и ах, нет...
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.

Ответить