カテゴリー
Asterisk IP-PBX

Asterisk extensions.conf ‘same =>’ オペレータ

Extensions.conf  のダイアルプランの記述が少し楽になる ‘same =>’ オペレータがあります。また、ダイアルプランが見やすくなるので個人的に気に入っています。

簡単な例として、こちらで紹介したダイアルプランを same => オペレータで記述すると:

[internal]
; exten => name,priority,application
; ex. exten => 123,1,Answer()
exten => 1000,1,Answer()
 same => 2,Playback(hello-world)
 same => 3,Hangup()

となります。簡単なのであまりメリットを感じられないかもしれません。

もう少し書いてみましょう。

今度はこちらの例を書き直すと:

[incoming]
exten => 8005,1,NoOp(${CALLERID(num)})
; 営業時間外
 same => n,GotoIfTime(18:00-08:59,mon-fri,*,*?closed)
 same => n,GotoIfTime(00:00-23:59,sat-sun,*,*?closed)
; 営業中は「Hello world」を再生
 same => n,Answer()
 same => n,Wait(1)
 same => n,Playback(hello-world)
 same => n,Wait(1)
 same => n,Hangup()
; 営業時間外は「I'm sorry」を再生
 same => n(closed),Answer()
 same => n,Wait(1)
 same => n,PlayBack(im-sorry)
 same => n,Wait(1)
 same => n,Hangup()

だいぶコードがすっきりして見えます。

 

カテゴリー
Asterisk IP-PBX

Asterisk sip.conf コンフィグ テンプレート

久しぶりに Asterisk 1.8 系をインストールして sip.conf と extensions.conf 定義を見直ししていました。あらためて make samples コマンドで作成された sip.conf を開いて詳細な設定を勉強していて便利だなと思ったテンプレートを紹介します。

以下の [basic-options](!) のように “(!)” をつけると設定オプションをテンプレートとして定義できます。設定の継承も出来て [kx-ut136n-options](!,basic-options) のように (!,basic-options) をつけると basic-options で定義された内容を継承しつつ、新たなオプションを追加設定したテンプレートを定義することができます。

以下の例では:

201 電話機は basic-options の設定に sendrpid=pai を追加
205 電話機は basic-options の設定の context を incoming にオーバーライド

しています。

[general]
context=default
udpbindaddr=0.0.0.0
allowguest=no
language=ja
rtptimeout=60
rtpholdtimeout=300

[basic-options](!)                    ; a template
        secret=1234
        type=friend
        host=dynamic
        canreinvite=no
        context=internal

[kx-ut136n-options](!,basic-options)  ; panasonic KX-UT136N options
        sendrpid=pai

[my-codecs](!)                        ; a template for my preferred codecs
        disallow=all
        allow=ulaw
        allow=alaw
        allow=ilbc
        allow=g729
        allow=gsm
        allow=g723

[201](kx-ut136n-options,my-codecs)
[202](basic-options,my-codecs)
[203](basic-options,my-codecs)
[204](basic-options,my-codecs)
[205](basic-options,my-codecs)
        context=incoming

これで、いろいろな SIP 電話機に柔軟対応が簡単に設定できます。

カテゴリー
Asterisk IP-PBX

Asterisk バージョン

オープンソース IP-PBX の Asterisk にはいくつかのバージョンがあります。私も 1.4.X をしばらく使用していましたが、最近は 1.8.X を使うようにしています。

Asterisk には、LTS (Long Term Support)リリースという4年間フルサポートが提供されているリリース版があります。これはフルサポート終了後も EOL (End Of Life) までの間セキュリティ修正が行われるものです。特に新機能を率先して使う必要がなければお勧めできるリリースです。

例えば、Asterisk 1.8.X は、LTS で、2010-10-21 にリリースされて、2014-10-21 まではフルサポートで、それ以降はセキュリティのみの修正が行われ 2015-10-21 で製品のライフタイムとなっています。

詳細は、https://wiki.asterisk.org/wiki/display/AST/Asterisk+Versionsです。(英語)

カテゴリー
Asterisk IP-PBX

Asterisk 時間帯による電話受付対応 (GotoIfTime)

夏季休暇や年末年始などの長期休暇中にかかってきた電話に音声で案内を出すというのを、Asterisk の extentions.conf でテストしてみました。GotoIfTime 関数がこれを簡単に実現してくれます。

下記は、8005 をダイアルした例ですが、外線着信があった時にこの判定をすれば営業時間外は指定のメッセージを再生するようにできます。

--- extensions.conf 抜粋 ---
...

GOTOIFTIME=8005                 ; GotoIfTime test

...

; GotoIfTime test
exten => ${GOTOIFTIME},1,NoOp(${CALLERID(num)})
; 12/29 - 1/6 は営業時間外
exten => ${GOTOIFTIME},n,GotoIfTime(00:00-23:59,mon-sun,29-31,dec?closed)
exten => ${GOTOIFTIME},n,GotoIfTime(00:00-23:59,mon-sun,1-6,jan?closed)
; 営業中は「Hello world」を再生
exten => ${GOTOIFTIME},n,Answer()
exten => ${GOTOIFTIME},n,Wait(1)
exten => ${GOTOIFTIME},n,Playback(hello-world)
exten => ${GOTOIFTIME},n,Wait(1)
exten => ${GOTOIFTIME},n,Hangup()
; 営業時間外は「I'm sorry」を再生
exten => ${GOTOIFTIME},n(closed),Answer()
exten => ${GOTOIFTIME},n,Wait(1)
exten => ${GOTOIFTIME},n,PlayBack(im-sorry)
exten => ${GOTOIFTIME},n,Wait(1)
exten => ${GOTOIFTIME},n,Hangup()

Amazon.co.jp ウィジェット
カテゴリー
Asterisk IP-PBX

Asterisk の無料オンライン ブック

邦題で「Asterisk テレフォニーの未来」という Asterisk の本がオライリーからでています。

この元本(英語)が無料のオンラインブックとして公開されています。

https://www.asteriskdocs.org/

上記のページの中ほどに、

For Asterisk 1.8

複数のHTML版か単一ページのHTML版をクリックするとコンテンツを見ることができます。

// Amazon.co.jp ウィジェット