Страница 1 из 2
DEVICE_STATE PJSIP
Добавлено: 21 апр 2017, 13:48
krisak
Добрый день!
Возник вопрос по поводу получения DEVICE_STATE на PJSIP.
При такой строке я получаю статус NOT_INUSE или BUSY
Код: Выделить всё
exten => s,1,Noop(STATUS - ${DEVICE_STATE(PJSIP/5002)})
Тут статус INVALID
Код: Выделить всё
exten => s,1,Noop(STATUS - ${DEVICE_STATE(PJSIP/${EXTEN})})
Вопрос в том, как на PJSIP получать статус абонента при наборе его телефона?
Re: DEVICE_STATE PJSIP
Добавлено: 21 апр 2017, 13:54
ded
До того, как набираем?
Во время того, как набираем?
После того, как набрали?
Например вставить в макрос набора macro-dialone такой шаг
ExecIf("[${DEVICE_STATE(PJSIP/${EXTEN})}" = "BUSY"]?Playback(abonent-zanyat))
или ещё такие подобные
Re: DEVICE_STATE PJSIP
Добавлено: 21 апр 2017, 14:01
krisak
После набора
macro-dialout-one-predial-hook
Есть такой вариант, но PJSIP/${EXTEN} получает INVALID, причем когда абоненты SIP/${EXTEN} , то все отрабатывает.
Код: Выделить всё
exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(PJSIP/5002)})
exten => s,n,ExecIf($["${DEVICE_STATE(PJSIP/5002)}" = "INUSE"]?Playback(abzanjat))
exten => s,n,ExecIf($["${DEVICE_STATE(PJSIP/5002)}" = "INUSE"]?Set(D_OPTIONS=Ttm(vertical)))
exten => s,n,ExecIf($["${DEVICE_STATE(PJSIP/5002)}" = "BUSY"]?Playback(abzanjat))
exten => s,n,ExecIf($["${DEVICE_STATE(PJSIP/5002)}" = "BUSY"]?Set(D_OPTIONS=Ttm(vertical)))
exten => s,n,ExecIf($["${DEVICE_STATE(PJSIP/5002)}" = "NOT_INUSE"]?Set(D_OPTIONS=Ttm(vertical)))
Re: DEVICE_STATE PJSIP
Добавлено: 21 апр 2017, 14:13
ded
То есть на выполнении этой строки
exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(PJSIP/5002)})
получает INVALID?
Используйте chan_sip и не заморачивайтесь.
Re: DEVICE_STATE PJSIP
Добавлено: 21 апр 2017, 14:19
krisak
нет, при выполнении
Код: Выделить всё
exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(PJSIP/5002)})
Как раз получает статус, а вот при выполнении
Я получаю статус Invalid
Всегда проще вернуться к другому варианту, но хочется решить проблему. Сам я не смог, по-этому решил обратиться на форум, может кто знает решение или сможет предложить свою идею.
Re: DEVICE_STATE PJSIP
Добавлено: 21 апр 2017, 14:37
Wapo
Код: Выделить всё
exten => s,1,Noop(STATUS - ${DEVICE_STATE(PJSIP/${EXTEN})})
Мне одному кажется что переменная ${EXTEN} в данной строке равна
s
Re: DEVICE_STATE PJSIP
Добавлено: 21 апр 2017, 14:37
awsswa
перед инвалид
NoOp(${EXTEN})
может у вас в ${EXTEN}) вовсе не то что вы думаете
Wapo красава - на пол секунды опередил
Re: DEVICE_STATE PJSIP
Добавлено: 21 апр 2017, 14:42
ded
Вы оба красавы.
ТС привёл пример, там у него жестко забито 5002
Код: Выделить всё
exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(PJSIP/5002)})
exten => s,n,ExecIf($["${DEVICE_STATE(PJSIP/5002)}" = "INUSE"]?Playback(abzanjat))
exten => s,n,ExecIf($["${DEVICE_STATE(PJSIP/5002)}" = "INUSE"]?Set(D_OPTIONS=Ttm(vertical)))
exten => s,n,ExecIf($["${DEVICE_STATE(PJSIP/5002)}" = "BUSY"]?Playback(abzanjat))
exten => s,n,ExecIf($["${DEVICE_STATE(PJSIP/5002)}" = "BUSY"]?Set(D_OPTIONS=Ttm(vertical)))
exten => s,n,ExecIf($["${DEVICE_STATE(PJSIP/5002)}" = "NOT_INUSE"]?Set(D_OPTIONS=Ttm(vertical)))
Уважаемый ТС! Вам надо изучить что такое ${EXTEN} в макросе. Вам надо передавать в макрос номер экстена как аргумент.
exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(PJSIP/${ARG1})})
Re: DEVICE_STATE PJSIP
Добавлено: 21 апр 2017, 15:18
ded
awsswa писал(а):
NoOp(${EXTEN})
может у вас в ${EXTEN}) вовсе не то что вы думаете
NoOp(${EXTEN}) в этом макросе будет принимать значение s, это же ясно!
Re: DEVICE_STATE PJSIP
Добавлено: 21 апр 2017, 15:27
krisak
ded писал(а):Вы оба красавы.
ТС привёл пример, там у него жестко забито 5002
Код: Выделить всё
exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(PJSIP/5002)})
exten => s,n,ExecIf($["${DEVICE_STATE(PJSIP/5002)}" = "INUSE"]?Playback(abzanjat))
exten => s,n,ExecIf($["${DEVICE_STATE(PJSIP/5002)}" = "INUSE"]?Set(D_OPTIONS=Ttm(vertical)))
exten => s,n,ExecIf($["${DEVICE_STATE(PJSIP/5002)}" = "BUSY"]?Playback(abzanjat))
exten => s,n,ExecIf($["${DEVICE_STATE(PJSIP/5002)}" = "BUSY"]?Set(D_OPTIONS=Ttm(vertical)))
exten => s,n,ExecIf($["${DEVICE_STATE(PJSIP/5002)}" = "NOT_INUSE"]?Set(D_OPTIONS=Ttm(vertical)))
Уважаемый ТС! Вам надо изучить что такое ${EXTEN} в макросе. Вам надо передавать в макрос номер экстена как аргумент.
exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(PJSIP/${ARG1})})
При ARG1 он перестал отрабатывать вообще.
Поправочка, он так же выдает INVALID