ちょっと Asterisk の設定を変更したので備忘録代わりに…
会社の『代表電話の設定を変更して、営業時間外のアナウンスを自動再生する』という、難易度はさほど高くない Tips です。

作業は大きく2つで、まずは再生用アナウンスデータの準備と、Asterisk の設定変更となります。

 音声データの準備

色々調べて実際に試行錯誤してみました。音質については好みがあるので、あくまで私個人の感想で書いてみます。
Asterisk のデフォルトでインストールされている Voice 系データ(英語)は GSM フォーマットになっていますので、それに準じても良いのですが、音質的には好みじゃないので、残りは MP3, ulaw, wav となります。MP3 はAsteriskの再コンパイルが必要っぽいので、除外するとして、残りの ulaw と wav で比べてみましたが、個人的には wav 音源の方が良い感じだったので、今回は wav で音声データを作ることにします。

ネットで検索してみると、有料・無料を問わず、入手可能の音声データのフォーマットで wav は割と一般的な感じです(Windows標準の音声データフォーマットだから!?)。サンプリング周波数が44.1kHz、符号化が16ビット、後はモノラルかステレオで、これがデファクトっぽい感じです。

しかし、残念ながらこのままでは Asterisk の PlayBack コマンドで再生できません。

Asterisk で使う場合には、サンプリング周波数を 8,000Hz(8kHz)モノラルにする必要があります。符号化については16bit 固定で、8bit では再生されませんでした。

 変換方法

sox というアプリをダウンロードします。
※sox は、man ページを見ると…
SoX – Sound eXchange, the Swiss Army knife of audio manipulation
だそうです。

apt-get install sox
sox voice.wav -r 8000 -c 1 voice_8k.wav

これで voice.wav が、サンプリング周波数8,000Hzでモノラルの voice_8k.wav に変換されます。
※必ず .wav という拡張子を付けること! ただし、PlayBack コマンドでは拡張子の指定はしません。

音量は、gain -n で調整できます。
音源によっては -10 くらい指定する必要があるかもしれません。

sox voice.wav -r 8000 -c 1 voice_8k.wav gain -n -10

 Asterisk の設定変更

/etc/asterisk/extensions.conf の設定変更例です。

アナウンスを流す条件は、

1.12月29~31日と1月1~6日
2.平日(月~金)の営業時間(10:00~18:30)外
3.土、日曜日

…と、しました。

『本日の営業は終了しました…』というアナウンスが voice_8k.wav に入っているとして、今回は /var/lib/asterisk/voice というフォルダーを新しく作り、そこに音声データを置いています。

また、この例では『発信番号非通知』の着信については、単に切断していますが、これは何かメッセージを流してから切る方が良いかもしれません。

設定がおわったら、asterisk の CUI を起動して、dialplan reload と入力すると有効になります。

 アナウンスに使う音声データ

Audiostock https://audiostock.jp/
声の達人(こえたつ)https://www.koetatsu.com/
ナレーターさん.com https://narrator3.com/dlshop/
■この辺で探すといろいろ見つかると思います。

今回は、声優さんでヴァーチャルアイドルの雛乃木まやさんの声を使わせていただきました。
※現在放映中の『賢者の孫』で、王子の妹であるメイ=フォン=アールスハイド役で出演されています。
ダウンロードはこちらから… https://hinanogimaya.com/3017/

商用・非商用問わず無料で使えるのはびっくりです。
会社の代表電話(03-4520-8224)に設定してあるので、平日であれば18:30以降、または土日にコールしてみてください。雛乃木まやさんの癒やしボイスを聞くことができます。

 追記 2019/06/08

ちょっと調べたところ、非通知着信に対してのアナウンスは、日本語・英語それぞれ存在していました。/var/lib/asterisk/sounds/ja の中身を確認して、privacy-unident というファイルがあれば、それが使えます。
もし、見つからないようであれば、ここからダウンロードできます。
http://downloads.asterisk.org/pub/telephony/sounds/releases/asterisk-core-sounds-ja-wav-1.6.1.tar.gz

あとは例文と同じように、

exten => 0001,n,PlayBack(/var/lib/asterisk/sounds/ja/privacy-unident)

を使うと、『非通知なのでかけ直して~』という日本語が流れます。

 ちょっとだけ留守番電話

本来、留守番電話は録音はもちろんの事、再生や削除も電話機から出来るようになっていますが、今回は外線着信に対して電話が取れないときに、決まったメッセージを流し、その後、受け取ったメッセージを録音して、それを指定のメールアドレスへ送信するという、とても簡単というか簡略された留守番電話の設定です。

設定を変更するファイルは2つです。

さほど説明はいらないと思いますが…
音声ファイルのフォーマットは wav49 が良いです。ただ、ファイルサイズは程々で良いのですが、音質はお世辞にも良いとは言えません。音質にこだわるなら wav を指定するのはありです。ただし、ファイルサイズが wav49 の数倍になりますので、お気を付け下さい。
※ wav にすると16秒録音で260KBになりました。

デフォルトの設定だと、送られてくる電子メールの中身が英語になります。

Dear lonnie:

Just wanted to let you know you were just left a 0:16 long message (number 1) in mailbox 500 from 0345208224, on Thursday, June 13, 2019 at 10:04:52 AM so you might want to check it when you get a chance. Thanks!

–Asterisk

文面を日本語化したい場合には、[general] の charset を UTF-8 にして、emailbody とか emaildateformat とかの設定をごにょごにょすると幸せになれます。

今回の例では、外線着信後の留守録は500番固定で設定し、電子メールを送信後は録音ファイルをサーバから消去します。
ですので、Asterisk が動いているサーバには録音ファイルは残りません。
※録音ファイルは /var/spool/asterisk/voicemail/default/500/INBOX に保存されるのですが、この設定例だと残らないのでいつも空っぽです。

次に extensions.conf の設定例です。

ここでは、/var/lib/asterisk/voice/intro.wav に、『ご用の方は発信音の後に…』というお決まりのメッセージを wav ファイルで置いておきます。

ポイントは、

exten => 00001,n,Voicemail(500,s)

この ,s を付けると、デフォルトの留守録メッセージ(Asteriskに標準で組み込まれている)を再生しません。つまり発信音と言われるぷーーという音だけ出して、録音状態になります。

また、上記の設定例では内線201を20秒呼び出しても応答がない(NOANSWER)か、話し中(BUSY)か、そもそも201に設定されている IP電話と通信できない(CHANUNAVAIL)の時に、[rusu] にジャンプして、留守録が起動するようになっています。

留守録が起動後、外線が切られると、voicemail.conf の [default] に設定したメールアドレスへ、録音ファイルを添付したメールが自動送信されます。

■営業時間外のアナウンス・どうしても電話取れないときの留守番電話・そして発信番合否通知の外線に対してのアナウンス… このくらい出来ていれば最低限お仕事で使えると思います。カスタムメッセージを作ってもらって Asterisk に設定すると楽しいですよ~ 是非、お試し下さい。