2015年3月22日日曜日

Asteriskに関するメモ

ここ最近はAsteriskいじりが日課になっています。
自らのスキルアップと同時に、それがそのまま音質の向上に繋がります。
これはやっていて非常に楽しいです♪


AsteriskでIP-PBXを構築する上で、障壁となりそうなことを備忘録として残します。
大まかですが、以下のようなことです。
  • メモっておかないと忘れてしまうようなこと。
  • 日本のサイトでは情報を得られなかったこと。
  • 試行錯誤でやっと結果が得られたもの。
  • 頑張っても結果が得られないもの。

    なお、これは本当に私用のメモです。
    わかりやすく書いているわけではないので、参考にされる方がいたらごめんなさい。


    【 「Raspberry Pi(B+と2B)」にインストールした「Asterisk」に「G.729a」を対応させる(無料) 】

    Raspberry PiはARM系CPUのため、バイナリ配布型のG729aが使えない。
    そのため、専用コンパイラを用いて、G729をインストールする。
    さらに、本来有料であるはずのG729はこれで無料となる。(ロイヤリティフリーのものを使う。)

    ●「Raspberry Pi B+」編
    Asteriskインストール後
    apt-get install dh-autoreconf
    cd /tmp

    <bcg729のインストール>
    wget http://download-mirror.savannah.gnu.org/releases/linphone/plugins/sources/bcg729-1.0.0.tar.gz
    tar xzf bcg729-1.0.0.tar.gz
    cd bcg729-1.0.0
    ./configure --libdir=/lib
    make
    make install

    <G729のインストール>
    cd ..
    wget http://asterisk.hosting.lv/src/asterisk-g72x-1.2.tar.bz2
    tar xjf asterisk-g72x-1.2.tar.bz2
    cd asterisk-g72x-1.2
    ./autogen.sh
    ./configure --with-bcg729
    make
    make install

    asterisk -vvvvr
    core restart gracefully


    ●「Raspberry Pi 2B」編
    Asteriskインストール後
    apt-get install dh-autoreconf
    cd /tmp

    <bcg729のインストール>
    wget http://download-mirror.savannah.gnu.org/releases/linphone/plugins/sources/bcg729-1.0.0.tar.gz
    tar xzf bcg729-1.0.0.tar.gz
    cd bcg729-1.0.0
    ./configure --libdir=/lib
    make
    make install

    <G729のインストール>
    cd ..
    wget http://asterisk.hosting.lv/src/asterisk-g72x-1.2.tar.bz2
    tar xjf asterisk-g72x-1.2.tar.bz2
    cd asterisk-g72x-1.2
    ./autogen.sh
    ./configure --with-bcg729

    出来上がった「Makefile」を編集する
    205行目「-march=」を「-march=armv7-a」に編集

    make
    make install

    asterisk -vvvvr
    core restart gracefully



    【 Asterisk11で3Gモデム(Chan_dongle)を使う 】

    <Asterisk11のインストール>
    cd /usr/src
    wget http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-11.16.0.tar.gz

    (11.16.0にした理由は、11系のひかり電話対応パッチ導入可能な最終Verのため。)

    tar zxvf asterisk-11.16.0.tar.gz
    cd asterisk-11.16.0
    ./contrib/scripts/install_prereq install
    (Windowが出てきたら「81」を入力) ※30分ぐらい時間がかかるかも。
    ./bootstrap.sh
    ./configure
    make
    make install
    make samples
    make config

    <Asterisk11対応Chan_dongleのインストール>
    cd /usr/src
    wget https://github.com/jstasiak/asterisk-chan-dongle/archive/asterisk11.zip
    unzip asterisk11.zip
    cd asterisk-chan-dongle-asterisk11
    aclocal
    autoconf
    automake -a
    ./configure
    make
    make install
    cp etc/dongle.conf /etc/asterisk/



    【 Asterisk12で3Gモデム(Chan_dongle)を使う(失敗) 】

    <Asterisk12のインストール>
    cd /usr/src
    wget http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-12.8.1.tar.gz

    tar zxvf asterisk-12.8.1.tar.gz
    cd asterisk-12.8.1
    (Windowが出てきたら「81」を入力) ※30分ぐらい時間がかかる。
    ./bootstrap.sh
    ./configure
    make
    make install
    make samples
    make config


    <Asterisk12対応Chan_dongleのインストール>
    cd /usr/src
    wget https://github.com/superles/chan-dongle-asterisk12/archive/master.zip
    unzip master.zip
    cd chan-dongle-asterisk12-master
    aclocal
    autoconf
    automake -a
    ./configure
    make
    make install
    cp etc/dongle.conf /etc/asterisk/

    通話不可



    【 Asterisk13で3Gモデム(Chan_dongle)を使う(失敗) 】

    Asterisk12と基本的なやり方は同じ。
    chan_dongleは作者によって2つ存在する。
    が、そのどちらも未完成に思える。もしくはARM系に対応していないか(?)

    以下からダウンロード可能。

    novaktmp氏作
    https://forum.openwrt.org/viewtopic.php?id=54343

    rusxakep(Mikhail Baykov)氏作
    https://github.com/rusxakep/asterisk-chan-dongle/tree/asterisk13



    【 ひかり電話対応パッチを当てる 】

    Asterisk1.8系と11系でそれぞれパッチ適用可能な最終バージョンを検討する。
    say.cとapp_voicemail.cはついで。

    <ひかり電話対応最終バージョン(Asterisk1.8)>
    cd /usr/src
    wget http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-1.8.27.0.tar.gz
    tar xzvf asterisk-1.8.27.0.tar.gz
    cd asterisk-1.8.27.0
    wget http://ftp.voip-info.jp/asterisk/patch/local/1.8/channels/chan_sip.rt200ne.110205-01.patch
    wget http://ftp.voip-info.jp/asterisk/patch/1.8.20.1/say.c.101025-01.patch
    wget http://ftp.voip-info.jp/asterisk/patch/1.8.20.1/app_voicemail.c.101025-01.patch
    patch -p0 < chan_sip.rt200ne.110205-01.patch ←なんか出ても「y」で。
    patch -p0 < say.c.101025-01.patch
    patch -p0 < app_voicemail.c.101025-01.patch

    <ひかり電話対応最終バージョン(Asterisk11)>
    cd /usr/src
    wget http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-11.16.0.tar.gz
    tar xzvf asterisk-11.16.0.tar.gz
    cd asterisk-11.16.0
    wget http://ftp.voip-info.jp/asterisk/patch/local/11/channels/chan_sip_rt200ne.141204-01.patch
    wget http://ftp.voip-info.jp/asterisk/patch/11.13.0/say.c.121107-01.patch
    wget http://ftp.voip-info.jp/asterisk/patch/11.13.0/app_voicemail.c.121107-01.patch
    patch -p0 < chan_sip_rt200ne.141204-01.patch ←なんか出ても「y」で。
    patch -p0 < say.c.121107-01.patch
    patch -p0 < app_voicemail.c.121107-01.patch



    【 AsteriskにBluetoothケータイを直接収容する(Chan_mobile) 】

    Asteriskインストール時に「make menuselect」よりChan_mobileは有効にしておく。

    BTドングル 挿す

    apt-get install bluetooth bluez libbluetooth-dev bluez-utils blueman

    ラズパイに挿したBTドングル情報の確認
    hcitool dev

    Devices:
    hci0 00:19:86:00:08:**

    周辺のBTデバイスのスキャン
    hcitool scan

    Scanning ...
    A0:DD:E5:42:DB:** WS027SH
    AC:9E:17:09:CF:** Nexus Player

    ペアリング
    bluez-simple-agent hci0 A0:DD:E5:42:DB:**
    これがラズパイが接続しに行くコマンド
    接続に失敗することが多々あるが粘る

    hciconfig hci0 piscan
    bluetooth-agent 0000
    こっちがラズパイが接続待ちになるコマンド

    Ctrl+zで待受状態脱出
    /etc/init.d/bluetooth restart


    ペリングしたBTデバイスと自動接続
    bluez-test-device trusted A0:DD:E5:42:DB:** yes
    bluez-test-input connect A0:DD:E5:42:DB:**

    chan_mobileの設定
    nano /etc/asterisk/chan_mobile.conf

    [adapter]
    id=WS027SH
    address=A0:DD:E5:42:DB:**



    【 Asteriskの日本語音声対応 】

    自動応答させる際などに使う。(IVR)

    nano /etc/asterisk/asterisk.conf
    languageprefix = yesのコメントアウトを外す。

    sip.confに以下追加
    [general]
    language=ja

    cd /tmp
    wget http://ftp.voip-info.jp/asterisk/sounds/1_6/asterisk-sound-jp_16_pre.tar.gz
    tar xzvf asterisk-sound-jp_16_pre.tar.gz

    ・Asterisk1.8
    mv ja/ /usr/share/asterisk/sounds/

    ・Asterisk11
    mv ja/ /var/lib/asterisk/sounds/



    【 擬似ビジー音と切断音の導入 】

    これは結構重用。
    内線通話ではビジー及び切断が非常にわかりにくいため、これを擬似的に自分で鳴らしてしまう。
    「プーップーップー・・・・プツ」ってやつ。

    ・Asterisk1.8
    cd /usr/share/asterisk/sounds/ja

    ・Asterisk11以降
    cd /var/lib/asterisk/sounds/ja

    wget https://sites.google.com/site/azukarijo2/busy-sound.gsm
    wget https://sites.google.com/site/azukarijo2/disconnect-sound.gsm

    extensions.confに、鳴らしたい場所で以下のように記載。
    (「_0.」のところは適宜変更)

    (例)
    exten => _0.,n,Playback(busy-sound)
    exten => _0.,n,Playback(disconnect-sound)
        
  • 2 件のコメント :

    1. こんにちは。まだ良くわかっていない部分があるので教えてください。我が家はヒカリ電話ではなく、ケーブルTV電話なので「ヒカリ電話を持ち歩く」ことは出来ないのですがそのケーブルNETを利用したブラステル固定電話を持ち歩くことは「Raspberry Pi」にインストールした「Asterisk」が有れば可能ということでよいのでしょうか?やはり、スマホにインストールしたIP電話と固定電話化したものと比べると遅延がかなり違うようなので・・・・これが出来て遅延緩和できるならキャリア契約辞めようと思っております。

      返信削除
    2. soulさん

      ブラステルをAsteriskに収容して、それをスマホから利用するということはできるはずです。
      しかし、これでどれほど遅延が改善するのか、もしくは悪化するのか。
      この検証は行ったことがありません。

      理論的に考えると遅延は悪化するはずです。
      しかし、通信経路が短縮されればこの限りではありません。

      これは、お使いのプロバイダ(CATV)によって変わってくるかと思います。
      理屈だけでは語れないので、試してみたら本当に遅延は改善するかもしれません。

      なお、それ以外にも利点はあります。
      3G/LTE回線網での使用時に、好きなコーデックが使えるようになります。
      私としては遅延の改善よりも、こちらのほうがメリットが大きいように思えます。

      返信削除