
Я пытаюсь перевести вызов на следующий добавочный номер, если предыдущий используется (INUSE) или вызов находится в процессе выполнения. Я попытался использовать EXTENSION_STATE(extension[@context])
для поиска статуса следующее:
[sales]
exten => s,1,Dial(SIP/123)
exten => s,n,GotoIf($["${EXTENSION_STATE(123)}"="INUSE"]?passed:failed)
exten => s,n(passed),Dial(SIP/124)
exten => s,n(failed),Hangup();if other
Но не удалось. Как мне это сделать?
решение1
Ваше решение слишком скомпилировано, это, по сути, одна из причин, по которой оно не работает. Лучше попробуйте это, это обычный более простой подход с использованием внутренней переменной ${DIALSTATUS}
. Поскольку при ответе - звонок просто будет повешен, вам просто нужно обработать все erroneius статусы:
[sales] exten => s,1,Dial(SIP/123) exten => s,2,Goto(${EXTEN}-${DIALSTATUS},1) exten => s-BUSY,1,Dial(SIP/other) exten => s-CONGESTION,1,Dial(SIP/someone)
решение2
Это сработало для меня с использованием GROUP_COUNT() вместо EXTENSION_STATE:
exten => s,1,Set(GROUP()=OUTBOUND_GROUP)
exten => s,2,GotoIf($[ ${GROUP_COUNT()} > 1 ]?try1:try2)
exten => s,3(try1),Dial(SIP/124)
exten => s,4(try2),Dial(SIP/123)