今回はAsteriskの設定について書いてみます。
環境は以下の通りです。
・Linux GNU 6.0 squeeze
・kernel 2.6.32-35squeeze2
・asterisk 1.6.2.9-2+squeeze3
・ITSP:アジルフォン
お題はSIPをつかった外線着信の鳴り分けです。
つまり、外線番号を複数持っている場合、着信した外線番号によって動作するextensionsを使い分けるという動作の記述方法です。
※以下の方法はアジルフォンのWebサイトにはサンプルとして載っていません。
→サンプル通りに作ると、鳴り分けが出来ないので注意が必要です。
まずはsip.confですが、レジスト部分がサンプルとは違います。
※voip00.agile.ne.jpというサーバはありません。各自、お使いのサーバ名に読み替えてください。
※UIDとパスワードも同様です。
sip.confの一部を抜粋
実際に動かしてみるとわかるのですが、外線着信時にアジルフォンのSIPサーバからは、いつも決まったUIDしか通知されてきません。設定上は、DIDは各々違ったUIDに割り当てられているのですが、どうやらSIPトランクのような動作をしているようです。
つまり、着信時のUIDによる切り替えはうまくいきませから、UIDといっしょに通知されるextension番号を使って振り分けを行います。
extensions.confの一部を抜粋
[general]
writeprotect=no
priorityjumping=no
[inbound]
exten => 000111111,1,Set(CALLERID(num)=${CALLERID(name)})
exten => 000111111,n,NoOp(${CALLERID(num)})
exten => 000111111,n,Dial(SIP/201,,t)
exten => 000111111,n,Hangup
exten => 000222222,1,Set(CALLERID(num)=${CALLERID(name)})
exten => 000222222,n,NoOp(${CALLERID(num)})
exten => 000222222,n,Dial(SIP/202,,t)
exten => 000222222,n,Hangup
ポイントは、sip.confの[000111111]と[000222222]のcontext名を一緒にしておくこと、そして、振り分けの記述はそのcontext(上記の例では[inbound])内にすべて記述する点です。
※上記例では000111111に設定してある外線番号で着信すると内線201が鳴り、000222222に設定してある外線番号で着信すると内線202の電話が鳴ります。
外線発信は従来通り、
exten => _0.,1,Set(CALLERID(num)=000111111)
exten => _0.,n,Dial(SIP/${EXTEN}@000111111,120,T)
exten => _0.,n,Dial(SIP/${EXTEN}@000222222,120,T)
と、2行並べて書いておくと、自動的に空いてる回線から発信されます。