Asterisk e164.org

提供: VoIP-Info.jp
移動先: 案内検索

e164.org

無料ENUMサービス
http://www.e164.org

  • 日本語版サイト(2006年4月20日ごろ発表)
http://www.e164.org/?lang=ja_JP

サーバ(Asterisk)で登録すると100個番号が割り当てられる。

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

までどうぞ。日本語音声デモと同じ自動音声が出ます。