Asterisk命令MeetMe詳解
2010/02/02
MeetMe
概要
MeetMe 會(huì )議橋
描述
語(yǔ)法:MeetMe([confno][,[options][,pin]])
用途: 讓用戶(hù)進(jìn)入一個(gè)指定的MeetMe會(huì )議。如果省略了會(huì )議編號,系統會(huì )提示用戶(hù)選擇一個(gè)。(注意:MeetMe會(huì )議需要一個(gè)Zaptel時(shí)鐘才能工作,你可以不裝任何板卡,但是你需要安裝Zaptel)
參數:options可以為空,也可以設置一個(gè)或者多個(gè)參數,參數有如下一些:
- '1' — 當會(huì )議室的第一個(gè)成員進(jìn)入會(huì )議時(shí),不向用戶(hù)提示"you are currently the only person in
this conference您是當前會(huì )議室唯一的成員" (Asterisk 1.2.11以上版本才支持)
- 'a' — 設為管理員
- 'A' — 設為標記成員
- 'b' — 運行在${MEETME_AGI_BACKGROUND}指定的AGI腳本
- 缺省: conf-background.agi (注意:需要會(huì )議室內有ZAP通道才能運行)
- 'c' — 加入會(huì )議時(shí)提示會(huì )議成員數量
- 'd' — 動(dòng)態(tài)加入會(huì )議
- 'D' — 動(dòng)態(tài)加入會(huì )議,提示要求輸入密碼
- 如果用戶(hù)不想給會(huì )議設密碼,可以直接按井
- 'e' — 選擇一個(gè)空會(huì )議。
- 'E' — 選擇一個(gè)沒(méi)密碼的空會(huì )議。
- 'F' — 在會(huì )議中透傳DTMF按鍵,所有成員都能收到DTMF。
- 'i' —提示有成員加入/離開(kāi)會(huì )議with review— 需要chan_zap.so (Asterisk 1.2以上版本才支持)
- 'I' --提示有成員加入/離開(kāi)會(huì )議 without review
- 'M' —當會(huì )議室只有一個(gè)人的時(shí)候放等待音樂(lè )
- 'm' —旁聽(tīng)狀態(tài)(只能聽(tīng),不能說(shuō))
- 'p' —允許用戶(hù)按井退出會(huì )議室
- 'P' — 無(wú)論用戶(hù)是否指定,總是提示用戶(hù)輸入會(huì )議密碼
- 'q' — 安靜模式 (有成員加入/離開(kāi)會(huì )議不做任何提示)
- 'r' — 會(huì )議錄音 (錄音文件名${MEETME_RECORDINGFILE},格式 ${MEETME_RECORDINGFORMAT})。缺省文件名是:meetme-conf-rec-${CONFNO}-${UNIQUEID}
,缺省格式是wav。 — 這個(gè)參數同樣需要chan_zap.so。
- 's' —收到*鍵的時(shí)候播放菜單,普通成員是普通菜單,管理員是管理員菜單('send' to menu)
- 't' — 設為只說(shuō)模式 (只說(shuō),不聽(tīng))
- 'T' — 設置說(shuō)話(huà)人檢測 (在manager interface 和 meetme list可以看到)
- 'v' — 視頻模式 (目前還不支持)
- 'w' — 等待標記成員進(jìn)入會(huì )議。
- 在標記成員進(jìn)入會(huì )議之前,所有成員只能聽(tīng)音樂(lè )。
- • 'X' — 允許用戶(hù)輸入${MEETME_EXIT_CONTEXT}里面的一個(gè)有效的單個(gè)數字來(lái)退出會(huì )議。如果${MEETME_EXIT_CONTEXT}沒(méi)有定義,則從當前的內容里找有效數字。allow
user to exit the conference by entering a valid single digit extension
of the context specified in or the current context if that variable
is not defined. (此參數不支持Asterisk v1.2.0版本)
- 'x' — 當最后一個(gè)標記用戶(hù)退出會(huì )議室的時(shí)候,關(guān)閉會(huì )議。
參數詳解
參數 's'
's' 和 'p' 參數不能跟 'X' 參數共同使用。
- 普通成員: 按鍵*將聽(tīng)到語(yǔ)音菜單"Please press 1 to mute or unmute yourself"; Asterisk
v1.2 版本現在支持對單獨會(huì )議的單獨成員進(jìn)行音量調整。
- 管理員(在加入會(huì )議的時(shí)候使用了 'a' 參數): 按鍵*將聽(tīng)到語(yǔ)音菜單"Press 1 to mute/unmute yourself,
2 to lock/unlock this conference"
參數 'q'
最好在 Asterisk v1.2以上版本用,早期版本的SIP通道會(huì )有延遲。
參數 'r'
在開(kāi)始MeetMe()錄音之前,要指定Set ${MEETME_RECORDINGFILE}的值。
否則,錄音文件將存放在/var/lib/asterisk/sounds目錄下,該目錄是存放系統提示音的,不適合存放錄音文件。
例如:
exten => s,1,SetVar(MEETME_RECORDINGFILE=/var/conf_recording-${EPOCH}-${USER})
exten => s,2,MeetMe(,rD) ;開(kāi)設一個(gè)新會(huì )議,對會(huì )議錄音,
例子
在meetme.conf 中設定一個(gè)會(huì )議室號為101,密碼為123456的會(huì )議。
exten => 500,1,MeetMe(101||123456)
授權的會(huì )議
exten => 18,1,Answer
exten => 18,2,Wait(1)
exten => 18,3,Authenticate(5678)
exten => 18,4,MeetMe(18|p)
exten => 18,5,Playback(vm-goodbye)
exten => 18,6,Hangup
動(dòng)態(tài)會(huì )議室,用戶(hù)需要按鍵輸入要創(chuàng )建的會(huì )議室號
exten => 9999,1,Wait(1)
exten => 9999,2,MeetMe(|Md)
注意:如果你加入參數'e', 按*將選擇#會(huì )議室
如果你需要為會(huì )議室設定一個(gè)密碼,,請將 'd' 參數改為 'D' 。
動(dòng)態(tài)會(huì )議室123設為安靜模式。如果用戶(hù)foo 撥打分機號10,他將成為一個(gè)標記用戶(hù)(’A’),foo離開(kāi)會(huì )議后,會(huì )議室將被關(guān)閉,其他的撥打11的用戶(hù)也將被迫離開(kāi)會(huì )議室。
exten => 10,1,MeetMe(123|Aqd)
exten => 11,1,MeetMe(123|xqd)
OEJ發(fā)表的回顧 (May 23, 2004)
你發(fā)現這個(gè)簡(jiǎn)單得不能再簡(jiǎn)單的(not-so-simple-anymore)簡(jiǎn)單MeetMe會(huì )議橋了嗎?這可是Asterisk的一個(gè)殺手級應用哦。它帶來(lái)豐富的功能應用:
- 多種渠道,包括VoIP 和 PSTN,都能參加的多方會(huì )議
- 宣講模式:一個(gè)說(shuō)話(huà)人,眾多的旁聽(tīng)者。
- 管理功能:踢用戶(hù),讓會(huì )議靜音,鎖定會(huì )議
- 等待其他成員的時(shí)候可以收聽(tīng)等待音樂(lè )
- 可以預設會(huì )議
- 也可以動(dòng)態(tài)創(chuàng )建會(huì )議(第一個(gè)成員將被告知會(huì )議號碼)
更多豐富命令包括:
- MeetMe – 加入會(huì )議 (有時(shí)候也用于創(chuàng )建新會(huì )議)
- MeetMeAdmin – 踢人、鎖定會(huì )議、讓會(huì )議靜音
- MeetMeCount – 統計會(huì )議室內的成員名單
在CLI 下面也可以管理MeetMe:
- Meetme List all conferences
- MeetMe kick 踢一個(gè)人
- MeetMe kick 踢所有人
- MeetMe list 列出會(huì )議室內的所有成員
- MeetMe lock 鎖定會(huì )議室,不再加人
- MeetMe unlock 解鎖會(huì )議室
- MeetMe mute 禁止某個(gè)人發(fā)言
- MeetMe unmute 允許某個(gè)人發(fā)言
OEJ附加說(shuō)明
- 會(huì )議橋默認語(yǔ)音編碼格式是ulaw。 如果采用其他編碼,將額外占用CPU資源。
- MEETMESECS參數包含了用戶(hù)參加會(huì )議中的時(shí)長(cháng)(以秒為單位)。
- 改動(dòng)meetme.conf無(wú)需重新加載,系統會(huì )自動(dòng)讀取
- 在dial plan中,您可以通過(guò)meetmecount()和參數來(lái)限制參加會(huì )議的人數
- MeetMe依賴(lài)Zaptel時(shí)鐘,您需要安裝Zaptel驅動(dòng),最好有一片Asterisk兼容的語(yǔ)音卡。
- 潛規則
- MeetMe應用需要一個(gè)時(shí)鐘才能工作。 有幾種方法可以獲得時(shí)鐘,其中Zaptel卡提供的工作時(shí)鐘是一個(gè)不錯的選擇,如果你沒(méi)有Zaptel卡,也可以使用ztdummy
時(shí)鐘。
- 動(dòng)態(tài)會(huì )議 的工作方式可能跟你想得不太一樣。很明顯,動(dòng)態(tài)會(huì )議的意思就是創(chuàng )建一個(gè)并未存在的會(huì )議。所以當用戶(hù)A創(chuàng )建了一個(gè)會(huì )議號為200的會(huì )議之后,如果用戶(hù)也來(lái)創(chuàng )建一個(gè)會(huì )議號為200的會(huì )議,那么用戶(hù)B將被直接加入用戶(hù)A的會(huì )議,而不會(huì )對用戶(hù)B提示說(shuō)已經(jīng)會(huì )議號200已經(jīng)被人用了。另外,如果用戶(hù)A創(chuàng )建的這個(gè)#200會(huì )議有密碼,那么用戶(hù)B將聽(tīng)到密碼無(wú)效的聲音,然后系統會(huì )提示用戶(hù)B重新輸入一個(gè)要創(chuàng )建的會(huì )議號碼。要想解決這個(gè)問(wèn)題,我們能做的就是通過(guò)參數
'e' 來(lái)讓系統自動(dòng)分配會(huì )議號碼。
性能方面的考慮
在ISDN PRI環(huán)境下開(kāi)超過(guò)10個(gè)人的MeetMe會(huì )議
我曾經(jīng)發(fā)現在ISDN PRI環(huán)境下超過(guò)10個(gè)人的會(huì )議回發(fā)生嘯叫。人們認為電信運營(yíng)商已經(jīng)對ISDN-PRI這樣的純數字化環(huán)境做過(guò)回聲消除了,所以不需要再設置回聲消除。然而事實(shí)并非如此。我在配置文件
/etc/asterisk/zapata.conf下面增加了下列的參數項,從而解決了這個(gè)問(wèn)題:
echocancel=yes
echocancelwhenbridged=yes
echotraining=yes
架構和局限
在A(yíng)sterisk 1.2版本中,同時(shí)開(kāi)很多個(gè)會(huì )議的時(shí)候可能會(huì )有些局限。目前大部分版本已經(jīng)升到1.4及以上,也就不存在這些問(wèn)題了,不再鏊述。
關(guān)于參數'b' (AGI_BACKGROUND)
網(wǎng)友疑問(wèn):
我看了論壇上一些老的帖子,但是還是有個(gè)疑問(wèn),是關(guān)于A(yíng)GI_BACKGROUND的。如果我的機器上安裝了Asterisk兼容板卡但是會(huì )議里沒(méi)有加入Zap通道,只有SIP通道,那么SIP通道上的MEETME_AGI_BACKGROUND腳本能正常工作嗎?
回答:
不能正常工作。下面我們分析一下工作原理:
合并輸入的語(yǔ)音包,輸出合并后的語(yǔ)音包,這些工作是在Zaptel驅動(dòng)里面做的。對于真實(shí)的Zap通道,這個(gè)工作是在驅動(dòng)層就請全部完成的。而對于非Zap通道,系統會(huì )創(chuàng )建一個(gè)Zap虛擬通道,然后在非Zap通道和Zap虛擬通道之間雙向拷貝語(yǔ)音數據。
看一下這部分源代碼(在conf_run()中),我們會(huì )發(fā)現,conf_run() 函數要么執行AGI腳本,要么執行虛擬通道拷貝循環(huán),不能同時(shí)執行兩個(gè)。所以當你使用AGI腳本的時(shí)候,在非Zap
通道和Zap虛擬通道之間就沒(méi)有任何連接了。
擁有一塊Asterisk卡或者dummy時(shí)鐘驅動(dòng) (比如: ztdummy 或者 zaprtc) 都能使用MeetMe功能,但是這并不意味著(zhù)你可以在參加會(huì )議的SIP通道上使用AGI:他們沒(méi)有執行任何AGI的能力。你可以試下看,但是最終的結果一定是什么聲音也得不到。
還要注意的是,使用AGI將會(huì )使其他的一些內置功能,比如說(shuō)靜音、踢人和音樂(lè )等待等功能不能使用。
AGI_BACKGROUND Pros/Cons
使用AGI將會(huì )使其他的一些內置功能,比如說(shuō)不用通過(guò)命令行實(shí)現靜音、踢人和音樂(lè )等待等功能。
參數 'p' (按#退出) 也不能用。錄音功能也不能用。
如果你需要把會(huì )議中的某個(gè)成員踢出去,首先需要停止該成員的AGI_BACKGROUND 任務(wù)。
一旦AGI_BACKGROUND腳本停止,該成員就自動(dòng)退出會(huì )議室了。
所有的DTMF按鍵事件都被送到AGI_BACKGROUND 進(jìn)程/腳本。所以你可以讓你的.agi腳本不停地循環(huán),捕獲按鍵音,來(lái)決定怎樣處理一個(gè)特定的按鍵。
AGI_BACKGROUND 也開(kāi)放了很多開(kāi)發(fā)的編程機會(huì )。你可以使用進(jìn)程間通訊(sockets, signals等等)來(lái)遠程控制會(huì )議室(即:
基于外部時(shí)間或用戶(hù)輸入來(lái)給會(huì )議室放音)。
從普通通話(huà)發(fā)起多方通話(huà)(邀請用戶(hù)參加會(huì )議)
下面我講一下怎樣從一個(gè)普通通話(huà)(兩方通話(huà))發(fā)起多方通話(huà)。主要是通過(guò)MeetMe和ChannelRedirect來(lái)實(shí)現。
疑問(wèn): 在 Asterisk 1.4 版本中,我們是否需要用'ManagerRedirect'來(lái)替換 'ChannelRedirect'?
下面是dialplan 例子:
[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() 函數 (或者其他方式) 來(lái)獲得空閑的會(huì )議室號碼。
此外,還需要修改 features.conf,增加下面的內容:
[applicationmap]
nway-start => *0,caller,Macro,nway-start
nway-inv => **,caller,Macro,nway-ok
nway-noinv => *#,caller,Macro,nway-notok
(譯注:事實(shí)上,FindFreeConf()這個(gè)函數好像需要Trunk版本支持,需要修改一下這個(gè)例子的部分內容才能運行。另外,實(shí)際測試中我們也發(fā)現,兩個(gè)按鍵*0之間的間隔時(shí)間不能太長(cháng),最好是連續按鍵。)
工作原理:
普通通話(huà)情況下:
當你和別人通話(huà)的時(shí)候,按*0 (執行宏 nway-start)。 被叫馬上被傳遞到一個(gè)空閑的會(huì )議室,而你將聽(tīng)到撥號音,等待你輸入你要邀請的電話(huà)號碼。當被邀請方接通后,你在和這個(gè)第三方通話(huà)的過(guò)程中,可以按
** (在features.conf可以定義)加入會(huì )議,按 *# 掛掉他然后返回會(huì )議。
會(huì )議室情況下:
在會(huì )議室里面,任何用戶(hù)可以按0邀請其他用戶(hù)加入會(huì )議,其他的步驟同上。
合并會(huì )議
這些可以使用使用 Asterisk local channels 和 Asterisk manager API來(lái)實(shí)現(一般使用AGI 或者Call
Files) 。
下面是一個(gè)合并會(huì )議123和會(huì )議124的OriginateAction例子:
在dialplan (context = default):
exten => 7799,1,Meetme(123|qd)
exten => 7798,1,Meetme(124|qd)
在Manager API:
Action: Originate
ActionID: 12345678
Channel: local/7798
Context: default
Exten: 7799
Priority: 1
與某個(gè)成員悄悄話(huà)
在Meetme中,還有一個(gè)類(lèi)似ChanSpy的悄悄話(huà)功能(密談)。會(huì )議成員可以與其他成員通過(guò)'whisper'功能來(lái)密談。
我還增加了一個(gè) 'z' 標志:
'z' — 所有的DTMF按鍵事件將被送到manager
用戶(hù)可以通過(guò)對MeetMe系統中的按鍵進(jìn)行偵測,然后在決定在manager命令中如何處理。
除了標準MeetMe之外的其他選擇
MeetMe2
MeetMe2是在MeetMe基礎上增加了Web控制界面的一個(gè)變體。
"目的是控制會(huì )議室里面的聲音和成員。這個(gè)功能可以為你提供一個(gè)通過(guò)網(wǎng)絡(luò )來(lái)控制會(huì )議和直觀(guān)查看會(huì )議的方法。app_meetme已經(jīng)做了大量改動(dòng),將一些會(huì )議信息寫(xiě)入DB,并檢查會(huì )議屬性是否已經(jīng)改變。"
Q: 我看到會(huì )議中的成員,但是我不能把他們踢出去,也不能將他們的模式從說(shuō)變成可聽(tīng)可說(shuō)。沒(méi)有顯示任何錯誤。
A: 在php中打開(kāi)register_globals。
你也可以在php文件的頂部加入"extract($_GET);"
(也有網(wǎng)友建議使用MeetMe-Web-Control來(lái)替代MeetMe2)
app_conference
另外一個(gè)變種 app_conference,針對大容量的會(huì )議。
http://sourceforge.net/projects/appconference/
有些人認為它比MeetMe更為強大,但是目前還沒(méi)有人提供詳細的比較測試數據。
遠程會(huì )議主機
通過(guò)第三方會(huì )議提供商: http://www.junctionnetworks.com,IAX和SIP通道可以加入遠程會(huì )議。在dialplan里面可以這樣寫(xiě):
exten => 7000,1,Dial(IAX2/conference@iax.jnctn.net)
exten => 7000,1,Dial(SIP/conference@sip.jnctn.net)
通過(guò)撥打7000,您就可以參加他們的會(huì )議。
他們提供很多種參加會(huì )議的方法,可以通過(guò)Web網(wǎng)頁(yè)來(lái)訂制,方便了會(huì )議管理和統計。
CTI論壇編輯
相關(guān)閱讀:
亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩
天津市|
布拖县|
卢龙县|
原平市|
彰武县|
邯郸县|
富阳市|
敦煌市|
辽中县|
古丈县|
武山县|
辽宁省|
高碑店市|
福鼎市|
汤阴县|
浏阳市|
治县。|
清水河县|
突泉县|
开阳县|
汉川市|
宁安市|
麦盖提县|
信丰县|
长白|
迁西县|
璧山县|
嘉荫县|
武夷山市|
修文县|
福海县|
临泉县|
麟游县|
涿州市|
肇东市|
阿克陶县|
台南县|
泾阳县|
安徽省|
麦盖提县|
阳谷县|
http://444
http://444
http://444
http://444
http://444
http://444