VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

DEVICE_STATE PJSIP

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

krisak
Сообщения: 17
Зарегистрирован: 21 июл 2016, 12:31

DEVICE_STATE PJSIP

Сообщение 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 получать статус абонента при наборе его телефона?
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: DEVICE_STATE PJSIP

Сообщение ded »

До того, как набираем?
Во время того, как набираем?
После того, как набрали?

Например вставить в макрос набора macro-dialone такой шаг
ExecIf("[${DEVICE_STATE(PJSIP/${EXTEN})}" = "BUSY"]?Playback(abonent-zanyat))
или ещё такие подобные
krisak
Сообщения: 17
Зарегистрирован: 21 июл 2016, 12:31

Re: DEVICE_STATE PJSIP

Сообщение 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)))
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: DEVICE_STATE PJSIP

Сообщение ded »

То есть на выполнении этой строки
exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(PJSIP/5002)})
получает INVALID?

Используйте chan_sip и не заморачивайтесь.
krisak
Сообщения: 17
Зарегистрирован: 21 июл 2016, 12:31

Re: DEVICE_STATE PJSIP

Сообщение krisak »

нет, при выполнении

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

exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(PJSIP/5002)})
Как раз получает статус, а вот при выполнении

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

(PJSIP/${EXTEN})}
Я получаю статус Invalid

Всегда проще вернуться к другому варианту, но хочется решить проблему. Сам я не смог, по-этому решил обратиться на форум, может кто знает решение или сможет предложить свою идею.
Аватара пользователя
Wapo
Сообщения: 795
Зарегистрирован: 02 мар 2011, 17:53

Re: DEVICE_STATE PJSIP

Сообщение Wapo »

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

exten => s,1,Noop(STATUS - ${DEVICE_STATE(PJSIP/${EXTEN})})
Мне одному кажется что переменная ${EXTEN} в данной строке равна s
awsswa
Сообщения: 2390
Зарегистрирован: 09 июн 2012, 10:52
Откуда: Россия, Пермь skype: yarick_perm

Re: DEVICE_STATE PJSIP

Сообщение awsswa »

перед инвалид

NoOp(${EXTEN})

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

Wapo красава - на пол секунды опередил
платный суппорт по мере возможностей
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: DEVICE_STATE PJSIP

Сообщение 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})})
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: DEVICE_STATE PJSIP

Сообщение ded »

awsswa писал(а): NoOp(${EXTEN})

может у вас в ${EXTEN}) вовсе не то что вы думаете
NoOp(${EXTEN}) в этом макросе будет принимать значение s, это же ясно!
krisak
Сообщения: 17
Зарегистрирован: 21 июл 2016, 12:31

Re: DEVICE_STATE PJSIP

Сообщение 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
Последний раз редактировалось krisak 21 апр 2017, 15:32, всего редактировалось 1 раз.
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH