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

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

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

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

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

Сообщение wsotest.512 » 09 фев 2017, 15:56

Есть 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: Работает очень не быстро.
wsotest.512
 
Сообщений: 5
Зарегистрирован: 08 сен 2016, 18:01

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

Сообщение ded » 09 фев 2017, 16:55

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

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

Изображение
ded
 
Сообщений: 15822
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение wsotest.512 » 09 фев 2017, 17:11

ded, спасибо, конечно за предложение - но, у нас в нём надобности нет
единственное что могло бы нам пригодиться - кусок кода про получение статуса всех extensions, если он увас есть ( на скриншоте статусов не видно)
wsotest.512
 
Сообщений: 5
Зарегистрирован: 08 сен 2016, 18:01

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

Сообщение ded » 09 фев 2017, 17:35

В отображение клиентов можно вывести любые данные (а их очень много) из таблиц. Кусок кода вас не спасёт :(
Владеете зыком запросов SQL?
ded
 
Сообщений: 15822
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение Zavr2008 » 09 фев 2017, 18:15

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

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

Сообщение Repz » 10 фев 2017, 15:14

Присосаться к астеру через ami, парсить выхлоп и в случае нужного event обрабатывать результат.
Repz
 
Сообщений: 169
Зарегистрирован: 04 мар 2015, 12:35

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

Сообщение ded » 10 фев 2017, 15:49

Представьте - например 10 000 пиров, скорость считывания эвентов в AMI?
ded
 
Сообщений: 15822
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение Repz » 10 фев 2017, 17:42

10000 не представлю, это уже не астериск а беременная лошадь))) а 300 - 700 вполне себе нормально.
Repz
 
Сообщений: 169
Зарегистрирован: 04 мар 2015, 12:35

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

Сообщение wsotest.512 » 15 фев 2017, 13:37

Мы решили пойти другим путём ;) - через публикацию присутствия. Пулять все изменения статуса экстеншенов в сторону 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 ?
wsotest.512
 
Сообщений: 5
Зарегистрирован: 08 сен 2016, 18:01

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

Сообщение ded » 15 фев 2017, 14:22

Смотрите: вот кусок пакета 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 зараза, хотят вишь ли - статус присутствия, переписываться, всё как там.
ded
 
Сообщений: 15822
Зарегистрирован: 26 авг 2010, 19:00

След.

Вернуться в Вопросы новичков

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

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

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