Trixbox 2.8 MusicOnHold の stream再生

保留音をインターネットに設定したときの忘備録

<< http://d.hatena.ne.jp/athlonz/20080727/p1 を参考にさせていただきました。感謝 >>

FreePBX の MusicOnHold で、適当な名前のストリーミングカテゴリーを追加
| Categoly : NetRadio
| Application : /bin/cat
| OptionFormat : slin

# vi /etc/asterisk/musiconhold_additional.conf
ここで、[NetRadio]を以下のようにする(directory=を追加)

[NetRadio]
mode=custom
directory=/var/lib/asterisk/moh/netstream
application=/bin/cat
format=slin

:wq で書き込み

# mkdir /var/lib/asterisk/moh/netstream
# cd /var/lib/asterisk/moh/netstream

MPlayserのインストール
# cd /usr/local/src
# wget http://www4.mplayerhq.hu/MPlayer/releases/MPlayer-1.0rc2.tar.bz2
# bzip2 -dc MPlayer-1.0rc2.tar.bz2 | tar xvf –
# cd MPlayer-1.0rc2
# ./configure
# make
# make test
# make install

名前付きパイプを作る
# cd /var/lib/asterisk/moh/netstream
# mkfifo pipe.mp3
# vi netstream.sh
中身は

#!/bin/sh

while :
do
        /usr/local/bin/mplayer http://yp.shoutcast.com/sbin/tunein-station.pls?id=1258 -srate 8000 -af channels=1 -ao pcm_file=/var/lib/asterisk/moh/netstream/pipe.mp3
done

# chmod a+x /var/lib/asterisk/moh/netstream/netstream.sh

# vi /etc/init.d/asterisk_netstream
中身は

#!/bin/bash

# chkconfig: 2345 35 35
# description: Asterisk Network Streaming
# processname: asterisk_netstream

start(){
    rm -f /var/lib/asterisk/moh/netstream/nohup.out
    echo -n "Starting Asterisk Network Streaming"
    /usr/bin/nohup /var/lib/asterisk/moh/netstream/netstream.sh &
    return 0
}
stop(){
    echo -n "Stop Asterisk Network Streaming"
    killall netstream.sh -9
    killall mplayer -9
    return 0
}


case "$1" in
start)
    start
    ;;
stop)
    stop
    ;;
esac

:wq で保存

chmod a+x /etc/init.d/asterisk_netstream

サービスに登録
# chkconfig –add asterisk_netstream
# service asterisk_netstream start
試験で聴くための番号を設定する
# vi /etc/asterisk/extensions_custom.conf
[from-internal-custom]に以下の文を挿入

;NetRadio Test for Asterisk 1.4
;exten => 468,1,Answer
;exten => 468,2,Playback(pls-hold-while-try)
;exten => 468,3,SetMusiconHold(NetRadio)
;exten => 468,4,WaitmusiconHold(60)
;exten => 468,5,Hangup

;NetRadio TEST for asterisk 1.6
exten => 468,1,Answer
exten => 468,n,Playback(pls-hold-while-try)
exten => 468,n,Set(CHANNEL(musicclass)=NetRadio)
exten => 468,n,WaitmusiconHold(60)
exten => 468,n,Hangup

:wq で保存

# amportal restart
で、asterisk を再起動。
468 に電話をしてみて聞こえるか確認。
聞こえるようなら inboundRutes の Musc On Hold を NetRadio に設定。
実際は、再起動しないとうまく動かなかった。

コメントを残す

メールアドレスが公開されることはありません。