「Asterisk サンプル設定ファイル extensions.conf」の版間の差分
(師弟 を 指定へ変更) |
(変更を反映させる方法とCLIからの確認・テストを記載。) |
||
(同じ利用者による、間の1版が非表示) | |||
1行目: | 1行目: | ||
+ | 更なる例は[[Extension道場]]に記載があります。 | ||
+ | |||
==context== | ==context== | ||
extenの設定で一番わかりにくいのがこの、コンテキストだと思います。コンテキストとは<nowiki>' [ ] '</nowiki>で括られたセクションのことをいい、指定されたブロックをそのコンテキストと呼びます。 | extenの設定で一番わかりにくいのがこの、コンテキストだと思います。コンテキストとは<nowiki>' [ ] '</nowiki>で括られたセクションのことをいい、指定されたブロックをそのコンテキストと呼びます。 | ||
25行目: | 27行目: | ||
:アプリケーション・コマンドはモジュールのプレフィクスが app_ のものです。 | :アプリケーション・コマンドはモジュールのプレフィクスが app_ のものです。 | ||
:ファンクションはモジュールプレフィクスが func_ のものです。 | :ファンクションはモジュールプレフィクスが func_ のものです。 | ||
+ | |||
+ | ==same== | ||
+ | 前項extenでは、以降の例で見られるように「番号」を毎行書いていく必要があります。 | ||
+ | これは面倒であり、Asterisk 1.6.2以降では、sameを使うと省略できます。 | ||
+ | |||
+ | 例えば、4312番にダイヤルしたときの動作を次のように書いているとします。 | ||
+ | exten => 4312,1,NoOp() | ||
+ | exten => 4312,n,Dial(ダイヤル先) | ||
+ | exten => 4312,n,Hangup | ||
+ | |||
+ | sameを使うとこのように書けます。4312は最初のexten行のみに記載し、2行目以降はsameを使い、省略します。 | ||
+ | exten => 4312,1,NoOp() | ||
+ | same => n,Dial(ダイヤル先) | ||
+ | same => n,Hangup | ||
+ | |||
+ | 4312番への動作を書き終わり、別の番号への動作を書くときは、また「exten => 番号,1,処理」から書き始めます。 | ||
==generalセクション== | ==generalセクション== | ||
113行目: | 131行目: | ||
Defaults to INBOX | Defaults to INBOX | ||
VoicemailやMeetMeそれ自体の設定は、それぞれのアプリケーション用の設定ファイルで行います。voicemail.confやmeetme.confがそれです。 | VoicemailやMeetMeそれ自体の設定は、それぞれのアプリケーション用の設定ファイルで行います。voicemail.confやmeetme.confがそれです。 | ||
+ | |||
+ | ==反映とテスト== | ||
+ | extensions.confを変更したら、[[Asterisk CLI]]から次のコマンドを実行すると反映されます。 | ||
+ | dialplan reload | ||
+ | |||
+ | 現在読み込まれているextensions.confの内容(以下ダイヤルプランと言います)を見るには、Asterisk CLIで次のコマンドを実行します。 | ||
+ | dialplan show | ||
+ | |||
+ | パターンマッチの内容のテストとして、例えばusersコンテキストから6421にダイヤルした場合の動作を表示するには、次のコマンドを実行します。 | ||
+ | dialplan show 6421@users | ||
+ | この場合、真っ先にマッチするだろうパターン以外のダイヤルプランも表示されます。<br> | ||
+ | Hangup()やBusy()アプリケーションによって発信が終了されない場合、同じコンテキスト内の、真っ先にマッチするだろうパターンでないダイヤルプランの、探すべき優先度の行にも移っていく仕様なのでご注意ください。 | ||
+ | |||
+ | 参考:https://wiki.asterisk.org/wiki/display/AST/Pattern+Matching |
2022年11月28日 (月) 12:33時点における最新版
更なる例はExtension道場に記載があります。
目次
context
extenの設定で一番わかりにくいのがこの、コンテキストだと思います。コンテキストとは' [ ] 'で括られたセクションのことをいい、指定されたブロックをそのコンテキストと呼びます。
[incoming] ・ ・ incoming context ・ ・ [outgoing] ・ ・
この例では[incoming]で指定された部分から、次の[outgoing]の前までの部分が
incomingコンテキストとなります。
sip.confやiax.confなどでcontext=incomingが指定されていると、その相手(ITSPや電話機)からの着信や接続要求はこのコンテキスト内で行われます。
exten
extensions.confの基本的な書き方は次の通りです。
exten => 番号,プライオリティ,アプリケーション
番号
- これがextenそのもので、いわゆる内線番号に相当します。
プライオリティ
- 処理の順番を書きます
アプリケーション
- Asteriskのアプリケーション・コマンドを書きます
- この部分にはアプリケーション・コマンドだけでなくファンクションと呼ばれるもの、あるいはPBX組み込み機能を記述することができます。
- アプリケーション・コマンドはモジュールのプレフィクスが app_ のものです。
- ファンクションはモジュールプレフィクスが func_ のものです。
same
前項extenでは、以降の例で見られるように「番号」を毎行書いていく必要があります。 これは面倒であり、Asterisk 1.6.2以降では、sameを使うと省略できます。
例えば、4312番にダイヤルしたときの動作を次のように書いているとします。
exten => 4312,1,NoOp() exten => 4312,n,Dial(ダイヤル先) exten => 4312,n,Hangup
sameを使うとこのように書けます。4312は最初のexten行のみに記載し、2行目以降はsameを使い、省略します。
exten => 4312,1,NoOp() same => n,Dial(ダイヤル先) same => n,Hangup
4312番への動作を書き終わり、別の番号への動作を書くときは、また「exten => 番号,1,処理」から書き始めます。
generalセクション
その名の通り全般のオプション指定を行います。
[general] writeprotect=no priorityjumping=no
writeprotect
- CLIによるextenの変更を許可するか禁止するかを指定します。
priorityjumping
- Asterisk 1.0系との互換性のためのオプションです。n+101ジャンプを使うか使わないかを指定しますが、今後は使わない方向ですのでnoを指定しておきます。
globalsセクション
グローバル変数を設定します。設定値は見ての通りで、Asteriskでは
変数=値
で、変数が設定できます。
[globals] USEVOICEMAIL=YES SPEAKINGCLOCK=317 ECHOTEST=333 ;For Hikari Denwa MYNUMBER=03XXXXXXXX
defaultセクション
この部分がdefaultコンテキストです。context=defaultが指定されたものは、ここで処理が行われます。
全部を転記すると長くなりすぎるので、一部だけ解説します。
時報
; Speaking Clock exten => ${SPEAKINGCLOCK},1,Answer() exten => ${SPEAKINGCLOCK},n,Wait(1) exten => ${SPEAKINGCLOCK},n,Set(FutureTime=$[${EPOCH} + 5]) exten => ${SPEAKINGCLOCK},n,SayUnixTime(${FutureTime},Japan,YbdAPHM) exten => ${SPEAKINGCLOCK},n,Playback(jp-desu) exten => ${SPEAKINGCLOCK},n,playback(beep) exten => ${SPEAKINGCLOCK},n,Hangup
ここで変数の参照を行っています。内線番号は変数、SPEAKINGCLOCKに指定された番号になります。値を参照するには${ }で括ります。
プライオリティは本来、1,2,と順番に書くのですがAsterisk 1.2からオートインクリメントが可能になりnを記述しておくと自動的に+1するようになりました。
一斉呼び出し
; Ring 201-204 phones exten => 200,1,Dial(SIP/201&SIP/202&SIP/203&SIP/204&IAX2/201&IAX2/202&IAX2/203&IAX2/204) exten => 200,n,Hangup
この例はSIP/201またはIAX/201~SIP/204またはIAX/204を一斉に呼び出す方法を示しています。Dialコマンドでは&で区切り複数の相手を指定することで、一斉に呼び出すことができます。
個別呼び出し
; Local SIP/IAX phones 201-209 exten => _20Z,1,GotoIf($["${USEVOICEMAIL}"="YES"]?use-vm) exten => _20Z,n,Dial(SIP/${EXTEN}&IAX2/${EXTEN},,tT) exten => _20Z,n,Hangup exten => _20Z,n(use-vm),Dial(SIP/${EXTEN}&IAX2/${EXTEN},60,tTwW) exten => _20Z,n,NoOp(${DIALSTATUS}) exten => _20Z,n,GotoIf($["${DIALSTATUS}"="BUSY"]?vm-rec) exten => _20Z,n,GotoIf($["${DIALSTATUS}"="NOANSWER"]?vm-rec) exten => _20Z,n,GotoIf($["${DIALSTATUS}"="CHANUNAVAIL"]?vm-rec) exten => _20Z,n,Hangup exten => _20Z,n(vm-rec),Answer() exten => _20Z,n,Wait(1) exten => _20Z,n,Voicemail(${EXTEN}) exten => _20Z,n,Hangup
まずextenの部分では_20Zのように指定してありますが、これはパターンマッチを意味します。Zは1~9までの数字に合致します。これにより個々の電話機を呼び出すextenをひとつづつ記述するのではなく、これだけで一括記述できるわけです。
個別の内線番号を呼び出す設定ですが、ボイスメール使用可否の判断のため少し複雑になっています。
n(use-vm) はラベルです。Goto命令でジャンプさせる場合に、プライオリティの数字を指定するのではなくラベルを指定することができます。
DIALSTATUSなどの変数は、各アプリケーションコマンドがセットします。例えばDIALSTATUSはDial()がセットし、ダイヤルした結果をその変数に入れます。
アプリケーション実行
基本的に、Asteriskの機能はアプリケーションコマンドで実装されています。Dialもそのひとつですが、機能を「まとめて」ひとつのアプリケーションとなっている例としてはVoicemailやMeetMeがあります。
exten => 299,1,Answer() exten => 299,n,Wait(1) exten => 299,n,VoicemailMain(${CALLERID(num)},s) exten => 299,n,Hangup
例えばこの部分はボイスメールのメニュー、再生などを行うVoicemailMainというアプリケーションを実行しています。この際の引数として発信者番号(${CALLERID(num)})を使い、パスワード認証を行わない(s)という呼び出し方になっています。アプリケーションの引数とその意味を簡単に確認するには、CLIから core show application voicemailmainなどのようにアプリケーション名を指定します。
*CLI> core show application voicemailmain -= Info about application 'VoiceMailMain' =- [Synopsis] Check Voicemail messages [Description] VoiceMailMain([mailbox][@context][,options]): This application allows the calling party to check voicemail messages. A specific mailbox, and optional corresponding context, may be specified. If a mailbox is not provided, the calling party will be prompted to enter one. If a context is not specified, the 'default' context will be used. Options: p - Consider the mailbox parameter as a prefix to the mailbox that is entered by the caller. g(#) - Use the specified amount of gain when recording a voicemail message. The units are whole-number decibels (dB). s - Skip checking the passcode for the mailbox. a(#) - Skip folder prompt and go directly to folder specified. Defaults to INBOX
VoicemailやMeetMeそれ自体の設定は、それぞれのアプリケーション用の設定ファイルで行います。voicemail.confやmeetme.confがそれです。
反映とテスト
extensions.confを変更したら、Asterisk CLIから次のコマンドを実行すると反映されます。
dialplan reload
現在読み込まれているextensions.confの内容(以下ダイヤルプランと言います)を見るには、Asterisk CLIで次のコマンドを実行します。
dialplan show
パターンマッチの内容のテストとして、例えばusersコンテキストから6421にダイヤルした場合の動作を表示するには、次のコマンドを実行します。
dialplan show 6421@users
この場合、真っ先にマッチするだろうパターン以外のダイヤルプランも表示されます。
Hangup()やBusy()アプリケーションによって発信が終了されない場合、同じコンテキスト内の、真っ先にマッチするだろうパターンでないダイヤルプランの、探すべき優先度の行にも移っていく仕様なのでご注意ください。
参考:https://wiki.asterisk.org/wiki/display/AST/Pattern+Matching