Asterisk: Anruf an nächste Nebenstelle weiterleiten, falls vorherige INUSE

Asterisk: Anruf an nächste Nebenstelle weiterleiten, falls vorherige INUSE

Ich versuche, den Anruf an die nächste Nebenstelle weiterzuleiten, wenn die vorherige verwendet wird (INUSE) oder ein Anruf läuft. Ich habe versucht, EXTENSION_STATE(extension[@context])den Status wie folgt zu ermitteln:

[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

Hat aber nicht geklappt. Wie kann ich das machen?

Antwort1

Ihre Lösung ist viel zu kompliziert, das ist im Grunde einer der Gründe, warum sie nicht funktioniert. Sie sollten lieber Folgendes versuchen, das ist ein gängiger, einfacherer Ansatz mit internen Variablen ${DIALSTATUS}. Da der Anruf bei der Beantwortung einfach aufgelegt wird, müssen Sie nur alle fehlerhaften Status behandeln:

[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)

Antwort2

Das hier hat bei mir funktioniert, indem ich GROUP_COUNT() anstelle von EXTENSION_STATE verwendet habe:

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)

verwandte Informationen