Asterisk
Asterisk は完全な PBX (電話交換機) ソフトウェアです。Linux, BSD, Windows, OS X などで動作し、PBX が通常備えている機能は全て含まれています。Asterisk は4つのプロトコルによる VoIP ができ、比較的安価なハードウェアでほぼ全ての規格の電話装置と一緒に使うことが可能です。
Asterisk はボイスメールサービス、電話帳、電話会議、自動音声応答、コールキューイングを実現します。また、三者通話、発信者番号通知サービス、ADSI、IAX、SIP、H.323 (クライアントとゲートウェイの両方)、MGCP (コールマネージャのみ)、SCCP/Skinny をサポートしています。
この記事では家庭ネットワークにおけるシンプルな設定を説明し、SIP ソフトフォンを使って LAN 上の他の SIP ソフトフォンと会話できるようにします。
目次
インストール
AUR から asteriskAUR をインストールして、asterisk.service
を使ってサーバーを起動してください。
アーカイブ: aur-mirror や zaptel-svnAUR もインストールすると良いかもしれません。また、SIP ソフトフォンと最低2つのマシンが必要です。SIP フォンとしては公式リポジトリの linphone (linphone) や AUR の x-lite (xlite_binAUR) が推奨されます。
ilbc コーデックのサポートを有効にするには PKGBUILD の build セクションの最初に以下を追加してください:
cd ${srcdir}/${pkgname}-${pkgver}/contrib/scripts echo | ./get_ilbc_source.sh
設定
SIP
asterisk サーバーを動かしたら、後は2つのファイルを編集すれば設定できます: sip.conf
と extensions.conf
。asterisk の設定ディレクトリ (/etc/asterisk
) に移動して、sip.conf
を編集して以下を記述してください:
[me1] type=friend username=me1 secret=PASSWORD host=dynamic context=house [me2] type=friend username=me2 secret=PASSWORD host=dynamic context=house
これで house
コンテキストに二人の SIP ユーザー me1
と me2
が作成されます。パスワードは PASSWORD
です。
次にコンテキストを定義します。extensions.conf
を以下のように編集:
[house] exten => 100,1,Dial(SIP/me1) exten => 101,1,Dial(SIP/me2)
これでコンテキスト house
が作成され SIP ユーザー me1
にエクステンション 100 が、SIP ユーザー me2
にエクステンション 101 が割り当てられます。後は実際に動作するか確認するだけです。
保留音
保留音はとても楽しい機能です。簡単に設定することができます。/etc/asterisk/musiconhold.conf
を編集して以下を追加してください:
[default] mode=files directory=/var/lib/asterisk/mohmp3
Now go into your sip.conf
musiconhold=default
後はお気に入りの MP3 を /var/lib/asterisk/mohmp3
にコピーしてください。
ボイスメール
Asterisk にはボイスメール機能が存在します。設定する方法は多数ありますが、この記事ではシンプルな設定方法だけを紹介します。
voicemail.conf
を作成・編集:
[general] format=gsm|wav49|wav serveremail=asterisk attach=no mailcmd=/usr/sbin/sendmail -t maxmessage=180 maxgreet=60 [default] 100 => 1234,Me,me@mydomain.com
[general] の設定の内容は こちら を見て下さい。Postfix が正しくセットアップされていれば PBX からメールの通知がユーザーに送信され、attach=yes
と定義されている場合、メールに音声ファイルが添付されます。
次にメールボックスの設定です。フォーマットは:
mailbox => password,user,email
上記の場合、'Me' というユーザー名でメールアドレスが me@mydomain.com、パスワードが 1234 のメールボックス 100 が設定されます。
それから、ボイスメールボックスにメッセージを残す方法と、記録されたメッセージにアクセスする手段を用意する必要があります。
extensions.conf
に戻り、既存のエントリを次のように変更します:
exten => 100,1,Dial(SIP/me1,20) exten => 100,2,Voicemail(100@default)
最初の 'exten' は 'Dial()' で20秒間電話を呼び出します。応答がない場合、default コンテキストの 100 番のボイスメールボックスに転送します。
さらに以下のように設定することで実際にボイスメールにアクセスすることができます:
exten => 600,1,VoiceMailMain,s100@default
So when we call 600, the application 'VoiceMailMain' goes to 100 in the default context. The s
allows for automatic login.
PSTN に接続
Now that you have the previous setup, it is time to actually connect to the outside world. To do this, you will need a provider such as Junction Networks. Your provider should have instructions on connecting to asterisk, so this section is very general.
一般的なセットアップ
sip.conf
[general] register => username:password@sip.specific.com [whatever] fromdomain=specific.com host=sip.specific.com insecure=very ; check with provider username=usernameduh secret=passwordduh type=peer
extensions.conf
[outboundwithCID] ; this can be whatever exten => _1NXXNXXXXXX,1,SetCIDNum(15555551234) exten => _1NXXNXXXXXX,2,Dial(SIP/${EXTEN}@whatever) exten => _1NXXNXXXXXX,3,Congestion() exten => _1NXXNXXXXXX,103,Busy() [default] ; This should be set in your sip.conf for incoming calls ;These should to be changed to your actual number ; ie 15555555555 exten => 1NXXNXXXXXX,1,Answer() exten => 1NXXNXXXXXX,2,Playback(ttt-weasels) exten => 1NXXNXXXXXX,3,HangUp()
- In the outbound context, any number dialed will be sent out to your service provider. The 'whatever' in the 2 priority should match what you have in your sip.conf.
- Of course, the inbound dial-plan can be modified to do what you want. For instance, you can have
Dial(SIP/me1)
so when someone calls your number they are routed to your SIP phone on your computer. Then add in voice-mail and so on.
iax.conf
The first step is to log into FWD and enable their side of IAX. It is under extra features, and keep in mind that the authors claim it takes a little while to activate.
Now edit your iax.conf with the following in the 'general' section:
register => FWDNUMBER:PASSWORD@iax2.fwdnet.net disallow = all allow = ulaw
And at the bottom add:
[iaxfwd] type=user context=fromiaxfwd auth=rsa inkeys=freeworlddialup
This allows calls from FWD.
extensions.conf
Place this at the top under '[globals]':
FWDNUMBER=MYFWDNUMBER ; your calling number FWDCIDNAME="MyName"; your caller id FWDPASSWORD=MYFWDPASSWORD ; your password FWDRINGS=sip/office ; the phone to ring FWDVMBOX=1000 ; the VM box for this user
Next, add this to a context for outgoing:
exten => _393.,1,SetCallerId,${FWDCIDNAME} exten => _393.,2,Dial(IAX2/${FWDNUMBER}:${FWDPASSWORD}@iax2.fwdnet.net/${EXTEN:3},60,r) exten => _393.,3,Congestion
You can change the '393' to whatever you want. This is what you will dial before dialing a 'fwd' number. For instance, to dial '744561' you would dial '393744561'.
And lastly, the incoming calls:
[fromiaxfwd] exten => ${FWDNUMBER},1,Dial(${FWDRINGS},20,r) exten => ${FWDNUMBER},2,Voicemail,u${FWDVMBOX} exten => ${FWDNUMBER},102,Voicemail,b${FWDVMBOX}
Extensions to try calling are 55555 (a volunteer maned test line) and 514 (conference).
音声
音声は /var/lib/asterisk/xx
フォルダに保存します。xx
は言語コードです。例えば英語なら "en" になります。新しい音声を追加したいときはこのフォルダにコピーしてください。以下のフォルダ構造を守って下さい:
/var/lib/asterisk/sounds/xx /var/lib/asterisk/sounds/xx/digits /var/lib/asterisk/sounds/xx/letters /var/lib/asterisk/sounds/xx/phonetic
sip.conf
の language パラメータを編集してください:
[general] ... language=en ...
音声が入手できる場所:
- http://downloads.asterisk.org/pub/telephony/sounds/
- https://packages.debian.org/wheezy/all/asterisk-prompt-xx
- voip-info.org
MeetMe
MeetMe は電話会議をできるようにするアプリケーションです。設定は簡単です。
meetme.conf
を編集:
conf => 1000
extensions.conf
を編集:
exten => 999,1,MeetMe(1000|M)
999 にダイアルすることで会議 1000 に入ることができます。|M
を設定することで誰もいないときは保留音が鳴ります。誰かが会議に参加すると保留音は自動的に消えます。
Asterisk コンソールとソフトフォン
Now lets get Asterisk going:
# asterisk -vvvvvvc
This will give us the Asterisk CLI with verbose output. If Asterisk is already running you will need to use:
# asterisk -r
Now fire up your SIP clients and set them up with the information in the sip.conf. Switch back to your Asterisk CLI and you should see:
Registered SIP 'me1' at 192.168.0.142 port 5061 expires 60
Now you should be able to dial 101
from me1
and talk to me2
.
トラブルシューティング
404 Not Found エラーが表示される場合は extensions.conf
とダイアルした電話番号を確認してください。