5. ダイヤルプランの作成

SIP電話機の設定が完了したら、ダイアルプランを作成します。
まずは、簡単なダイアルプランを作成してみます。

ダイアルプランの基本型は次のようになります。

[internal]
exten => 1000,1,Answer()
exten => 1000,2,何かする
exten => 1000,3,次の何かする
exten => 1000,4,別の何かする
exten => 1000,5,Hangup()

コンテクスト

ダイアルプランはコンテクストと呼ばれるセクションで、エクステンション (exten =>) の集合に名前をつけたものです。
上記の例では、internal というコンテクストになります。

エクステンションとプライオリティ

エクステンションは、チャネルの着信や、ダイアルされた数字によって起動される命令です。

上記の例では、1000 にダイアルすると、

  1. 応答して、
  2. 何かする、
  3. 次の何かをする、
  4. 別の何かをする、
  5. 切断

という命令が実行されるということです。

また、各エクステンションはプライオリティと呼ばれる番号が付けられます。 上記の例では 1 – 5 まで順番につけています。

アプリケーション

上記の例では、 Answer() と Hangup() というアプリケーションが使用されています。
それぞれ、呼に応答・切断という基本的な機能を提供します。

これらは、すでに Asterisk に用意されています。他にもアプリケーションありますし、自分で作成することさえも可能です。

ダイヤルプランの作成

ダイヤルプラン は /etc/asterisk/extensions.conf に定義します。
すでにサンプルでインストールされていますので、extensions.conf.sample などように名前を変更しておきます。

ダイヤルプランの簡単例として、1000 にダイアルすると、応答して「hello world」 とアナウンスして切断するというものを作成します。

以下のとおりに、extensions.conf を作成し、保存します。

[general]
static=yes
writeprotect=no

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

ダイヤルプランが作成できたら、Asterisk のコンソールから dialplan reload コマンドを実行して、読み込みをさせます。

localhost*CLI> dialplan reload

Dialplan reloaded.
== Parsing '/etc/asterisk/extensions.conf': Found
-- Registered extension context 'internal'
-- Added extension '1000' priority 1 to internal
-- Added extension '1000' priority 2 to internal
-- Added extension '1000' priority 3 to internal
== Parsing '/etc/asterisk/users.conf': Found
localhost*CLI>

/etc/asterisk/extensions.conf が解析されて、extension ‘1000’ が追加されたのが、確認できます。

ダイヤルプランの実行

では、X-Lite ソフトフォンから 1000 へダイアルしてみましょう。 1000 を入力して「call」ボタンをクリックします。

 

 

 

 

 

 

 

 

すると、英語で 「Hello world 」と言うのが聞こえるはずです。

また、Asterisk コンソールには次のように表示がされているはずです。

-- Executing [1000@internal:1] Answer("SIP/2001-00000001", "") in new stack
-- Executing [1000@internal:2] Playback("SIP/2001-00000001", "hello-world") in new stack
-- <SIP/2001-00000001> Playing 'hello-world' (language 'en')
-- Executing [1000@internal:3] Hangup("SIP/2001-00000001", "") in new stack
== Spawn extension (internal, 1000, 3) exited non-zero on 'SIP/2001-00000001'
localhost*CLI>

internal コンテキストのエクステンション 1000 が実行されて、
SIP電話機 2001 へ応答して、”hello-world” を再生して、切断が実行されているのが確認できます。

最後に

非常に簡単な例でしたが、Asterisk のビルドからインストール、SIP設定、ダイヤルプランの作成と実行をしてきました。

アプリケーションは、Perl, PHP などのスクリプトで作成することもできますので、
データベースを検索してなど電話から顧客データベースを検索するなど応用することもできます。

システムの付加価値としていろいろ検討できますね。