2016/02/04

Asterisk : The Cookbook 食譜 032 - 在地通道

Q032: 我們知道可以同時撥接多個通道,可是如果想要多個通道是輪流撥接時該怎麼辦呢?

雖然同時撥接很有用,有時我們更需要輪流撥接接通其中一個通道就夠了,以免同時吵到多個好友。這個需求或許可以用傳回值來判斷處理,但是 Asterisk 提供一個更簡單的寫法,也相當有用。一樣用實例來說明:

首先我們定義一個 Context [TimeDelay] 如下,共定義三個在地通道 channel_1, channel_2, channel_3,三個在地通道等待時間是不同的,後面的也都加上了 Wait():

[TimeDelay]
  exten => channel_1,1,Verbose(2,Dialing the first channel)
    same => n,Dial(SIP/0000FFFF0001,20)
    same => n,Hangup()
  exten => channel_2,1,Verbose(2,Dialing the second channel with a delay)
    same => n,Wait(10)
    same => n,Dial(DAHDI/g0/14165551212)
  exten => channel_3,1,Verbose(2,Dialing the third channel with a delay)
    same => n,Wait(15)
    same => n,Dial(SIP/MyITSP/12565551212,15)
    same => n,Hangup()

在引用時如下,利用 Dial() 同時撥接 channel_1, channel_2, channel_3:

[LocalSets]
  exten => 107,1,Verbose(2,Dialing multiple locations with time delay)
    same => n,Dial(Local/channel_1@TimeDelay&Local/channel_2@TimeDelay
&Local/channel_3@TimeDelay,40)
    same => n,Hangup()

因為三個在地通道的逾時時間不同,後面的通道也加了 Wait(), 因此這三個的開始時間與結束時間並不相同。請自行用下圖來閱讀理解。


或是用下表來配合上面的設定來閱讀


0 意見: