Я пытаюсь передать вызов следующему расширению, если предыдущий использует (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
Но не было успешно. Как я могу сделать это?
Ваше решение скомпилировано, это одна из причин, по которой оно не работает. Вам лучше попробовать это, это распространенный более простой подход с использованием внутренней переменной $ {DIALSTATUS}
. Поскольку при ответе - звонок будет просто положен, вам просто нужно обработать все статусы erroneius:
[продажи]
exten => s, 1, набрать (SIP / 123)
exten => s, 2, Goto ($ {EXTEN} - $ {DIALSTATUS}, 1)
exten => s-BUSY, 1, Набрать (SIP / другой)
exten => s-CONGESTION, 1, Наберите (SIP / кто-то)
Этот сработал для меня с использованием 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)