VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Получение статуса всех extensions

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

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

wsotest.512
Сообщения: 5
Зарегистрирован: 08 сен 2016, 17:01

Получение статуса всех extensions

Сообщение 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"; } чур не предлагать :roll: Работает очень не быстро.
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: Получение статуса всех extensions

Сообщение ded »

Мы разработали вэб интерфейс для Realtime моделей на базе Drupal.
Бесплатно поделиться не сможем, много сил и трудочасов вложено, и пока без отдачи.

Скриншот прилагается.

Изображение
wsotest.512
Сообщения: 5
Зарегистрирован: 08 сен 2016, 17:01

Re: Получение статуса всех extensions

Сообщение wsotest.512 »

ded, спасибо, конечно за предложение - но, у нас в нём надобности нет
единственное что могло бы нам пригодиться - кусок кода про получение статуса всех extensions, если он увас есть ( на скриншоте статусов не видно)
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: Получение статуса всех extensions

Сообщение ded »

В отображение клиентов можно вывести любые данные (а их очень много) из таблиц. Кусок кода вас не спасёт :(
Владеете зыком запросов SQL?
Аватара пользователя
Zavr2008
Сообщения: 2215
Зарегистрирован: 27 янв 2011, 00:35
Контактная информация:

Re: Получение статуса всех extensions

Сообщение Zavr2008 »

ТС, курите тему hints, Asterisk distibuted presense итп.
Тут на форуме это всплывает временами, кроме того на AsterConf Литни показывал как это можно делать довольно просто..
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
Repz
Сообщения: 169
Зарегистрирован: 04 мар 2015, 11:35

Re: Получение статуса всех extensions

Сообщение Repz »

Присосаться к астеру через ami, парсить выхлоп и в случае нужного event обрабатывать результат.
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: Получение статуса всех extensions

Сообщение ded »

Представьте - например 10 000 пиров, скорость считывания эвентов в AMI?
Repz
Сообщения: 169
Зарегистрирован: 04 мар 2015, 11:35

Re: Получение статуса всех extensions

Сообщение Repz »

10000 не представлю, это уже не астериск а беременная лошадь))) а 300 - 700 вполне себе нормально.
wsotest.512
Сообщения: 5
Зарегистрирован: 08 сен 2016, 17:01

Re: Получение статуса всех extensions

Сообщение 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 ?
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: Получение статуса всех extensions

Сообщение 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 зараза, хотят вишь ли - статус присутствия, переписываться, всё как там.
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH