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

DEVICE_STATE PJSIP

СообщениеДобавлено: 21 апр 2017, 14: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, 14:54
ded
До того, как набираем?
Во время того, как набираем?
После того, как набрали?

Например вставить в макрос набора macro-dialone такой шаг
ExecIf("[${DEVICE_STATE(PJSIP/${EXTEN})}" = "BUSY"]?Playback(abonent-zanyat))
или ещё такие подобные

Re: DEVICE_STATE PJSIP

СообщениеДобавлено: 21 апр 2017, 15: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, 15:13
ded
То есть на выполнении этой строки
exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(PJSIP/5002)})
получает INVALID?

Используйте chan_sip и не заморачивайтесь.

Re: DEVICE_STATE PJSIP

СообщениеДобавлено: 21 апр 2017, 15:19
krisak
нет, при выполнении
Код: выделить все
exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(PJSIP/5002)})

Как раз получает статус, а вот при выполнении
Код: выделить все
(PJSIP/${EXTEN})}

Я получаю статус Invalid

Всегда проще вернуться к другому варианту, но хочется решить проблему. Сам я не смог, по-этому решил обратиться на форум, может кто знает решение или сможет предложить свою идею.

Re: DEVICE_STATE PJSIP

СообщениеДобавлено: 21 апр 2017, 15:37
Wapo
Код: выделить все
exten => s,1,Noop(STATUS - ${DEVICE_STATE(PJSIP/${EXTEN})})


Мне одному кажется что переменная ${EXTEN} в данной строке равна s

Re: DEVICE_STATE PJSIP

СообщениеДобавлено: 21 апр 2017, 15:37
awsswa
перед инвалид

NoOp(${EXTEN})

может у вас в ${EXTEN}) вовсе не то что вы думаете

Wapo красава - на пол секунды опередил

Re: DEVICE_STATE PJSIP

СообщениеДобавлено: 21 апр 2017, 15: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, 16:18
ded
awsswa писал(а):NoOp(${EXTEN})

может у вас в ${EXTEN}) вовсе не то что вы думаете
NoOp(${EXTEN}) в этом макросе будет принимать значение s, это же ясно!

Re: DEVICE_STATE PJSIP

СообщениеДобавлено: 21 апр 2017, 16: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