Asteriskの留守番電話テスト

2018-07-31ubuntu

とても苦労した。
最初の設定では、電話が反応するもの音声が出ない。いろいろ考えて、NATの影響とわかったので、まずは、内線を作ってテストした。
サーバはAltusクラウド、内線はwifi経由のスマホ。

ubuntuの16.04で始めたが、Asterisk 13が対応しているが、モジュールのロードでエラーが多発していて信頼できないので、
ubunutuを18.04にアップグレードした。
18.04でもパッケージはAsterisk 13.18.3だが、ほとんどのエラーは解消している。
# asterisk -V
次に日本語音声データをダウンロード。
http://downloads.asterisk.org/pub/telephony/sounds/から、asterisk-core-sounds-ja-gsm-current.tar.gzをガウンロード。
md /usr/share/asterisk/sounds/ja
その中に展開。
/etc/asterisk/asterisk.conf
langageprefex = yesをコメントアウト
defaultlanguage = enをjaに変更して、コメントアウト

サーバはスタティックNATの後ろのあるので、localnet,externaddrを設定する。
スマホもNAT(NAPT、IPマスカレード)の後ろにあるので、natを設定する。
ZoipterはAccounts/Network SettingsにUse RPORT for Signaling & Mediaがあるのでそれぞれ選択すればnat設定が不要。
Grandstream Waveを使う場合は、スマホ側で設定できなかったのでnat設定が必須。

/etc/asterisk/sip.conf
[general]
allowguest=no
disallow=all
allow=ulaw
allow=gsm
localnet=xx.xx.xx.xx/21
externaddr=xx.xx.xx.xx
nat=auto_force_rport,auto_comedia
[123456]
type=peer
context=contex_name
host=dynamic
secret=xxxxx

extensionsとvoicemailは、単純
/etc/asterisk/extensions.conf
[context_name]
extern => 200,1,Answer()
same => n, Wait(1)
same => n, Voicemail(300)
same => n, Hangup()

/etc/asterisk/voicemail.conf
[general]
format=wav49
serveremail=asterisk
attach=yes
maxmsg=9999
maxsecs=300
maxsilence=10
silencethreshhold=128
[default]
300 => 1234,name,name@mail.com,,tz=japan

サーバのfirewallは5060/UDP, 10000-20000/UDPを開放しておく。
wifiのNATはポートアドレス変換しているので、firewallは同じポートをスマホにポートフォワードしておく。
スマホはZoiperをインストール。Settings, AccountsでHost, Username, Passwordを設定する。
Network Settingsで、Use RPORT For SignalingとMediaを両方とも選択する。
サーバはPostfixでメールサーバとして動いているので、300番に電話すると、すぐに留守番電話となり、電話後、メールで音声ファイルが送られてくる。
かなり感激する。
CLIで確認する。
asterisk -rvvv
sip show peers
sip show settings
sip set debug on
rtp set debug on
dialplan show

/var/spool/asterisk/voicemail/default/300/INBOXに音声ファイルができ、
/var/log/asterisk/messagesにはログができるので、管理が必要。
/usr/lib/asterisk/modulesにモジュールがある。ログを見て、modules.confで不要なモジュールをnoload。