如果前一个分机正在使用(正在使用)或通话正在进行中,我会尝试将通话转接到下一个分机。我尝试使用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}
。因为接听后 - 电话将被挂断,您只需处理所有错误状态:
[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)