Страница 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