Raspberry Pi 3にSIPサーバ「Asterisk」をインストールして、スマートフォンを子機とした内線電話を構築してみました。

SIPサーバ「Asterisk」の設定

最初に、Raspberry Pi 3を内線電話サーバにするため、次のコマンドでasterisk をインストールしました。

$ sudo apt-get install asterisk

インストールが終了すると、主に触る設定ファイルは「sip.conf」「extension.conf」の2つで
場所は /etc/asteriskにあります。

まずは、デフォルトの初期設定を退避します。

sudo cp /etc/asterisk/sip.conf /etc/asterisk/sip.conf.original
sudo cp /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.original

コメントが入った大きなファイルは削除し、ゼロから作成します。

sudo rm /etc/asterisk/sip.conf
sudo rm /etc/asterisk/extension.conf

sip.confファイルの設定

「sip.conf」でソフトフォンを子機登録するためにユーザーと番号を作ります。「Asterisk サンプル設定ファイル sip.conf」にsip.confで設定できる項目についての説明があります。

[general]
context=default
bindport=5060
bindaddr=0.0.0.0
language=ja
localnet=192.168.10.0/255.255.255.0
[201]
type=friend
defaultuser=201
secret=pass
canreinvite=no
host=dynamic
[202]
type=friend
defaultuser=202
secret=pass
canreinvite=no
host=dynamic
[203]
type=friend
defaultuser=203
secret=pass
canreinvite=no
host=dynamic

これは、以下の意味になります。

内線番号 201 を ユーザー名 201 パス pass
内線番号 202 を ユーザー名 202 パス pass
内線番号 203 を ユーザー名 203 パス pass

extensions.confの設定

次は、互いに内線電話をかけることができるようにextensions.confに次のダイアルプランを作成します。「Extension道場」にextensions.confで設定できる項目についての説明があります。

内線番号「201」にかかってきたら 通話
内線番号「202」にかかってきたら 通話
内線番号「203」にかかってきたら 「Hello-World」の音声

[default]
exten => 201,1,Dial(SIP/201,30,r)
exten => 201,2,Hangup()
exten => 202,1,Dial(SIP/202,30,r)
exten => 202,2,Hangup()
exten => 203,1,Answer()
exten => 203,2,Playback(hello-world)
exten => 203,3,Hangup()

これで、Asterisk側の基本設定は終了したので、再起動します。

$ sudo service asterisk restart

asteriskの登録状況を次のコマンドで確認します。

# asterisk -r vvvvvc
Asterisk 11.13.1~dfsg-2+deb8u3, Copyright (C) 1999 - 2013 Digium, Inc. and others.
Created by Mark Spencer 
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 11.13.1~dfsg-2+deb8u3 currently running on raspberrypi (pid = 665)
raspberrypi*CLI> sip show registry
Host                                    dnsmgr Username       Refresh State                Reg.Time
0 SIP registrations.
raspberrypi*CLI> sip show peers
Name/username             Host                                    Dyn Forcerport Comedia    ACL Port     Status      Description
201/201                   (Unspecified)                            D  Auto (No)  No             0        Unmonitored
202/202                   (Unspecified)                            D  Auto (No)  No             0        Unmonitored
203/203                   (Unspecified)                            D  Auto (No)  No             0        Unmonitored
3 sip peers [Monitored: 0 online, 0 offline Unmonitored: 0 online, 3 offline]

SIPクライアントアプリをインストールしたスマートフォンの設定

AQUOS PAD「SH-08E」とiPhone 5CにそれぞれSIPクライアントアプリ「Zoiper IAX SIP VOIP Softphone」、「AGEphone」をインストールし、SH-08Eに内線番号「202」、iPhone 5Cに内線番号「201」を割り当てます。

AGEphoneをインストールしたiPhone 5Cの設定

iPhone 5CにAGEphoneをインストールします。AGEphoneを起動すると次のように表示されます。AGEphone起動後、SIPサーバ「Asterisk」に接続しに行きます。接続が完了すると、「ダイアルできます」が表示されます。

AGEphoneの起動

AGEphoneの簡易設定で次のように設定します。「ドメイン」はRaspberry Pi 3のIPアドレス、パスワードは「pass」となります。

AGEphoneの簡易設定

iPhone 5Cでスクリーンショットを取るときは、[電源]ボタンと[ホームボタン]を、同時に1秒以上押し続けます。キャプチャするときにシャッター音がなり、「アルバム」タブから「スクリーンショット」を選択することで、、一覧表示することができます。メールに添付すれば簡単にパソコンに取り込めます。

Zoiper IAX SIP VOIP SoftphoneをインストールしたAQUOS PAD「SH-08E」の設定

AQUOS PAD「SH-08E」にZoiper IAX SIP VOIP Softphoneをインストールします。Zoiper IAX SIP VOIP Softphoneを起動すると次のように表示されます。AGEphone起動後、SIPサーバ「Asterisk」に接続しに行きます。接続が完了すると、「202 is ready」が表示されます。

Zoiperの起動

Zoiper IAX SIP VOIP Softphoneを次のように設定します。

  1. 初期画面の最上の「config」をクリックします。メニューの最上の「Accounts」をクリックします。
  2. 「Addacount」をクリックします。
  3. 「Accountsetup」で「Yes」をクリックします。
  4. 「Acount setup」で 「Manual configuration」をクリックします。
  5. 「SIP」を選択すると次の画面が表示されます。

    Zoiperの設定

  6. 「Account name」は登録した内線番号、「Host」はRaspberry Pi 3のIPアドレス、「Username」は登録した内線番号、「Password」は登録したパスワードとなります。
アンドロイド端末でスクリーンショットを取るときは、[電源]ボタンと音量ボタンの[-]を、同時に1秒以上押し続けます。キャプチャするときにシャッター音がなり、「Pictures > Screenshots」に保存されます。パソコンに接続したときにはUSBメモリとしてパソコン側からアクセスできるので、簡単にパソコンに取り込めます。

Asterisk側で接続の確認をとる場合は、Raspberry Pi側でAsteriskのCLIを起動して、「sip show peers」を実行します。

root@(none):/home/pi# asterisk -r vvvvvc
Asterisk 11.13.1~dfsg-2+deb8u3, Copyright (C) 1999 - 2013 Digium, Inc. and others.
Created by Mark Spencer 
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 11.13.1~dfsg-2+deb8u3 currently running on raspberrypi (pid = 716)
raspberrypi*CLI> sip show peers
Name/username             Host                                    Dyn Forcerport Comedia    ACL Port     Status      Description          
201/201                   192.168.10.5                             D  Auto (No)  No             5060     Unmonitored                      
202/202                   192.168.10.6                             D  Auto (No)  No             33448    Unmonitored                      
203/203                   (Unspecified)                            D  Auto (No)  No             0        Unmonitored                      
3 sip peers [Monitored: 0 online, 0 offline Unmonitored: 2 online, 1 offline]

Host欄に接続しているマシンのIPアドレスが表示すれば接続成功です。

内線番号による通話

この設定で、201の子機から202をコールすると、SIPクライアントが30秒間呼ばれるようになります。呼ばれた内線番号が無効(クライアントなし)なら切断、話中ならBusyトーンが返ります。通話中のAQUOS PAD「SH-08E」のIPクライアントアプリ「Zoiper IAX SIP VOIP Softphone」の表示画面を次に示します。

通話中のZoiperの表示画面

通話中のiPhone 5CのSIPクライアントアプリ「AGEphone」の表示画面を次に示します。

通話中のAGEphoneの表示画面

また、子機から203番にコールすると、「Hello-World」の音声が流れます。