Страница 1 из 2
Получение статуса всех extensions
Добавлено: 09 фев 2017, 14:56
wsotest.512
Есть Asterisk 13.8-cert4 c Realtime Database Configuration (PostgreSQL) и пачкой extensions (PJSIP).
Встал вопрос - как быстро и эффективно извне (стороннему приложению\сервису) получить статус всех extensions (endpoints)?
Как минимум должна быть быть информация о номере extension (endpoint), его статус (Not in use, In Use, Unavailable итд). Что-то вроде выхлопа команды *CLI> pjsip show endpoints.
PS. "Костыли" вроде {for i=1..100 ; do asterisk -rx "pjsip show endpoint $i " | grep "In Use"; } чур не предлагать
Работает очень не быстро.
Re: Получение статуса всех extensions
Добавлено: 09 фев 2017, 15:55
ded
Мы разработали вэб интерфейс для Realtime моделей на базе Drupal.
Бесплатно поделиться не сможем, много сил и трудочасов вложено, и пока без отдачи.
Скриншот прилагается.
Re: Получение статуса всех extensions
Добавлено: 09 фев 2017, 16:11
wsotest.512
ded, спасибо, конечно за предложение - но, у нас в нём надобности нет
единственное что могло бы нам пригодиться - кусок кода про получение статуса всех extensions, если он увас есть ( на скриншоте статусов не видно)
Re: Получение статуса всех extensions
Добавлено: 09 фев 2017, 16:35
ded
В отображение клиентов можно вывести любые данные (а их очень много) из таблиц. Кусок кода вас не спасёт
Владеете зыком запросов SQL?
Re: Получение статуса всех extensions
Добавлено: 09 фев 2017, 17:15
Zavr2008
ТС, курите тему hints, Asterisk distibuted presense итп.
Тут на форуме это всплывает временами, кроме того на AsterConf Литни показывал как это можно делать довольно просто..
Re: Получение статуса всех extensions
Добавлено: 10 фев 2017, 14:14
Repz
Присосаться к астеру через ami, парсить выхлоп и в случае нужного event обрабатывать результат.
Re: Получение статуса всех extensions
Добавлено: 10 фев 2017, 14:49
ded
Представьте - например 10 000 пиров, скорость считывания эвентов в AMI?
Re: Получение статуса всех extensions
Добавлено: 10 фев 2017, 16:42
Repz
10000 не представлю, это уже не астериск а беременная лошадь))) а 300 - 700 вполне себе нормально.
Re: Получение статуса всех extensions
Добавлено: 15 фев 2017, 12:37
wsotest.512
Мы решили пойти другим путём
- через публикацию присутствия. Пулять все изменения статуса экстеншенов в сторону opensips (kamailio), а тот должен их ловить и складыватьв свою бд. Из которой мы и будем брать актуальное состояние.
На астере сконфгурирован внешний получатель :
pjsip.conf
Код: Выделить всё
[opensips-devicestate]
type=outbound-publish
server_uri=sip:10.10.10.10
event=asterisk-devicestate
вот что улетает в сообщении SIP PUBLISH:
Код: Выделить всё
Event: asterisk-devicestate
Expires: 3600
Max-Forwards: 70
User-Agent: Asterisk PBX certified/13.8-cert4
Content-Type: application/json
Content-Length: 105
{"state":"INVALID","type":"devicestate","device":"PJSIP/opensips","cachable":1,"eid":"00:11:22:33:44:55"}
Но весь затык как раз в opensips - он не понимает такого сообщения и в ответ отдаёт
Код: Выделить всё
SIP/2.0 489 Bad Event
Via: SIP/2.0/UDP 10.10.10.10:5060;received=10.10.10.10;rport=5060;branch=z9hG4bKPj0d0b5714-228a-4c1e-a052-fdf645c6b5
From: <sip:10.10.10.10>;tag=814fbe2d-64f6-4101-9c54-fbd152616cea
To: <sip:10.10.10.10>;tag=dcf6bbc9d72d34557cc678c8da66fe84.39b4
Call-ID: 7014e9fa-13d0-4303-827a-db0fd13b79d4
CSeq: 13093 PUBLISH
Allow-Events:
Server: OpenSIPS (2.2.1 (x86_64/linux))
Content-Length: 0
В лог самого opensips падает такое сообщение:
Код: Выделить всё
ERROR:presence:handle_publish: Missing or unsupported event header field value
ERROR:presence:handle_publish: #011event=[asterisk-devicestate]
Никто не сталкивался с таким извращением Asterisk + opensips + presence publish ?
Re: Получение статуса всех extensions
Добавлено: 15 фев 2017, 13:22
ded
Смотрите: вот кусок пакета INVITE от Астериск
Код: Выделить всё
CSeq: 102 INVITE
User-Agent: FPBX-2.10.1(11.23.1)
Date: Wed, 15 Feb 2017 10:13:32 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
в строке Allow перечислено, что он понимает. Если найдёте такую строку от OpenSIPS (2.2.1 (x86_64/linux), то там не будет PUBLISH, о чём он собственно и сообщает. Никакого извращения тут нет. Старые Астериски не понимали PUBLISH, MESSAGE, и ничего, работали без извращений. Это всё от Skype зараза, хотят вишь ли - статус присутствия, переписываться, всё как там.