Asterisk 除可以支援 MP3 設定為來電音樂(Music On Hold),此篇將教你另一種不同方法,將來電音樂的來源設置為網路電台型式。
不過至目前只能以 WinAmp 為播放介面 MP3 的廣播電台(SHOUTcast Radio)為主,而國內電台較風行的 Real Player 及 Media Player 播放介面的電台,至目前為止,還沒找到合適的解決方案。
這樣的用法有別於比較固定的音樂檔案的播放方式,而是改以音樂串流方式播放內容,如此可使媒體內容更多樣化,動態化及內容即時化。
雖然只支援 WinAmp 的電台,但這電台套件(SHOUTcast Radio)是可以免費架設,如果將它和 IP-PBX 作整合應用,應該可以設計出更多元化的其他應用。
除了 SHOUTcast Radio 套件外,還可以使用另外一套也是免費的套件 Icecast。
由於筆者所使用的系統是用 Elastix,所以下述方法將以此環境為主,不過應該也適用 Trixbox 或 Asterisk 手動安裝的其他用法。
更多文章
心得分享:
前往 http://sourceforge.net/projects/mpg123,下載 mpg123-1.5.1.tar.gz
By 2010-5-3 已測試最新版 mpg123-1.12.1 版本可用
By 2011-11-28 已測試 mpg123-1.13.4 版本可用
#cd /usr/src #wget http://nchc.dl.sourceforge.net/sourceforge/mpg123/mpg123-1.5.1.tar.gz #tar -xzf mpg123-1.5.1.tar.gz #cd mpg123-1.5.1 #./configure --prefix=/opt/mpg123-1.5.1 #make #make install
以 root 登入 SSH Console
#su - asterisk #cd /var/lib/asterisk/mohmp3 #mkdir stream #touch stream/stream.mp3
編輯 musiconhold_custom.conf
《PBX》《Tools》《File Editor》File 輸入 musiconhold_custom.conf,按 Filter,選擇 musiconhold_custom.conf
增加以下這幾行
[radio] mode=custom directory=/var/lib/asterisk/mohmp3/stream/ application=/opt/mpg123-1.5.1/bin/mpg123 -q -r 8000 -f 8192 -b 0 --mono -s http://70.87.88.179:9000/
確認後儲存
重啟服務使設定生效,在 SSH Console 執行以下指令
#asterisk -rx "stop now" #amportal stop #amportal start
Tips: 電台位址何處找
幾個收集電台位址的網站。
application=/opt/mpg123-1.5.1/bin/mpg123 -q -r 8000 -f 8192 -b 0 --mono -s http://radio.newdaai.tv:8010/
application=/opt/mpg123-1.5.1/bin/mpg123 -q -r 8000 -f 8192 -b 0 --mono -s http://streamplus11.ameus.de:17978/
application=/opt/mpg123-1.5.1/bin/mpg123 -q -r 8000 -f 8192 -b 0 --mono -s http://cast.ptt.cc:8000/yes/
方法一:設定一個虛擬號碼用來作電台播放測試
編輯 extensions_custom.conf
《PBX》《Tools》《File Editor》File 輸入 extensions_custom.conf,按 Filter,選擇 extensions_custom.conf
增加這幾行
[from-internal-custom] ... ... include => test-moh-streaming ; call 5551 [test-moh-streaming] exten => 5551,1,Answer exten => 5551,2,WaitExten(60|m(radio)) exten => 5551,n,Hangup
註:
5551 是虛擬號碼可以自行修改,但不能與現有分機、自設的Features code、會議室號碼等所有其他用過的號碼相同。
因為只是用作測試用,所以音樂播放 60 秒後即自動斷線,若想取消限制,將 WaitExten(60|m(radio)) 改成 MusicOnHold(radio)。
使用任一分機撥 5551 後話筒應該會傳來電台的音樂聲音。
方法二:設定通話保留(Music on Hold)時播放電台音樂
編輯 sip_general_custom.conf
《PBX》《Tools》《File Editor》File 輸入 sip_general_custom.conf,按 Filter,選擇 sip_general_custom.conf
增加這幾行
; default MOH class mohinterpret=radio
註:radio 是以上所設定的 music class 名稱
使用分機撥通另一支分機,當按下保留(Hold)後,對方應該會聽到電台的音樂。
線上測試
如果想先了解使用後的效果,你可以撥入我們的系統聽聽看,接通後會聽到電台播放的音樂約一分鐘,我們提供三線撥入號碼包括 Gizmo(國際), CCNET(台灣), toCall(中國)
17470806946 轉 6 (Gizmo)
0702500267 轉 6 (CCNET)
20815048 轉 6 (toCall)
Images 0 | ||
---|---|---|
No images to display in the gallery. |
但是完全沒有聲音
產生了下列的訊息
有請高人指導:
== Using SIP RTP CoS mark 5
== Using SIP VRTP CoS mark 6
-- Executing [555@income:1] Answer("SIP/201-00000000", "") in new stack
-- Executing [555@income:2] WaitExten("SIP/201-00000000", "60|m(radio)") in new stack
[Dec 18 21:28:04] WARNING[672]: pbx.c:956 pbx_exec: The application delimiter is now the comma, not the pipe. Did you forget to convert your dialplan? (WaitExten(60|m(radio)))
但不曉得為什麼
請教一下依文章所作及peterelf所言,執行LOG如下
Feb 6 03:16:55 VERBOSE [9147] pbx.c:
-- Executing [9991@from-internal:1] Answer("SIP/111-0000002d", "") in new stack
Feb 6 03:16:55 VERBOSE [9147] pbx.c:
-- Executing [9991@from-internal:2] MusicOnHold("SIP/111-0000002d", "radio") in new stack
Feb 6 03:16:55 VERBOSE [9147] res_musiconhold.c:
-- Started music on hold, class 'radio', on channel 'SIP/111-0000002d'
並無錯誤LOG
但仍聽不見聲音@@"
抓取的目標為 http://radiolive.newdaai.tv:8010 在大愛的網站上找來放進來的。
是來源設定有錯嗎?
你可以用其他撥放軟體先確認來源是正常的。