Asterisk e164.org
目次
e164.org
Asterisk(1.2.6)の設定
サーバ登録で、かつ自サーバ側はIAXで接続する場合の例。https://www.e164.org/config.php?dp=Australian あたりを参考に。
- iax.conf
guestで接続可能なようにセクションを作成。着信コンテキストとして"enum-in"としてみた。
[guest] type=user context=enum-in
これに対応するextensions.confを以下のように。着信番号は自ホストに割り当てられた番号を指定する(####の部分。末尾のXXは自サーバに割り当てられる範囲)。
[enum-in] exten => _88299######XX,1,Dial(SIP/...) <-着信させたい処理 exten => _88299######XX,2,Hangup
着信する番号によって処理を変えたければそれぞれの番号に対して記述すれ ばOK。IAXでの着呼は guest@your-server/exten の形でやってくるので着信する番号による処理が必要。
もし03番号(+81-3)等でENUM登録しているのであれば
exten => 813xxxxxxxx,1,Dial...
のようなエントリを作成しておく。
- 発信側設定
上記URLのマクロをもとに少し改造。元のマクロではENUMにマッチしない番号は普通に国際ダイアルするように作成されているが、ここではENUMに登録されているであろう、882番号だけを対象としてみた。
まずは882でダイアルするextenを作成。
exten => _882.,1,Macro(enum-call,${EXTEN})
これに対応するマクロは以下の通り
[macro-enum-call] exten => s,1,Set(CALLERID(num)=88299xxxxxxxxxxx) exten => s,2,Set(count=${ENUMLOOKUP(+${ARG1},ALL,c,e164.org)}|counter=0) exten => s,n(start),GotoIf($["${counter}" >= "${count}"]?hangup) exten => s,n,Set(counter=$[${counter}+1]) exten => s,n,Set(ENUM=${ENUMLOOKUP(+${ARG1},ALL,${counter},e164.org)}) exten => s,n,GotoIf($["${LEN(${ENUM})}" = "0" ]?continue) exten => s,n,GotoIf($["${ENUM:0:3}" = "sip" ]?sipuri) exten => s,n,GotoIf($["${ENUM:0:3}" != "iax" ]?continue) exten => s,n,Set(DIALSTR=IAX2/${ENUM:5}) exten => s,n,Goto(dodial) exten => s,n(sipuri),Set(DIALSTR=SIP/${ENUM:4}) exten => s,n(dodial),Dial(${DIALSTR}|120) exten => s,n,GotoIf($[$["${DIALSTATUS}"="CHANUNAVAIL"]|$["${DIALSTATUS}"="CONGESTION"]]?continue:hangup) exten => s,n(continue),Goto(start) exten => s,n(hangup),NoOp(Dial failed due to ${DIALSTATUS}) exten => s,n,Hangup
e164.orgで見つからない場合に他を探すには上のURLの設定を参考に。要するにENMUで探して見つからなければ普通にダイアルアウトするなりすればいいかと。
Asterisk 1.4系マクロ
ENUMLOOKUP()の書式が変わっています。1.4系で使用する場合には以下を参考に。
[macro-enum-call] exten => s,1,Set(CALLERID(num)=88299xxxxxxxx) exten => s,2,Set(count=${ENUMLOOKUP(+${ARG1},ALL,c,,e164.org)}|counter=0) exten => s,n(start),GotoIf($["${counter}" >= "${count}"]?hangup) exten => s,n,Set(counter=$[${counter}+1]) exten => s,n,Set(ENUM=${ENUMLOOKUP(+${ARG1},ALL,,${counter},e164.org)}) exten => s,n,GotoIf($["${LEN(${ENUM})}" = "0" ]?continue) exten => s,n,GotoIf($["${ENUM:0:3}" = "sip" ]?sipuri) exten => s,n,GotoIf($["${ENUM:0:3}" != "iax" ]?continue) exten => s,n,Set(DIALSTR=IAX2/${ENUM:5}) exten => s,n,Goto(dodial) exten => s,n(sipuri),Set(DIALSTR=SIP/${ENUM:4}) exten => s,n(dodial),Dial(${DIALSTR}|120) exten => s,n,GotoIf($[$["${DIALSTATUS}"="CHANUNAVAIL"]|$["${DIALSTATUS}"="CONGES exten => s,n(continue),Goto(start) exten => s,n(hangup),NoOp(Dial failed due to ${DIALSTATUS}) exten => s,n,Hangup
テストコール
試しにどこかダイアルしてみたい人は
8829900328620
までどうぞ。日本語音声デモと同じ自動音声が出ます。