Asterisk cmd MeetMe Chinese

MeetMe

簡介

電話會議室

描述

MeetMe([confno][,[options][,pin]]): 輸入會議室號碼使用者就可進入其中

若會議室號碼被省略,使用者會被提示進入其中一間。
請注意: Zaptel timer 必須存在,會議室才能正常運作! 參考 Asterisk timer

New in Asterisk v1.2: 此會議程式現在允許使用者 增加/減少 他們的講話和聆聽音量 (此設定是每個使用者獨立的); "管理者"和"使用者"語音選單有更改。新的語音檔已釋出。 然而, 若使用者是經由 Zaptel 頻道撥入,它並沒有硬體 DTMF 偵測功能,去增加他們說話的音量,意即他們無法進入語音功能選單去做進一步的調整,軟體 DTMF 偵測器無法認得 DTMF 來自他們的設備。

参数:options可以为空,也可以设置一个或者多个参数,参数有如下一些:
  • '1' — 關閉 "你是此會議室唯一使用者" 訊息給第一位進入會議室的成員 (new in 1.2 trunk, see bug 6316) (This is not included in 1.2.11)
  • 'a' — 設定 管理者 模式
  • 'A' — 設定 標記 模式
  • 'b' — 執行 AGI script 定義於 ${MEETME_AGI_BACKGROUND}

    • Default: conf-background.agi (註: 在非 Zap 頻道,同一會議室無效)
  • 'c' — 播報有多少使用者數量進入會議室
  • 'd' — 動態加入會議室
  • 'D' — 動態加入會議室,提示 PIN 碼
    • 提示 PIN 碼時,若使用者不想輸入 PIN 碼,可按 # 字鍵。
  • 'e' — 選擇一個空的會議室
  • 'E' — 選擇一個空的、沒有PIN碼的會議室
  • 'F' — 在会议中透传DTMF按键,所有成员都能收到DTMF。
  • 'i' — 播報使用者 進入/離開 會議室 with review,需要 chan_zap.so (new in Asterisk 1.2) — Asterisk 1.4 has an issue with loud squelches after announcements. See bug 9430
  • 'I' — 播報使用者 進入/離開 會議室 without review
  • 'M' — 啟用音樂等候,在會議室內只有一位使用者時。
  • 'm' — 設定旁聽模式 (只聽不講)
  • 'p' — 允許使用者按 # 離開會議室
  • 'P' — 總是提示輸入pin碼,若pin碼已定義 (无论用户是否指定,总是提示用户输入会议密码)
  • 'q' — 安靜模式(不播放 進入/離開 音效)
  • 'r' — 會議錄音 (records as ${MEETME_RECORDINGFILE} using format ${MEETME_RECORDINGFORMAT}). 預設檔名是 meetme-conf-rec-${CONFNO}-${UNIQUEID} 預設格式是 wav。 — requires chan_zap.so
  • 's' — 出現語音選單(user or admin) 當按下 '*' 鍵 (收到*键的时候播放菜单,普通成员是普通菜单,管理员是管理员菜单)
  • 't' — 設定只說模式. (只說不聽)
  • 'T' — 設定講話者偵測 (在manager interface 和 meetme list可以看到)
  • 'v' — 視訊(video) 模式 (此參數目前無作用)
  • 'w' — 等待標記(marked)的使用者進入會議室後,會議才開始(此段期間會撥放等候音樂,若 M 參數有被使用)
    • 其它使用者會聽到等候音樂(MusicOnHold)直到標記使用者進入。

  • 'X' — 允許使用者離開會議室 by 輸入一個有效的單一數字鍵分機,若變數未定義,則此鍵定義於此區段(context) ${MEETME_EXIT_CONTEXT} 或目前區段(context). Due to a bug (see 5773 and 5631) 此參數於 Asterisk v1.2.0. 版無效。
  • 'x' — 關閉會議室,當最後一位有標記的(marked)使用者離開時。

參數詳解

參數 's'

參數 's' 和 'p' 無法和參數 'X' 同時使用。
  • 一般使用者 (例:未設定參數 a 的使用者): 按 * 鍵會撥放語音選單 "請按 1 靜音或解除靜音你自己"; Asterisk v1.2 版本现在支持对单独会议的单独成员进行音量调整。 by pressing * followed by 4 or 6; likewise patch 4170 lets one control the volume of ones (own?) voice by pressing * followed by a series of 7's and 9's for up and down until you press 8 to accept and return to normal operation.
  • admin (with option 'a' being set): Upon pressing * plays the voicemenu "Press 1 to mute/unmute yourself, 2 to lock/unlock this conference"
    • 1 - 靜音/解除靜音
    • 2 - 鎖上/解鎖 會議室
    • 3 - 踢出剛剛(最後一位)進入會議室的使用者。
    • 4 - 降低會議室音量 with each 4 you press - end with 8
    • 6 - 增加會議室音量 with each 6 you press - end with 8
    • 7 - 降低你的音量 - end with 8
    • 9 - 增加你的音量 - end with 8
註: 你無法鎖上或踢出 管理者 - but both work just fine on ordinary users!

參數 'q'

最好在 Asterisk v1.2以上版本用,早期版本的SIP通道会有延迟。

參數 'r'

設定變數 ${MEETME_RECORDINGFILE} 在開始 MeetMe() 的錄音參數. 否則會議室的錄音檔則會被存在此 /var/lib/asterisk/sounds.

exten => s,n(record),SetVar(MEETME_RECORDINGFILE=/var/spool/asterisk/meetme/conference_recording-${EPOCH}-${USER});
exten => s,n,MeetMe(,rDMpc)					;Make new Room and record call.

參數 'j' of chan_local

The Asterisk jitterbuffer for IAX and SIP in Asterisk 1.4 (and most probably 1.6 as well) only works for calls that bridge channels and does not apply to calls to applications like MeetMe() or Record() etc. However by using the Local channel construct together with the 'j' option there is a workaround available:

[some-context]
exten => 123,1,Dial(Local/124 <at> some-context/nj)
exten => 124,1,MeetMe(some-room,dM)

Applying such a jitter buffer can increase voice quality, but that at the expense of additional latency.

範例

會議室房間號 101 和密碼 (PIN) 123456 已定義於 meetme.conf
exten => 500,1,MeetMe(101||123456)

授權的會議
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

動態會議室,使用者必須輸入房間號用以建立一個房間
exten => 9999,1, Wait(1)
exten => 9999,2,MeetMe(|Md) ; 註:若你加了參數 'e', * 會為你選擇一間
;將 'd' 參數改為 'D' 可為你的會議室加密碼(PIN)

動態會議室 123 with 安靜進入. 若用户foo 拨打分机号10,他将成为一个标记用户,foo离开会议后,会议室将被关闭,其他的拨打11的用户也将被迫离开会议室。
exten => 10,1,MeetMe(123|Aqd)
exten => 11,1,MeetMe(123|xqd)

注意:自從 asterisk 1.6 之從 語法有更改: MeetMe(123,Md) 是使用逗號,不是管線( | )

Overview by OEJ (May 23, 2004)


你發現這個簡單得不能再簡單的(not-so-simple-anymore)簡單MeetMe會議橋了嗎?這可是Asterisk的一個殺手級應用哦。它帶來豐富的功能應用:


  • 多種渠道,包括VoIP 和 PSTN,都能參加的多方會議
  • 宣講模式:一個說話人,眾多的旁聽者。
  • 管理功能:踢用戶,讓會議靜音,鎖定會議
  • 等待其他成員的時候可以收聽等待音樂
  • 可以預設會議
  • 也可以動態創建會議(第一個成員將被告知會議號碼)

In CVS head, there's been a number of additions to MeetMe lately, additions that make MeetMe much more than a "simple" conference bridge.

The dial plan applications for the MeetMe system in CVS head are
  • MeetMe - 加入會議 (有时候也用於建立動態會議室)
  • MeetMeAdmin - 踢人、锁定会议、让会议静音
  • MeetMeCount - 統計會議室內的成員名單

在 CLI 下面也可以管理MeetMe:

Meetme List all conferences
MeetMe kick <confno> <user> 踢一个人
MeetMe kick <confno> all 踢所有人
MeetMe list <confno> 列出会议室内的所有成员
MeetMe lock <confno> 锁定会议室,不再加人
MeetMe unlock <confno> 解锁会议室
MeetMe mute <confno> <user> 禁止某个人发言
MeetMe unmute <confno> <user> 允许某个人发言

附加說明
  • 会议桥默认语音编码格式是ulaw。 如果采用其他编码,将额外占用CPU资源。
  • 變數 MEETMESECS 包含了用户参加会议中的时长(以秒为单位)。
  • 改动meetme.conf无需重新加载,系统会自动读取
  • Authenticate with the authenticate() app if you want a user based auth for a meetme conference
  • 在dial plan中,您可以通过meetmecount()和参数来限制参加会议的人数
  • To be able to run MeetMe, your Asterisk server needs a Zaptel timer. This is provided from Digium cards or through various drivers. See http://www.voip-info.org/tiki-index.php?page=Asterisk%20timer

Please observe

  • TMeetMe应用需要一个 timer 才能工作。 有几种方法可以获得时钟,其中Zaptel卡提供的工作时钟是一个不错的选择,如果你没有Zaptel卡,也可以使用ztdummy 时钟。
  • As of now (Jan. 2004, v0.7.1) passwords only work with static conferences
  • A common conference password can also be specified in meetme.conf, example:
conf => 1234,4231 ; conference 1234, password 4231
  • 動態會議 它的工作方式可能跟你想得不太一樣。很明顯,動態會議的意思就是創建一個並未存在的會議。所以當用戶A創建了一個會議號為200的會議之後,如果用戶也來創建一個會議號為200的會議,那麼用戶B將被直接加入用戶A的會議,而不會對用戶B提示說已經會議號200已經被人用了。另外,如果用戶A創建的這個#200會議有密碼,那麼用戶B將聽到密碼無效的聲音,然後系統會提示用戶B重新輸入一個要創建的會議號碼。要想解決這個問題,我們能做的就是通過參數 'e' 來讓系統自動分配會議號碼。 See http://bugs.digium.com/bug_view_page.php?bug_id=0002200.

性能方面的考慮

在ISDN PRI環境下開超過10個人的MeetMe會議

我曾經發現在ISDN PRI環境下超過10個人的會議回發生嘯叫。人們認為電信運營商已經對ISDN-PRI這樣的純數字化環境做過回聲消除了,所以不需要再設置回聲消除。然而事實並非如此。

我在配置文件 /etc/asterisk/zapata.conf下面增加了下列的參數項,從而解決了這個問題:


echocancel=yes
echocancelwhenbridged=yes
echotraining=yes

架構和局限


在Asterisk 1.2版本中,同時開很多個會議的時候可能會有些局限。目前大部分版本已經升到1.4及以上,也就不存在這些問題了,不再鏊述。

MeetMe honours only 1 CPU (May 2011)

Q: What is better more cores (eg. 2x quadcore) or more CPU speed for a server that handle a lot of of Meetme Concerences with hundreds of concurrent G711 alaw Channels (no transcoding)?

A: I don't have an answer for you (too many unknown variables to say one way or another) but I do know that MeetMe currently is serialized onto a single CPU.

For example, all the conference participants threads queue up their audio data on their pseudo channels which can happen in parallel on SMP systems. Then they wait for the "masterspan" to mix the audio for all conferences currently active. This happens on a single CPU to simplify keeping channels synchronized to whatever timing source is your master. When this was originally written there were not too many SMP systems in use. Then the mixed audio is queued back on the channels. Finally, all the user space channel threads can read out the mixed audio which can happen in parallel on SMP.

If you have too many conferences, one CPU may not be able to mix all the audio and you will have audio problems even if there are 7+ other CPUs that are essentially idle while waiting for one CPU to mix everything. You should be able to handle 512 conference participants on a modern server system without problem. The current trunk of DAHDI linux limits the number of open pseudo channels to 512 for this reason. [1]

[1] http://svn.asterisk.org/view/dahdi?view=revision&revision=9610

The new ConfBridge module in the upcoming Asterisk 1.10 release may not have this limitation.

關於參數'b' (AGI_BACKGROUND)

as of August 2004
網友疑問:

我看了論壇上一些老的帖子,但是還是有個疑問,是關於AGI_BACKGROUND的。如果我的機器上安裝了Asterisk兼容板卡但是會議裏沒有加入Zap通道,只有SIP通道,那麼SIP通道上的MEETME_AGI_BACKGROUND腳本能正常工作嗎?

不能正常工作。下面我們分析一下工作原理:

  合並輸入的語音包,輸出合並後的語音包,這些工作是在Zaptel驅動裏面做的。對於真實的Zap通道,這個工作是在驅動層就請全部完成的。而對於非Zap通道,系統(app_meetme)會創建一個Zap虛擬通道,然後在非Zap通道和Zap虛擬通道之間雙向拷貝語音數據。

  看一下這部分源代碼(在conf_run()中),我們會發現,conf_run() 函數要麼執行AGI腳本,要麼執行虛擬通道拷貝循環,不能同時執行兩個。所以當你使用AGI腳本的時候,在非Zap 通道和Zap虛擬通道之間就沒有任何連接了。

  擁有一塊Asterisk卡或者dummy時鍾驅動 (比如: ztdummy 或者 zaprtc) 都能使用MeetMe功能,但是這並不意味著你可以在參加會議的SIP通道上使用AGI:他們沒有執行任何AGI的能力。你可以試下看,但是最終的結果一定是什麼聲音也得不到。

  還要注意的是,使用AGI將會使其他的一些內置功能,比如說靜音、踢人和音樂等待等功能不能使用。

I can't see a reason why Zap and SIP channels couldn't use different extensions to get to the same MeetMe room with different flags and (for the Zap channels) different AGI scripts .

AGI_BACKGROUND Pros/Cons

使用 AGI_BACKGROUND 將會使其他的一些內置功能,比如說不用通過命令行實現靜音、踢人和音樂等待等功能。
參數 'p' (按#退出) 也不能用。錄音功能也不能用

如果你需要把會議中的某個成員踢出去,首先需要停止該成員的AGI_BACKGROUND 任務。
一旦AGI_BACKGROUND腳本停止,該成員就自動退出會議室了。

所有的DTMF按鍵事件都被送到AGI_BACKGROUND 進程/腳本。所以你可以讓你的.agi腳本不停地循環,捕獲按鍵音,來決定怎樣處理一個特定的按鍵。
AGI_BACKGROUND 也開放了很多開發的編程機會。你可以使用進程間通訊(sockets, signals等等)來遠程控制會議室(即:基於外部事件或用戶輸入來給會議室放 .gsm 音檔)

邀請使用者進會議室 (多方通話)

請參閱 Asterisk n-way call HOWTO Chinese 有實作方法

合併會議

這些可以使用使用 Asterisk local channelsAsterisk manager API API來實現(一般使用AGI 或者Call Files) 。
下面是一個合併會議123和會議124的OriginateAction例子:

from dialplan (context = default):
exten => 7799,1,Meetme(123|qd)
exten => 7798,1,Meetme(124|qd)

from Manager API:
Action: Originate
ActionID: 12345678
Channel: local/7798
Context: default
Exten: 7799
Priority: 1

與某個成員悄悄話

See patch 8446: 在Meetme中,還有一個類似ChanSpy的悄悄話功能(密談)。會議成員可以與其他成員通過'whisper'功能來密談。我還增加了一個 'z' 標志:

'z' — 所有的DTMF按鍵事件將被送到manager

用戶可以通過對MeetMe系統中的按鍵進行偵測,然後在決定在manager命令中如何處理。
(This allows the flexbility for users hook their own manager commands to the meetme system by getting what key is pressed and then issuing their own manager command. Currently everything is hardcoded which is not customizable.)

除了標准MeetMe之外的其他選擇


app_conference

另外一個變種 app_conference,針對大容量的會議。 有些人認為它比MeetMe更為強大,但是目前還沒有人提供詳細的比較測試數據。
http://sourceforge.net/projects/appconference/


"If people are looking for a higher-capacity conferencing application,
take a look at app_conference, in the iaxclient (on sourceforge) CVS. I
haven't really benchmarked meetme, but I _think_ that app_conference
might be able to beat it. Certainly in it's designed application it
will (iax clients which use VAD on the client side)."

app_konference

Yet another variant is app_konference, app_conference can hold more then 1000 concurrent users in a conference:
http://sourceforge.net/projects/appkonference/


"app_konference is a fork of app_conference focusing on stability and growth many bugs introduced in app_conference have been fixed such as locking issues. Also Volume controls have been added app_konference focuses more on telephone rather then video.
app_konference 1.2 adds support for channel spying and whispering as well as thread priority enhancement for the conference thread, more stability and performance enhancements, app_konference 1.2 was released 2009-09-23"

ConfBridge

Asterisk 1.6.2 comes with the new ConfBridge addition that, amongst other features, should support g722 wideband conferencing.

The good old MeetMe application will never support anything other than 8kHz sampling rates, as it uses DAHDI for audio mixing and DAHDI only supports 8kHz audio.
In 1.6.2, however, there is a new ConfBridge application that can provide wideband audio mixing; you can read the application help to see how to use it. As far as I am aware, at this time is only supports a single sample rate per conference, it cannot support mixed-rate channels in a single conference.
When mixing audio, ConfBridge will use SLIN at 16kHz to handle wideband channels, since mixing must be done in the linear domain.

遠程會議主機

Yet another alternative 通過第三方會議提供商: http://www.junctionnetworks.com
在 IAX和SIP通道可以加入遠程會議。在dialplan裏面可以這樣寫:

exten => 7000,1,Dial(IAX2/conference@iax.jnctn.net)
-or-
exten => 7000,1,Dial(SIP/conference@sip.jnctn.net)

通過撥打7000,您就可以參加他們的會議。
他們提供很多種參加會議的方法,可以通過Web網頁來訂制,方便了會議管理和統計。


Bugs and patches

Trouble with audio delays as discussed here in Sep 2007:
  • patch 3599: Async patch for fixing audio delay in MeetMe using SIP when not 'q' mode
  • patch 5374: See modifications to channel.c in '2005-10-04-3-asynchronous.patch'

See also



Asterisk | Applications | Functions | Variables | Expressions | Asterisk FAQ

MeetMe

簡介

電話會議室

描述

MeetMe([confno][,[options][,pin]]): 輸入會議室號碼使用者就可進入其中

若會議室號碼被省略,使用者會被提示進入其中一間。
請注意: Zaptel timer 必須存在,會議室才能正常運作! 參考 Asterisk timer

New in Asterisk v1.2: 此會議程式現在允許使用者 增加/減少 他們的講話和聆聽音量 (此設定是每個使用者獨立的); "管理者"和"使用者"語音選單有更改。新的語音檔已釋出。 然而, 若使用者是經由 Zaptel 頻道撥入,它並沒有硬體 DTMF 偵測功能,去增加他們說話的音量,意即他們無法進入語音功能選單去做進一步的調整,軟體 DTMF 偵測器無法認得 DTMF 來自他們的設備。

参数:options可以为空,也可以设置一个或者多个参数,参数有如下一些:
  • '1' — 關閉 "你是此會議室唯一使用者" 訊息給第一位進入會議室的成員 (new in 1.2 trunk, see bug 6316) (This is not included in 1.2.11)
  • 'a' — 設定 管理者 模式
  • 'A' — 設定 標記 模式
  • 'b' — 執行 AGI script 定義於 ${MEETME_AGI_BACKGROUND}

    • Default: conf-background.agi (註: 在非 Zap 頻道,同一會議室無效)
  • 'c' — 播報有多少使用者數量進入會議室
  • 'd' — 動態加入會議室
  • 'D' — 動態加入會議室,提示 PIN 碼
    • 提示 PIN 碼時,若使用者不想輸入 PIN 碼,可按 # 字鍵。
  • 'e' — 選擇一個空的會議室
  • 'E' — 選擇一個空的、沒有PIN碼的會議室
  • 'F' — 在会议中透传DTMF按键,所有成员都能收到DTMF。
  • 'i' — 播報使用者 進入/離開 會議室 with review,需要 chan_zap.so (new in Asterisk 1.2) — Asterisk 1.4 has an issue with loud squelches after announcements. See bug 9430
  • 'I' — 播報使用者 進入/離開 會議室 without review
  • 'M' — 啟用音樂等候,在會議室內只有一位使用者時。
  • 'm' — 設定旁聽模式 (只聽不講)
  • 'p' — 允許使用者按 # 離開會議室
  • 'P' — 總是提示輸入pin碼,若pin碼已定義 (无论用户是否指定,总是提示用户输入会议密码)
  • 'q' — 安靜模式(不播放 進入/離開 音效)
  • 'r' — 會議錄音 (records as ${MEETME_RECORDINGFILE} using format ${MEETME_RECORDINGFORMAT}). 預設檔名是 meetme-conf-rec-${CONFNO}-${UNIQUEID} 預設格式是 wav。 — requires chan_zap.so
  • 's' — 出現語音選單(user or admin) 當按下 '*' 鍵 (收到*键的时候播放菜单,普通成员是普通菜单,管理员是管理员菜单)
  • 't' — 設定只說模式. (只說不聽)
  • 'T' — 設定講話者偵測 (在manager interface 和 meetme list可以看到)
  • 'v' — 視訊(video) 模式 (此參數目前無作用)
  • 'w' — 等待標記(marked)的使用者進入會議室後,會議才開始(此段期間會撥放等候音樂,若 M 參數有被使用)
    • 其它使用者會聽到等候音樂(MusicOnHold)直到標記使用者進入。

  • 'X' — 允許使用者離開會議室 by 輸入一個有效的單一數字鍵分機,若變數未定義,則此鍵定義於此區段(context) ${MEETME_EXIT_CONTEXT} 或目前區段(context). Due to a bug (see 5773 and 5631) 此參數於 Asterisk v1.2.0. 版無效。
  • 'x' — 關閉會議室,當最後一位有標記的(marked)使用者離開時。

參數詳解

參數 's'

參數 's' 和 'p' 無法和參數 'X' 同時使用。
  • 一般使用者 (例:未設定參數 a 的使用者): 按 * 鍵會撥放語音選單 "請按 1 靜音或解除靜音你自己"; Asterisk v1.2 版本现在支持对单独会议的单独成员进行音量调整。 by pressing * followed by 4 or 6; likewise patch 4170 lets one control the volume of ones (own?) voice by pressing * followed by a series of 7's and 9's for up and down until you press 8 to accept and return to normal operation.
  • admin (with option 'a' being set): Upon pressing * plays the voicemenu "Press 1 to mute/unmute yourself, 2 to lock/unlock this conference"
    • 1 - 靜音/解除靜音
    • 2 - 鎖上/解鎖 會議室
    • 3 - 踢出剛剛(最後一位)進入會議室的使用者。
    • 4 - 降低會議室音量 with each 4 you press - end with 8
    • 6 - 增加會議室音量 with each 6 you press - end with 8
    • 7 - 降低你的音量 - end with 8
    • 9 - 增加你的音量 - end with 8
註: 你無法鎖上或踢出 管理者 - but both work just fine on ordinary users!

參數 'q'

最好在 Asterisk v1.2以上版本用,早期版本的SIP通道会有延迟。

參數 'r'

設定變數 ${MEETME_RECORDINGFILE} 在開始 MeetMe() 的錄音參數. 否則會議室的錄音檔則會被存在此 /var/lib/asterisk/sounds.

exten => s,n(record),SetVar(MEETME_RECORDINGFILE=/var/spool/asterisk/meetme/conference_recording-${EPOCH}-${USER});
exten => s,n,MeetMe(,rDMpc)					;Make new Room and record call.

參數 'j' of chan_local

The Asterisk jitterbuffer for IAX and SIP in Asterisk 1.4 (and most probably 1.6 as well) only works for calls that bridge channels and does not apply to calls to applications like MeetMe() or Record() etc. However by using the Local channel construct together with the 'j' option there is a workaround available:

[some-context]
exten => 123,1,Dial(Local/124 <at> some-context/nj)
exten => 124,1,MeetMe(some-room,dM)

Applying such a jitter buffer can increase voice quality, but that at the expense of additional latency.

範例

會議室房間號 101 和密碼 (PIN) 123456 已定義於 meetme.conf
exten => 500,1,MeetMe(101||123456)

授權的會議
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

動態會議室,使用者必須輸入房間號用以建立一個房間
exten => 9999,1, Wait(1)
exten => 9999,2,MeetMe(|Md) ; 註:若你加了參數 'e', * 會為你選擇一間
;將 'd' 參數改為 'D' 可為你的會議室加密碼(PIN)

動態會議室 123 with 安靜進入. 若用户foo 拨打分机号10,他将成为一个标记用户,foo离开会议后,会议室将被关闭,其他的拨打11的用户也将被迫离开会议室。
exten => 10,1,MeetMe(123|Aqd)
exten => 11,1,MeetMe(123|xqd)

注意:自從 asterisk 1.6 之從 語法有更改: MeetMe(123,Md) 是使用逗號,不是管線( | )

Overview by OEJ (May 23, 2004)


你發現這個簡單得不能再簡單的(not-so-simple-anymore)簡單MeetMe會議橋了嗎?這可是Asterisk的一個殺手級應用哦。它帶來豐富的功能應用:


  • 多種渠道,包括VoIP 和 PSTN,都能參加的多方會議
  • 宣講模式:一個說話人,眾多的旁聽者。
  • 管理功能:踢用戶,讓會議靜音,鎖定會議
  • 等待其他成員的時候可以收聽等待音樂
  • 可以預設會議
  • 也可以動態創建會議(第一個成員將被告知會議號碼)

In CVS head, there's been a number of additions to MeetMe lately, additions that make MeetMe much more than a "simple" conference bridge.

The dial plan applications for the MeetMe system in CVS head are
  • MeetMe - 加入會議 (有时候也用於建立動態會議室)
  • MeetMeAdmin - 踢人、锁定会议、让会议静音
  • MeetMeCount - 統計會議室內的成員名單

在 CLI 下面也可以管理MeetMe:

Meetme List all conferences
MeetMe kick <confno> <user> 踢一个人
MeetMe kick <confno> all 踢所有人
MeetMe list <confno> 列出会议室内的所有成员
MeetMe lock <confno> 锁定会议室,不再加人
MeetMe unlock <confno> 解锁会议室
MeetMe mute <confno> <user> 禁止某个人发言
MeetMe unmute <confno> <user> 允许某个人发言

附加說明
  • 会议桥默认语音编码格式是ulaw。 如果采用其他编码,将额外占用CPU资源。
  • 變數 MEETMESECS 包含了用户参加会议中的时长(以秒为单位)。
  • 改动meetme.conf无需重新加载,系统会自动读取
  • Authenticate with the authenticate() app if you want a user based auth for a meetme conference
  • 在dial plan中,您可以通过meetmecount()和参数来限制参加会议的人数
  • To be able to run MeetMe, your Asterisk server needs a Zaptel timer. This is provided from Digium cards or through various drivers. See http://www.voip-info.org/tiki-index.php?page=Asterisk%20timer

Please observe

  • TMeetMe应用需要一个 timer 才能工作。 有几种方法可以获得时钟,其中Zaptel卡提供的工作时钟是一个不错的选择,如果你没有Zaptel卡,也可以使用ztdummy 时钟。
  • As of now (Jan. 2004, v0.7.1) passwords only work with static conferences
  • A common conference password can also be specified in meetme.conf, example:
conf => 1234,4231 ; conference 1234, password 4231
  • 動態會議 它的工作方式可能跟你想得不太一樣。很明顯,動態會議的意思就是創建一個並未存在的會議。所以當用戶A創建了一個會議號為200的會議之後,如果用戶也來創建一個會議號為200的會議,那麼用戶B將被直接加入用戶A的會議,而不會對用戶B提示說已經會議號200已經被人用了。另外,如果用戶A創建的這個#200會議有密碼,那麼用戶B將聽到密碼無效的聲音,然後系統會提示用戶B重新輸入一個要創建的會議號碼。要想解決這個問題,我們能做的就是通過參數 'e' 來讓系統自動分配會議號碼。 See http://bugs.digium.com/bug_view_page.php?bug_id=0002200.

性能方面的考慮

在ISDN PRI環境下開超過10個人的MeetMe會議

我曾經發現在ISDN PRI環境下超過10個人的會議回發生嘯叫。人們認為電信運營商已經對ISDN-PRI這樣的純數字化環境做過回聲消除了,所以不需要再設置回聲消除。然而事實並非如此。

我在配置文件 /etc/asterisk/zapata.conf下面增加了下列的參數項,從而解決了這個問題:


echocancel=yes
echocancelwhenbridged=yes
echotraining=yes

架構和局限


在Asterisk 1.2版本中,同時開很多個會議的時候可能會有些局限。目前大部分版本已經升到1.4及以上,也就不存在這些問題了,不再鏊述。

MeetMe honours only 1 CPU (May 2011)

Q: What is better more cores (eg. 2x quadcore) or more CPU speed for a server that handle a lot of of Meetme Concerences with hundreds of concurrent G711 alaw Channels (no transcoding)?

A: I don't have an answer for you (too many unknown variables to say one way or another) but I do know that MeetMe currently is serialized onto a single CPU.

For example, all the conference participants threads queue up their audio data on their pseudo channels which can happen in parallel on SMP systems. Then they wait for the "masterspan" to mix the audio for all conferences currently active. This happens on a single CPU to simplify keeping channels synchronized to whatever timing source is your master. When this was originally written there were not too many SMP systems in use. Then the mixed audio is queued back on the channels. Finally, all the user space channel threads can read out the mixed audio which can happen in parallel on SMP.

If you have too many conferences, one CPU may not be able to mix all the audio and you will have audio problems even if there are 7+ other CPUs that are essentially idle while waiting for one CPU to mix everything. You should be able to handle 512 conference participants on a modern server system without problem. The current trunk of DAHDI linux limits the number of open pseudo channels to 512 for this reason. [1]

[1] http://svn.asterisk.org/view/dahdi?view=revision&revision=9610

The new ConfBridge module in the upcoming Asterisk 1.10 release may not have this limitation.

關於參數'b' (AGI_BACKGROUND)

as of August 2004
網友疑問:

我看了論壇上一些老的帖子,但是還是有個疑問,是關於AGI_BACKGROUND的。如果我的機器上安裝了Asterisk兼容板卡但是會議裏沒有加入Zap通道,只有SIP通道,那麼SIP通道上的MEETME_AGI_BACKGROUND腳本能正常工作嗎?

不能正常工作。下面我們分析一下工作原理:

  合並輸入的語音包,輸出合並後的語音包,這些工作是在Zaptel驅動裏面做的。對於真實的Zap通道,這個工作是在驅動層就請全部完成的。而對於非Zap通道,系統(app_meetme)會創建一個Zap虛擬通道,然後在非Zap通道和Zap虛擬通道之間雙向拷貝語音數據。

  看一下這部分源代碼(在conf_run()中),我們會發現,conf_run() 函數要麼執行AGI腳本,要麼執行虛擬通道拷貝循環,不能同時執行兩個。所以當你使用AGI腳本的時候,在非Zap 通道和Zap虛擬通道之間就沒有任何連接了。

  擁有一塊Asterisk卡或者dummy時鍾驅動 (比如: ztdummy 或者 zaprtc) 都能使用MeetMe功能,但是這並不意味著你可以在參加會議的SIP通道上使用AGI:他們沒有執行任何AGI的能力。你可以試下看,但是最終的結果一定是什麼聲音也得不到。

  還要注意的是,使用AGI將會使其他的一些內置功能,比如說靜音、踢人和音樂等待等功能不能使用。

I can't see a reason why Zap and SIP channels couldn't use different extensions to get to the same MeetMe room with different flags and (for the Zap channels) different AGI scripts .

AGI_BACKGROUND Pros/Cons

使用 AGI_BACKGROUND 將會使其他的一些內置功能,比如說不用通過命令行實現靜音、踢人和音樂等待等功能。
參數 'p' (按#退出) 也不能用。錄音功能也不能用

如果你需要把會議中的某個成員踢出去,首先需要停止該成員的AGI_BACKGROUND 任務。
一旦AGI_BACKGROUND腳本停止,該成員就自動退出會議室了。

所有的DTMF按鍵事件都被送到AGI_BACKGROUND 進程/腳本。所以你可以讓你的.agi腳本不停地循環,捕獲按鍵音,來決定怎樣處理一個特定的按鍵。
AGI_BACKGROUND 也開放了很多開發的編程機會。你可以使用進程間通訊(sockets, signals等等)來遠程控制會議室(即:基於外部事件或用戶輸入來給會議室放 .gsm 音檔)

邀請使用者進會議室 (多方通話)

請參閱 Asterisk n-way call HOWTO Chinese 有實作方法

合併會議

這些可以使用使用 Asterisk local channelsAsterisk manager API API來實現(一般使用AGI 或者Call Files) 。
下面是一個合併會議123和會議124的OriginateAction例子:

from dialplan (context = default):
exten => 7799,1,Meetme(123|qd)
exten => 7798,1,Meetme(124|qd)

from Manager API:
Action: Originate
ActionID: 12345678
Channel: local/7798
Context: default
Exten: 7799
Priority: 1

與某個成員悄悄話

See patch 8446: 在Meetme中,還有一個類似ChanSpy的悄悄話功能(密談)。會議成員可以與其他成員通過'whisper'功能來密談。我還增加了一個 'z' 標志:

'z' — 所有的DTMF按鍵事件將被送到manager

用戶可以通過對MeetMe系統中的按鍵進行偵測,然後在決定在manager命令中如何處理。
(This allows the flexbility for users hook their own manager commands to the meetme system by getting what key is pressed and then issuing their own manager command. Currently everything is hardcoded which is not customizable.)

除了標准MeetMe之外的其他選擇


app_conference

另外一個變種 app_conference,針對大容量的會議。 有些人認為它比MeetMe更為強大,但是目前還沒有人提供詳細的比較測試數據。
http://sourceforge.net/projects/appconference/


"If people are looking for a higher-capacity conferencing application,
take a look at app_conference, in the iaxclient (on sourceforge) CVS. I
haven't really benchmarked meetme, but I _think_ that app_conference
might be able to beat it. Certainly in it's designed application it
will (iax clients which use VAD on the client side)."

app_konference

Yet another variant is app_konference, app_conference can hold more then 1000 concurrent users in a conference:
http://sourceforge.net/projects/appkonference/


"app_konference is a fork of app_conference focusing on stability and growth many bugs introduced in app_conference have been fixed such as locking issues. Also Volume controls have been added app_konference focuses more on telephone rather then video.
app_konference 1.2 adds support for channel spying and whispering as well as thread priority enhancement for the conference thread, more stability and performance enhancements, app_konference 1.2 was released 2009-09-23"

ConfBridge

Asterisk 1.6.2 comes with the new ConfBridge addition that, amongst other features, should support g722 wideband conferencing.

The good old MeetMe application will never support anything other than 8kHz sampling rates, as it uses DAHDI for audio mixing and DAHDI only supports 8kHz audio.
In 1.6.2, however, there is a new ConfBridge application that can provide wideband audio mixing; you can read the application help to see how to use it. As far as I am aware, at this time is only supports a single sample rate per conference, it cannot support mixed-rate channels in a single conference.
When mixing audio, ConfBridge will use SLIN at 16kHz to handle wideband channels, since mixing must be done in the linear domain.

遠程會議主機

Yet another alternative 通過第三方會議提供商: http://www.junctionnetworks.com
在 IAX和SIP通道可以加入遠程會議。在dialplan裏面可以這樣寫:

exten => 7000,1,Dial(IAX2/conference@iax.jnctn.net)
-or-
exten => 7000,1,Dial(SIP/conference@sip.jnctn.net)

通過撥打7000,您就可以參加他們的會議。
他們提供很多種參加會議的方法,可以通過Web網頁來訂制,方便了會議管理和統計。


Bugs and patches

Trouble with audio delays as discussed here in Sep 2007:
  • patch 3599: Async patch for fixing audio delay in MeetMe using SIP when not 'q' mode
  • patch 5374: See modifications to channel.c in '2005-10-04-3-asynchronous.patch'

See also



Asterisk | Applications | Functions | Variables | Expressions | Asterisk FAQ
Created by: dominic16y, Last modification: Mon 17 of Sep, 2012 (03:02 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+