Asterisk Перевести вызов на следующий добавочный номер, если предыдущий номер не используется

Asterisk Перевести вызов на следующий добавочный номер, если предыдущий номер не используется

Я пытаюсь перевести вызов на следующий добавочный номер, если предыдущий используется (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)

Связанный контент