4,721
回編集
差分
→内線処理部
さて、本題に戻りましょう。上記の処理が何をしているかというと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が空ならばwhoamiは内線が登録されているとMY_EXTENという変数に内線番号をセットします。もしエンドポイントに対応する内線が登録されていない場合には値はありません。内線番号が登録されていない電話機からは発信させないようにMY_EXTENが空ならば"nogo"にジャンプします。"nogo"って何?と思われたでしょう。この"nogo"は内線処理部の最後の個所
exten => _Z.,n(nogo),Hangup
ここです。プライオリティの個所にカッコ書きで書かれているのはラベルで同一context、exten内であればそのラベルが設定されているpriorityにジャンプします。コンテキストをまたいでジャンプする場合には先ほどのGotoのようにcontext,exten,prioritのかたちでジャンプさせます。
=WIP=