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

CHANUNAVAIL вместо BUSY

Добавлено: 19 май 2014, 13:00
tol_iwan
Запутался. Не ожидал сложности в выполняемой задаче. Полазил по темам - вроде такое есть и поведение считается нормальным. Но мне кажется, что я что-то недопонимаю.
Нужно сделать голосовую почту с двумя сообщениями - абонент занят или недоступен. Тут понятно, ставим опции b и u в VoiceMail, проверяем статус вызова после DIAL() и счастье. Как оказалось BUSY в данном случае - это когда вызываемый абонент отклонил вызов. Если же он просто разговаривает, то ${DIALSTATUS} выдает CHANUNAVAIL. Установлено для всех абонентов call-limit=1 и busylevel=1.
1. Правильно ли я понял, что такое поведение asterisk правильное и с помощью ${DIALSTATUS} я не получу информации о занятости?
2. Обошел данную проблему путем проверки состояния аппарата - DEVICE_STATE. Правильное ли решение или костыль?

Re: CHANUNAVAIL вместо BUSY

Добавлено: 20 май 2014, 08:53
virus_net
Я решал эту же проблему, но с помощью ChanIsAvail
2 AST_DEVICE IN USE - "In use"; channel is in use.
3 AST_DEVICE_BUSY - "Busy"; channel is busy.
6 AST_CAUSE_CHANNEL_UNACCEPTABLE (as cause code)

Код: Выделить всё

exten => 670, bla bla bla........
exten => 670,n,ChanIsAvail(SIP/670,s)
exten => 670,n,NoOp(=========== ChanIsAvail STATUS: ${AVAILSTATUS} ===========)
exten => 670,n,GoToIf($[${AVAILSTATUS} = 2]?670-BUSY,1)
exten => 670,n,GoToIf($[${AVAILSTATUS} = 3]?670-BUSY,1)
exten => 670,n,GoToIf($[${AVAILSTATUS} = 6]?670-BUSY,1)
exten => 670,n,Goto(670-${DIALSTATUS},1)
exten => 670-BUSY,1,bla bla bla........
exten => 670-NOANSWER,1,bla bla bla........
exten => 670-CHANUNAVAIL,1,bla bla bla........

Re: CHANUNAVAIL вместо BUSY

Добавлено: 20 май 2014, 13:08
tol_iwan
За ответ спасибо. Об этом варианте не думал.
C точки зрения алгоритма - тоже самое.
В чем разница с точки зрения данной решаемой задачи, что предпочтительней и правильней?
Статус девайса и статус канала по сути тут одинаковые будут. Только одно цифрой, а другое текстом. Пока не могу придумать ситуацию, когда у двух реализаций будут разные(по смыслу) значения.