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