Ubuntu

如果上一個 INUSE,Asterisk 將呼叫轉移到下一個分機

  • September 25, 2015

如果上一個正在使用(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

但是沒有成功。我怎樣才能做到這一點?

這個使用 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)

您的解決方案很複雜,這基本上是它不起作用的原因之一。你應該試試這個,這是一種使用內部變數的常見更簡單的方法${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)

引用自:https://serverfault.com/questions/724640