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

DEVICE_STATE PJSIP

Проблемы и их решения Asterisk как такового

Модератор: april22

DEVICE_STATE PJSIP

Сообщение krisak » 21 апр 2017, 14:48

Добрый день!

Возник вопрос по поводу получения 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 получать статус абонента при наборе его телефона?
krisak
 
Сообщений: 16
Зарегистрирован: 21 июл 2016, 13:31

Re: DEVICE_STATE PJSIP

Сообщение ded » 21 апр 2017, 14:54

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

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

Re: DEVICE_STATE PJSIP

Сообщение krisak » 21 апр 2017, 15:01

После набора

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)))
krisak
 
Сообщений: 16
Зарегистрирован: 21 июл 2016, 13:31

Re: DEVICE_STATE PJSIP

Сообщение ded » 21 апр 2017, 15:13

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

Используйте chan_sip и не заморачивайтесь.
ded
 
Сообщений: 12292
Зарегистрирован: 26 авг 2010, 19:00

Re: DEVICE_STATE PJSIP

Сообщение krisak » 21 апр 2017, 15:19

нет, при выполнении
Код: выделить все
exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(PJSIP/5002)})

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

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

Всегда проще вернуться к другому варианту, но хочется решить проблему. Сам я не смог, по-этому решил обратиться на форум, может кто знает решение или сможет предложить свою идею.
krisak
 
Сообщений: 16
Зарегистрирован: 21 июл 2016, 13:31

Re: DEVICE_STATE PJSIP

Сообщение Wapo » 21 апр 2017, 15:37

Код: выделить все
exten => s,1,Noop(STATUS - ${DEVICE_STATE(PJSIP/${EXTEN})})


Мне одному кажется что переменная ${EXTEN} в данной строке равна s
Аватар пользователя
Wapo
 
Сообщений: 596
Зарегистрирован: 02 мар 2011, 18:53

Re: DEVICE_STATE PJSIP

Сообщение awsswa » 21 апр 2017, 15:37

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

NoOp(${EXTEN})

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

Wapo красава - на пол секунды опередил
платный суппорт по мере возможностей
awsswa
 
Сообщений: 1994
Зарегистрирован: 09 июн 2012, 10:52
Откуда: Россия, Пермь skype: yarick_perm

Re: DEVICE_STATE PJSIP

Сообщение ded » 21 апр 2017, 15:42

Вы оба красавы.
ТС привёл пример, там у него жестко забито 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
 
Сообщений: 12292
Зарегистрирован: 26 авг 2010, 19:00

Re: DEVICE_STATE PJSIP

Сообщение ded » 21 апр 2017, 16:18

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

может у вас в ${EXTEN}) вовсе не то что вы думаете
NoOp(${EXTEN}) в этом макросе будет принимать значение s, это же ясно!
ded
 
Сообщений: 12292
Зарегистрирован: 26 авг 2010, 19:00

Re: DEVICE_STATE PJSIP

Сообщение krisak » 21 апр 2017, 16:27

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, 16:32, всего редактировалось 1 раз.
krisak
 
Сообщений: 16
Зарегистрирован: 21 июл 2016, 13:31

След.

Вернуться в Конфигурация и настройка Asterisk

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

© 2008 — 2017 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH