お問い合わせ

ブログ

これまでに経験してきたプロジェクトで気になる技術の情報を紹介していきます。

Asteriskに留守番電話機能(ボイスメール)を設定

okuda Okuda 2 months

Asteriskに留守番電話機能(ボイスメール)を設定します。
メールの送信は行わずに、端末から確認できるようにします。

  • 内線番号は「2001」、「2002」を設定
  • ボイスメールボックスは各内線番号ごとに設ける
  • 確認する場合は「500」にコールする
  • パスワードは使用しない

上記の要件でせていしていきます。

pjsip.confの編集

[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0:15060
external_media_address = xx.xxx.xxx.xxx
external_signaling_address = xx.xxx.xxx.xxx
local_net = yyy.yy.yy.yyy/255.255.0.0

[2001]
type = aor
max_contacts=1
remove_existing=yes

[2001]
type = auth
username = 2001
password = 2001

[2001]
type = endpoint
transport = transport-udp
context = default
disallow = all
allow = ulaw
aors = 2001
direct_media = no

[2002]
type = aor
max_contacts=1
remove_existing=yes

[2002]
type = auth
username = 2002
password = 2002

[2002]
type = endpoint
transport = transport-udp
context = default
disallow = all
allow = ulaw
aors =2002
direct_media = no

voicemail.confの編集

メールボックス定義には要件にあるように「2001」、「2002」を設定します。
パスワードは一応設定しておいてください。

[general]
;ボイスメールを録音する場合のフォーマットを記述します。
;この例ではwav49,gsm,wavの3種類で録音が行われます(ファイルは3つできます)。
;一般的な使用であればwav49だけでも問題ありません。
format=wav49|gsm|wav

;電子メール添付時の送信元名を指定します。
;serveremail=asterisk

;yes/noで指定し、yesを指定すると電子メールに音声ファイルを添付して送信します。
attach=no

;メッセージの最大数(標準100、最大9999)
maxmsg=100

;録音する最大秒数を指定します。
maxsecs=120

;再生時の早送り間隔を指定します。
;skipms=3000

;秒単位の最大グリーティング時間
maxgreet=60

;この時間以上、無音が続くと録音終了とみなします。
maxsilence=10

;無音検出の閾値を指定します。
silencethreshold=128

;メールボックスへのログインを、この回数を越えて失敗すると回線を切ります。
maxlogins=3

;メールを送信する際のコマンドを指定します。
;mailcmd=/usr/sbin/sendmail -t

;--------------------
; タイムゾーンの定義
;--------------------
[zonemessages]
;タイムゾーンによって再生するメッセージの"書式"も定義できます
;eastern=America/New_York|'vm-received' Q 'digits/at' IMp
;central=America/Chicago|'vm-received' Q 'digits/at' IMp
;central24=America/Chicago|'vm-received' q 'digits/at' H 'digits/hundred' M 'hour'
;japan=Japan|Q PHM 'jp-ni' 'vm-received'
japan=Asia/Tokyo|Q PHM 'jp-ni' 'vm-received'

;--------------------
; メールボックス定義
;--------------------
[default]
;メールボックス番号 => パスワード,ユーザ名,メールアドレス,ページャ,ゾーン情報
;パスワード以外は省略
2001 => 1111
2002 => 1111

extensions.confの編集

Voicemail([メールボックスナンバー], [フラグ])でボイスメールに繋がります。
VoicemailMain([メールボックスナンバー], [フラグ])でボイスメールボックスに繋がります。

VoicemailMainにフラグ「s」をつけるとパスワードを省略できるようです。

フラグは省略可能 種類は

フラグ 説明
なし 固定メッセージを再生する。
s 固定メッセージをスキップして再生しない。
su ユーザ固有の不在メッセージを再生する。
u 固有の不在メッセージを再生した後、固定メッセージを再生する
sb ユーザ固有の話中メッセージを再生する。
b ユーザ固有の話中メッセージを再生した後、固定メッセージを再生する

となっています。

extensions.conf

[general]
writeprotect = no

[globals]

;-------------------------
; default
;-------------------------
[default]

exten => _20XX,1,NoOp(内線呼出)
same => n,NoOp(${DIALSTATUS})
;着信から3秒後にボイスメール
same => n,Dial(PJSIP/${EXTEN},3,r)
same => n,Answer
;留守電に繋がったことがわかるように着信音を出す
same => n,Ringing
;アナウンスが切れるのですこし待つ
same => n,Wait(1)
;EXTENの番号のメールボックス
same => n,VoiceMail(${EXTEN})
;ボイスメールのコンテキストを指定する場合は「@」でつないで書く
;デフォルトの場合は省略できる
;same => n,VoiceMail(${EXTEN}@default)
;アナウンスを省略する場合は「s」をつける
;same => n,VoiceMail(${EXTEN}@default,s)

same => n,Hangup

exten => 500,1,NoOp(★★★★★★${CALLERID(all)})
;留守電に繋がったことがわかるように着信音を出す
same => n,Ringing
;アナウンスが切れるのですこし待つ
same => n,Wait(1)
;「s」をつけるとパスワードが省かれる
exten => 500,n,VoiceMailMain(${CALLERID(num)},s)
exten => 500,n,Hangup

設定を反映

systemctl asterisk restart

CLIで確認

asterisk -cvvvvr

voicemail show users
#output
Context    Mbox  User                      Zone       NewMsg
default    2001  Username                                  1
default    2002  Username                                  0

確認手順

留守電にメッセージを残す

  1. 2001 が 2002 に発信
  2. 2002 が3秒間応答なし
  3. ボイスメールにつながるのでアナウンスのあとにメッセージをいれてハングアップ

留守電を確認

  1. 2002 が 500 に発信
  2. ボイスメールボックスに繋がる
  3. アナウンスに従って操作

音声ファイルの保存場所
/var/spool/asterisk/voicemail/default/2002/INBOX
上記の場合ここに作成される。

Asteriskに留守番電話機能(ボイスメール)を設定 2021-08-24 08:55:45

コメントはありません。

4518

お気軽に
お問い合わせください。

お問い合わせ