PR

[Asterisk] FreePBX で設定する

AsteriskNow に搭載されている FreePBX を使って Asterisk を設定していく。

基本概念

簡単に概念を書くと次のようになるが、それ以外にできないことはないほどあらゆる機能を持っている。

Extention

Extention は内線について定義する。

1人のユーザが複数の端末を使ってもよく、ID と パスワードも定義する。日本の一般的な電話であれば誰もが自由に使えるようになっている。これを「端末ベース」とすれば、Asterisk は「ユーザベース」になるだろうか。

Trunk

Trunk は外部回線との接続を定義する。

例えばIP 電話や、050 電話番号がもらえる、などと言われるものはSIP サーバーから割り当てられている情報がり、電話回線を必要としないのに通話ができる。通常の電話機とIP 電話アダプタやターミナルアダプタ(TA)を繋げ、さらにインターネットモデムなどに接続することで既存の電話機を使えるようにしている。

これらの機能をAsterisk に行わせることができ、様々な付加機能も利用できるようになる。

(FTTH や ADSL 、 ISDN など外見だけで見れば電話回線を使っているように見えるが、詳しく見るとそうではないことがわかる。また、FTTH とそれ以外ではベースとなるものがこれまでと逆転している事もわかる。それらが分かってくるとさらに面白くなるのだが、ここでは割愛する。)

Inbound

Inbound は着信を定義し、合致した発信であれば紐付けされたTrunk などに渡す。

Outbound

Outbound は発信を定義し、合致した着信であれば紐付けされた Extention などに渡す。

まとめ

基本の基本で動作を解説するなら以下のようになるだろうか。

※PSTN は一般公衆回線を意味する。対応するハードウェアを使って直接収容することもできる。
※SIP:UDP 5060、 UDP 10000-20000 をデフォルトで使う
※IAX:UDP 4569

着信

PSTN < 外部のSIP サーバー < Inbound(着信定義) < Extention (内線) < 端末

発信

端末 > Extention (内線) > Outbound(外線定義) > Trunk (外線) > 外部のSIP サーバー > PSTN

スポンサードリンク

主な設定ファイル

※FreePBX の場合、FreePBX が設定ファイルを管理するのでユーザが編集するファイルは通常のAsterisk 解説と異なるので注意する
※general、 global は特別なコンテクスト

asterisk.conf

Asterisk の設定ファイル。

  • languageprefix=yes が定義されている

extensions.conf

  • extensions_additional.conf
  • extensions_custom.conf (編集可)
  • extensions_override_freepbx.conf (編集可)
  • ダイヤルプランの設定ファイル
  • インバウンド、アウトバウンドの定義

[incoming] 着信

  1. 着信を取る
  2. こんにちはを再生する
  3. 切断する

[outbound-local]

  1. 0XXXXXXXXX

sip.conf

  • sip_additional.conf
  • sip_custom.conf (編集可)
  • sip_custom_post.conf (編集可)
  • sip_general_additional.conf
  • sip_general_custom.conf (編集可)
  • sip_nat.conf (編集可)
  • sip_notify_additional.conf
  • sip_notify.conf
  • sip_notify_custom.conf (編集可)
  • sip_registrations.conf
  • sip_registrations_custom.conf (編集可)

[general] 全般設定

  • context=default
  • srvlookup=yes

[2000] 内線番号

  • type=friend
    user = 着信
    peer = 発信
    friend = 両方
  • secret=password2000
    パスワード
  • quanty=yes もしくは数値
    レイテンシー(遅延)2000msec/2sec 以内なら問題ない範囲らしい。
  • net=yes
    ルータ等の内側にあるなど。
  • host =dynamic
    static、接続先IP アドレスやFQDN
  • canreinvite=no
    保留関連設定
  • context=interal
    この端末が何をして良いかなどの定義

[interal]

  1. 611 をコールしたらエコーテスト
    exten=>611, 1, Echo()

[Feb 23 02:48:05] WARNING[3521]: app_dial.c:1590 dial_exec_full: Dial requires an argument (technology/number)

[Feb 23 02:49:00] NOTICE[2220]: chan_sip.c:20314 handle_request_invite: Call from ‘2000’ to extension ‘********’ rejected because extension not found in context ‘test-local’.

[Feb 23 18:37:22] WARNING[5574]: app_dial.c:1759 dial_exec_full: Unable to create channel of type ‘SIP’ (cause 20 – Unknown)

[Feb 23 18:36:22] NOTICE[5535]: chan_sip.c:20314 handle_request_invite: Call from ‘2000’ to extension ‘2001’ rejected because extension not found in context ‘default’.

[Feb 23 18:46:54] WARNING[5620]: file.c:650 ast_openstream_full: File jp-desu does not exist in any format

[Feb 23 18:46:54] WARNING[5620]: file.c:956 ast_streamfile: Unable to open jp-desu (format 0x4 (ulaw)): No such file or directory

[Feb 23 18:46:54] WARNING[5620]: app_playback.c:471 playback_exec: ast_streamfile failed on SIP/2000-00000002 for jp-desu

[Feb 23 19:11:22] WARNING[5735]: app_voicemail.c:5296 leave_voicemail: No entry in voicemail config file for ‘2001’

[Feb 23 19:36:05] WARNING[5777]: acl.c:393 ast_get_ip_or_srv: Unable to lookup ‘2001’

[Feb 23 19:36:05] WARNING[5777]: chan_iax2.c:4384 create_addr: No such host: 2001

[Feb 23 19:36:05] WARNING[5777]: app_dial.c:1759 dial_exec_full: Unable to create channel of type ‘IAX2’ (cause 20 – Unknown)

[Feb 23 19:43:13] WARNING[5794]: chan_sip.c:5400 create_addr: No such host: 2003

[Feb 24 04:17:50] WARNING[5716]: chan_sip.c:25441 reload_config: Section ‘internal’ lacks type

構文

exten=> name, priority, application()

アプリケーション(抜粋)

Answer()

  • 鳴動中の呼に応答
  • 引数なし

Playback()

  • サウンドファイル再生
  • ユーザーの入力を無視
  • 引数はファイル名(拡張子なし)

Hangup()

  • 切断
  • 引数なし

Background()

  • Playback と同様、ただし入力を受け付ける

Geto()

  • 指定先に飛ぶ
  • 引数が1つ:現在のエクステンション内のプライオリティ
  • 引数が2つ:現在のエクステンションで次に行くべきエクステンションとプライオリティ
  • 引数が3つ:Goto(incoming, s, 1)

Dial()

  • Dial(SIP/2000, , r) としたら、SIP という技術で2000番を呼び出し、rで明示的に鳴動させる

参考文献

  • Japanese translation for Windows v1.4 – Skype Community
  • 設定相談 – VoIP-Info.jp
  • http://www.agile.ne.jp/pdf/asterisk.pdf
  • 環境 TrixBox その6 – 川畑眼科医院
  • TrixBoxCE 2.8.0.4 とRT200KIの接続について – VoIP-Info.jp BBS
  • VoIP-Info.jp BBS – 掲示板の印刷 [3202]

コメント