Страница 1 из 2

Dialog Info в BLF

Добавлено: 12 мар 2014, 14:06
MIKS
Добрый день!
Из всего астерисковского я более и менее разбираюсь в SIP
Ну типа транзакцию могу отличить от диалога. :oops:
Посему такой вопрос. Обьясните мне пожалуйста как работает функция presence совместно с BLF телефонов различных производителей. (точнее где надо крутить гайки :twisted: )
Я понимаю, что различные прозводители делают BLF по разному:
- кто-то подписывается на dialog
- кто-то подписывается на presence
- кто-то еще на какой либо event (знающим просьба рассказать желательно с моделями)
Задача у меня следующая:
Есть тел yealink он естественно по BLF умеет подписываться только на dialog info
Нужно гасить лампу когда астериск не сможет в очередной раз проквалифаить юзера
Уточню, что у меня стоят AsteriskNOW и FreePBX последних версий (прошлого года)
Астериск событие видит и шлет телефону NOTIFY c <state>terminated</state>\n
На BLF 0 реакции
Когда юзер поднимается астериск шлет абсолютно такой -же NOTIFY
С точки зрения телефона все ОК типа астериск ему шлет событие что юзерок не в диалоге
А хотелось бы чтобы в поле state при неквалифае стояло что-то гасящее лампочку
К слову Xlite, подписавшийся на Presence, все отображает как надо.

Re: Dialog Info в BLF

Добавлено: 12 мар 2014, 14:32
ded
Я не сильно разбираюсь, знаю, что используются хинты, в диалплане ext-local видно, и вот команда
*CLI> core show hints
возможно поможет вам составить более полное понимание механизмов BLF в Астериске. И - да, есть
*CLI> sip show subscriptions

Re: Dialog Info в BLF

Добавлено: 12 мар 2014, 14:44
SolarW
Присяду рядышком послушать ответы.
BLF на Grandstream'ах точно так же не гасят лампу когда пользователь недоступен, что было бы удобно.

Re: Dialog Info в BLF

Добавлено: 12 мар 2014, 14:45
MIKS
Спасибо за ответ но это немного не то.
Эти команды лишь показыват что астериск вроде и не причем т.к. отображение там ОК
А вот с точки зрения протокола SIP астер - вроде бы и не прав
Нужен сам механизм обработки евентов на которые есть подписка. Где он находиться/может находиться в астериске?

Re: Dialog Info в BLF

Добавлено: 13 мар 2014, 11:02
MIKS
В общем поковырял я chan.sip все в нем (((
Именно в этих строках:
case AST_EXTENSION_UNAVAILABLE:
statestring = "terminated";
local_state = NOTIFY_CLOSED;
pidfstate = "away";
pidfnote = "Unavailable";
break;
Вот эту строчку надо заменить на что-то гасящее лампу это надо эксперементировать
Например statestring = "unavailable";
Если честно я не представляю как во FreePBX или AsteriskNOW пересобрать этот канал без гимора
Есть вариант выбрасывать состояния на отдельный специально обученный сервер (где-то видел описание этого) и с телефона непосредственно забирать состояния оттуда

Re: Dialog Info в BLF

Добавлено: 13 мар 2014, 11:09
MIKS
Да и еще в chan.sip подписаться только можно на события dialog, presence и message-summary

Re: Dialog Info в BLF

Добавлено: 13 мар 2014, 11:47
ded
MIKS писал(а):Если честно я не представляю как во FreePBX или AsteriskNOW пересобрать этот канал без гимора
У нас в институте был профессор математики, к которому обращались проектные институты время от времени - по рассчётам сложных интегралов. За деньги, разумеется. Оформляли аккордно, как разовая научная работа.
К чему это я? Если не представляете как во FreePBX или AsteriskNOW пересобрать chan_sip.so - обращайтесь.

Re: Dialog Info в BLF

Добавлено: 13 мар 2014, 20:35
MIKS
Кстати, ded это действительно для меня не тривиальная задача учитывая что FreePBX с диска с дистрибутивом. Попробовал тупо астер скачать такой и собрать.. )) --- у меня пришлось еще кучу библиотек накатывать и итоговый chan.sip.so вышел раз в 10 больше чем в дистрибутиве :D

Re: Dialog Info в BLF

Добавлено: 14 мар 2014, 14:53
MIKS
:D !! :D
Вопрос решен предложенной мной же правкой chan.sip ))
Как это сделать в уже накатанной из дистрибутива системе - остается открытым
Можно смело писать в issue астериска - если кто-то там зареген в качестве "Х"перта

Re: Dialog Info в BLF

Добавлено: 14 мар 2014, 15:05
ded
Get me SSH access.
Вопрос с принятием правки в транк могут морозить, типа - не очень мотивировано.