Linksys SPA9XX и DND
Как корректно обработать?
Откуда: Украина, Киев - Одесса
Сообщений: 50
|
Linksys SPA9XX и DND
Всем привет!
Такая ситуевина: Имеется парк Linksys SPA9XX под Asterisk 1.6.1.20.
И типичное поведение манагера: ушел на встречу/обед/т.п., в общем нет его временно на месте. И при уходе жмет на телефоне DND.
Известно, что Linksys при входящих вызовах на аппарат со включенным DND их отбивает с посылкой сообщения SIP 486/Busy, типа занят я, и нивалнуит:)
Но по сути, нужно было при DND давать IVR типа "на данный момент сотрудник не может ответить на Ваш звонок. Чтобы отправить ему факс - нажмите 1, чтобы связаться по мобилке - нажмите 2." Заюзаны файлики с ivrvoice.ru, спасибо litnimax'y :)
Eссно, надо было различать, действительно ли занят абонент, или на телефоне нажат DND :).
Выкрутился со счетчиками ${GROUP_COUNT()}:
[office]
exten => _9XX/_9XX,1,NoOp(Subscriber ${EXTEN} has state ${DEVICE_STATE(SIP/${EXTEN})}).
exten => _9XX/_9XX,2,Set(GROUP()=Group-${CALLERID(num)})
exten => _9XX/_9XX,3,Set(FORWARD_CONTEXT=out-${EXTEN:1})
exten => _9XX/_9XX,4,MixMonitor(/var/spool/asterisk/monitor/${UNIQUEID}.wav)
exten => _9XX/_9XX,5,Dial(SIP/${EXTEN},60,to)
exten => _9XX/_9XX,6,GotoIf($["${DIALSTATUS}" = "BUSY"]?dnd-service,${EXTEN},1)
[dnd-service]
exten => _9[0-1][0-9],1,GotoIfTime(9:00-18:30,mon-fri,*,*?11:2)
exten => _9[0-1][0-9],2,GotoIfTime(18:30-9:00,mon-fri,*,*?21:3)
exten => _9[0-1][0-9],3,GotoIfTime(*,sat-sun,*,*?21)
exten => _9[0-1][0-9],11,GotoIf($[${GROUP_COUNT(Group-${EXTEN})} > 1]?101:${EXTEN}-ivr,${EXTEN},1)
exten => _9[0-1][0-9],21,Hangup(20)
exten => _9[0-1][0-9],101,Hangup(17)
exten => _9[2-9]X,1,GotoIf($[${GROUP_COUNT(Group-${EXTEN})} > 1]?21:31)
exten => _9[2-9]X,21,Hangup(17)
exten => _9[2-9]X,31,Hangup(20)
И все как надо :) НО - если абонент просто поднял трубку для набора номера - и в это время ему придет звонок - звонящего кинет на IVR:). Ибо сессия не поднята, разговора нет, и астериск не отличит поднятую трубку от нажатого DND.
Можно ли заставить SPA9XX при поднятии трубки слать какое-нибудь NOTIFY астериску, чтобы я его там ловил и инкрементировал счетчик?
Как быть?
Правду говорить - легко и приятно. (с) Иешуа Га-Ноцри
|
Откуда: Омск
Сообщений: 478
|
Re: Linksys SPA9XX и DND
Нельзя. Единственное что могу предложить - дописать Asterisk до того чтобы он понимал эвенты посылаемые Linksys'ом при подключении услуг на самом телефоны. Эти эвенты посылают 9x2 при включении доп. опций в интерфейсе.
OpenSUSE 11.2 / Asterisk 1.6.x / Vicidial / UniMRCP
|
Откуда: SPb
Сообщений: 1307
|
Re: Linksys SPA9XX и DND
core show function DEVICE_STATE
|
Откуда: Украина, Киев - Одесса
Сообщений: 50
|
Re: Linksys SPA9XX и DND
IgorG, спасибо. Насчет эвентов - где они поподробнее описаны?
а то ловить WireShark'oм их нереально :)
zzuz, а что толку от DEVICE_STATE, в ней при DND и поднятой трубке busy будет, тут без разницы.
Правду говорить - легко и приятно. (с) Иешуа Га-Ноцри
|
Откуда: SPb
Сообщений: 1307
|
Re: Linksys SPA9XX и DND
В переменной будет значение девайса, именно то , что используется для хинтов , и именно оно используется для катомных хинтов , когда надо DND определять. Что делать с полученным значением - дело филосовское.
|
Откуда: Украина, Киев - Одесса
Сообщений: 50
|
Re: Linksys SPA9XX и DND
То же самое, как и предполагалось.
при поднятой трубке:
NoOp("SIP/9ХХ-00002846", "Subscriber 9ХХ has state INUSE") in new stack
при разговоре:
NoOp("SIP/9ХХ-00002848", "Subscriber 9ХХ has state INUSE")
Upd: Share Call Appearance в Линксисах - нужное направление для дальнейших раскопок?
Правду говорить - легко и приятно. (с) Иешуа Га-Ноцри
|
|