Asterisk n-way call HOWTO Chinese

下面我講一下怎樣從一個普通通話(兩方通話)發起多方通話。主要是通過 MeetMe 和 ChannelRedirect 來實現。
You need the Dahdi/Zaptel timing driver to have MeetMe working.

疑問: 在 Asterisk 1.4 版本中,我們是否需要用'ManagerRedirect'來替換 'ChannelRedirect'? bug/patch 6508?

工作原理

當你和別人通話的時候,按*0 (執行宏 nway-start)。被叫馬上被傳遞到一個空閑的會議室,而你將聽到撥號音(dialtone),等待你輸入你要邀請的電話號碼。
當被邀請方接通後,你在和這個第三方通話的過程中,可以按 ** (在features.conf可以定義)將他加入會議,或按 *# 掛掉他然後返回會議。
在會議室中其它的成員,可按 0 來邀請其他人進入會議議室 (其它步驟則與按 *0 相同)

Dialplan

Here is dialplan example:

[default]
exten => _XXX,1,Set(DYNAMIC_FEATURES=nway-start)
exten => _XXX,n,Dial(SIP/${EXTEN})

[dynamic-nway]
exten => _XXX,1,Answer
exten => _XXX,n,Set(CONFNO=${EXTEN})
exten => _XXX,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite)
exten => _XXX,n,Set(DYNAMIC_FEATURES=)
exten => _XXX,n,MeetMe(${CONFNO},pdMX)
exten => _XXX,n,Hangup

[dynamic-nway-invite]
exten => 0,1,Read(DEST,dial,,i)
exten => 0,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => 0,n,Dial(Local/${DEST}@dynamic-nway-dest,,g)
exten => 0,n,Set(DYNAMIC_FEATURES=)
exten => 0,n,Goto(dynamic-nway,${CONFNO},1)
exten => i,1,Goto(dynamic-nway,${CONFNO},1)

[dynamic-nway-dest]
exten => _XXX,1,Dial(SIP/${EXTEN})

[macro-nway-start]
exten => s,1,Set(CONFNO=${FindFreeConf()})
exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,n,Read(DEST,dial,,i)
exten => s,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => s,n,Dial(Local/${DEST}@dynamic-nway-dest,,g)
exten => s,n,Set(DYNAMIC_FEATURES=)
exten => s,n,Goto(dynamic-nway,${CONFNO},1)

[macro-nway-ok]
exten => s,1,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)

[macro-nway-notok]
exten => s,1,SoftHangup(${BRIDGEPEER})

注意:你需要用 FindFreeConf() 函數 (或者其他方式) 來獲得空閑的會議室號碼。

此外,還需要修改 features.conf,增加下面的內容:

[applicationmap]
nway-start => *0,caller,Macro,nway-start
nway-inv => **,caller,Macro,nway-ok
nway-noinv => *#,caller,Macro,nway-notok


(譯注:事實上,FindFreeConf()這個函數好像需要Trunk版本支持,需要修改一下這個例子的部分內容才能運行。另外,實際測試中我們也發現,兩個按鍵*0之間的間隔時間不能太長,最好是連續按鍵。)

See also


下面我講一下怎樣從一個普通通話(兩方通話)發起多方通話。主要是通過 MeetMe 和 ChannelRedirect 來實現。
You need the Dahdi/Zaptel timing driver to have MeetMe working.

疑問: 在 Asterisk 1.4 版本中,我們是否需要用'ManagerRedirect'來替換 'ChannelRedirect'? bug/patch 6508?

工作原理

當你和別人通話的時候,按*0 (執行宏 nway-start)。被叫馬上被傳遞到一個空閑的會議室,而你將聽到撥號音(dialtone),等待你輸入你要邀請的電話號碼。
當被邀請方接通後,你在和這個第三方通話的過程中,可以按 ** (在features.conf可以定義)將他加入會議,或按 *# 掛掉他然後返回會議。
在會議室中其它的成員,可按 0 來邀請其他人進入會議議室 (其它步驟則與按 *0 相同)

Dialplan

Here is dialplan example:

[default]
exten => _XXX,1,Set(DYNAMIC_FEATURES=nway-start)
exten => _XXX,n,Dial(SIP/${EXTEN})

[dynamic-nway]
exten => _XXX,1,Answer
exten => _XXX,n,Set(CONFNO=${EXTEN})
exten => _XXX,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite)
exten => _XXX,n,Set(DYNAMIC_FEATURES=)
exten => _XXX,n,MeetMe(${CONFNO},pdMX)
exten => _XXX,n,Hangup

[dynamic-nway-invite]
exten => 0,1,Read(DEST,dial,,i)
exten => 0,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => 0,n,Dial(Local/${DEST}@dynamic-nway-dest,,g)
exten => 0,n,Set(DYNAMIC_FEATURES=)
exten => 0,n,Goto(dynamic-nway,${CONFNO},1)
exten => i,1,Goto(dynamic-nway,${CONFNO},1)

[dynamic-nway-dest]
exten => _XXX,1,Dial(SIP/${EXTEN})

[macro-nway-start]
exten => s,1,Set(CONFNO=${FindFreeConf()})
exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,n,Read(DEST,dial,,i)
exten => s,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => s,n,Dial(Local/${DEST}@dynamic-nway-dest,,g)
exten => s,n,Set(DYNAMIC_FEATURES=)
exten => s,n,Goto(dynamic-nway,${CONFNO},1)

[macro-nway-ok]
exten => s,1,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)

[macro-nway-notok]
exten => s,1,SoftHangup(${BRIDGEPEER})

注意:你需要用 FindFreeConf() 函數 (或者其他方式) 來獲得空閑的會議室號碼。

此外,還需要修改 features.conf,增加下面的內容:

[applicationmap]
nway-start => *0,caller,Macro,nway-start
nway-inv => **,caller,Macro,nway-ok
nway-noinv => *#,caller,Macro,nway-notok


(譯注:事實上,FindFreeConf()這個函數好像需要Trunk版本支持,需要修改一下這個例子的部分內容才能運行。另外,實際測試中我們也發現,兩個按鍵*0之間的間隔時間不能太長,最好是連續按鍵。)

See also


Created by: dominic16y, Last modification: Sun 16 of Sep, 2012 (06:47 UTC)
Please update this page with new information, just login and click on the "Edit" or "Discussion" tab. Get a free login here: Register Thanks! - Find us on Google+