差分

移動先: 案内検索

Asterisk 20 サンプル設定ファイル 解説

3,436 バイト追加, 2024年7月24日 (水)
WIP
内線番号として1~9で始まる番号はすべて内線として扱うという意味になります。
<br>
続いて以下の処理
;SIPメッセージングの場合の処理
exten => _X.,n,Set(MTARGET=${EXTEN})
exten => _X.,n,GotoIf($["${CHANNEL(name)}"="Message/ast_msg_queue"]?sipmsg,s,1)
この部分はSIPを使ったメッセージング用です。SIPのメッセージを受け取った場合にはファンクション、CHANNEL()の'name'エントリが Message/ast_msg_queueになるので、もしその文字列であったならばGoto(GotoIf)でコンテキストがsipmsg、extenがs、プライオリティが1の場所にジャンプします。メッセージング処理については後で解説します。<br>
<br>
次の部分はちょっとしたポイントです。
exten => _Z.,n,Gosub(sub-whoami,s,1)
;内線番号が割り当たってなければ発信させない
exten => _Z.,n,GotoIf($["${MY_EXTEN}"=""]?nogo)
このダイヤルプランでの設計は『内線を抽象化』することにあります。Asteriskのサンプル設定でよくあるのはエンドポイントと内線番号をイコールにするものですがこの方法は処理が簡単になる反面、内線番号の付けなおしなどが面倒になります。ある電話機の設定が例えばエンドポイント名2001で内線2001だった場合にこの内線を2010にしたいといった場合にはエンドポイントの設定を2010に修正、つまりは電話機の設定を変更しなくてはいけなくなります。<br>
これに対して抽象化されている内線ではエンドポイント名(設定)は常に同じものとし、内線番号とエンドポイントは『別な』方法で紐付けを行います。<br>
さて、本題に戻りましょう。上記の処理が何をしているかというとGosubによってサブルーチンsub-whoamiを呼び出しています。ここでお気付きかもしれませんが、AsteriskにおけるGotoやGosubは常にAsteriskのextenの書式で行われるため、Gosub(context,exten,priority)のかたちで記述します。要するにプログラミング言語の一種なのですがAsteriskの書式ではジャンプしたり呼び出すにはcontext,exten,priorityのかたちとなるわけです。<br>
sub-whoamiは後で説明しますが、内線が抽象化されていることにより電話機自体は自分の番号を「知りません」このためAsteriskに登録されているエンドポイントと内線番号を参照してエンドポイント名から内線番号を求めるという処理をsub-whoamiが行っています。<br>
sub-whoamiは内線が登録されているとMY_EXTENという変数に内線番号をセットします。もしエンドポイントに対応する内線が登録されている場合には値はありません。内線番号が登録されていない電話機からは発信させないように、もしMY_EXTENが空ならば"nogo"にジャンプします。"nogo"って何?と思われたでしょう。この"nogo"は内線処理部の最後の個所
exten => _Z.,n(nogo),Hangup
ここです。プライオリティの個所にカッコ書きで書かれているのはラベルで同一context、exten内であればそのラベルが設定されているpriorityにジャンプします。コンテキストをまたいでジャンプする場合には先ほどのGotoのようにcontext,exten,prioritのかたちでジャンプさせます。
=WIP=

案内メニュー

VoIp-Info.jp

HP Directplus -HP公式オンラインストア-