asterisk 錄音功能,有分為自動錄音和手動錄音,底下分別說明之。
自動錄音
某些特定的分機需要自動錄音,例如客服電話,可能就需要自動錄音的功能來錄下每一通的對話,主管可藉此觀察員工的電話應對是否得當。或是發生客戶糾紛時,需要電話錄音作為呈堂證供。底下就開始介紹 asterisk 如何設定自動錄音。
其實在 asterisk 裡早已提供一個方便的指令 Monitor 來讓你應用在 extensions.conf 裡面。
先說明一下 Monitor 這個指令的語法與簡介
基本語法:Monitor(ext,basename,flags)
Monitor 後面可帶3個參數,分開說明之。
ext:filename extension檔案的副檔名,即代表此檔的儲存格式,預設是 wav
basename:這個basename的中文意思要搞清楚,它的意思是去頭去尾純檔名,也就是前面沒有路徑名稱,後面沒有副檔名,就單純的檔案名稱而已。預設的basename是含頻道名稱和一個數字,例: IAX2[foo@bar]-3. 並且會將雙方所講話的聲音分別儲存為in和out兩個檔案。檔名若未指定完整路徑的話,預設是會儲存在此路徑 /var/spool/asterisk/monitor 。
flags:只有兩個參數可用m與b。若帶 m 這個參數的話,則錄音後系統會將兩個音檔(in和out)合併成為一個檔案,然後刪除那兩個音檔。若不想要在雙方電話接通之前就開始錄音的話,那麼你可以帶此參數 b ,詳細說明一下使用此參數 b 的優缺點,不帶b的話,電話一進來在對方還未接起電話之前就開始錄音了,好處是可以記錄到所有的來電時間與號碼(其實CDR裡早就有記的清清楚楚了,因此根本算不上什麼好處)缺點就是,會錄到很多無用的音檔,長久下來要你去一大堆無用的音檔內找到你要的、可用的音檔會花去你很多時間,因此建議最好使用此參數。
底下是使用範例
[客服專線]
exten => s,1,Noop
same => n,Monitor(wav,客服_${STRFTIME(${EPOCH},,%F-%H時%M分%S秒)}_${CALLERID(number)},b)
same => n,Dial(SIP/1234,45,x)
說明:上面的 Monitor 裡面,我們又帶了很多看不懂的參數,這裡詳細說明一下,其實我們只是多加了兩個變數 ${STRFTIME} 和 ${CALLERID}
${STRFTIME} 可參考英文資料,看看這個指令的使用方式,有很多變數可以自訂顯示日期的格式。
語法:STRFTIME([][,[][,]])
例: ${STRFTIME(${EPOCH},,%F-%H時%M分%S秒)}
顯示出來的格式:2013-09-05-11時52分41秒
手動錄音
除了自動錄音可以事先指定分機設定以外,其它的分機若臨時想要錄音的話,該怎麼做?
所幸,asterisk已內建此功能了,我們只要做一些簡單設定即可
vim /etc/feature.conf
在最後面加入底下內容
[vicHotkey]
automon => *1 ; 單鍵單聲道錄音。請確認在 Dial 指令有加入 W或w 參數
automixmon => *3 ;單鍵雙聲道錄音。請確認有在 Dial 指令有加入 X或x 參數
vim /etc/asterisk/extensions.conf
[globals]
DYNAMIC_FEATURES=>vicHotkey
exten => _XXXX,1,Noop
same => n,Dial(SIP/${EXTEN},45,mX)
;45為等候接聽秒數,後方的參數Tt:允許雙方轉接 m等候音樂 g當掛斷時會繼續執行dial plan X允許主叫使用*3錄音
這樣在講話當中,只要按下 *3 或 *1 的話就可以開始將對話錄下,錄下的音檔預設會存在 /var/spool/asterisk/monitor 這個資料夾底下。
補充說明: asterisk 裡有另一個指令 Record 可用,但是它並不是我們所需要的功能,它只能單純的錄下某一個人的講話,使用方式大概就象你對著錄音設備按下錄音按鍵之後開始講話一樣的錄音方式,這個指令它並不能錄下雙方講話中的聲音。