続・もっと安くする裏ワザ

前のページでInternetcallsを紹介したわけですが、これを使うにはスマートフォンにSIP電話アプリを入れてInternetcallsなどを登録すれば良いわけです。
SIP電話アプリによっては前のページで紹介したようなサービスが予め登録されたものもありIDとパスワードを入れるだけで簡単に利用できます。android用はMobileVOIP Cheap Callsなど。もちろんandroidの標準SIPでも行けます。

とはいえ、既にAsteriskも用意したのですからそれを使わないのは勿体無いです。

AsteriskでInternetcallsを使えるようにする

sip.confに追加
;Internetcalls
register => ID:Password@sip.internetcalls.com/s

[sip.internetcalls.com]
type=friend
username=ID
fromuser=電話番号
secret=Password
;fromdomain=sip.internetcalls.com
host=sip.internetcalls.com
insecure=invite
context=inbound
port=5060
transport=udp
nat=no

IDとPasswordの部分にはInternetcalls(または類似のサービス)用のものを入れます。

extensions.confに追加
INTERNUM=電話番号

;Internetcalls Dial-out
exten => _81.,1,Set(CALLERID(num)=${INTERNUM})
exten => _81.,n,Set(CALLERID(name)=${INTERNUM})
exten => _81.,n,Dial(SIP/${EXTEN}@sip.internetcalls.com,60,Tr)
exten => _81.,n,Hangup

[inbound]
exten => s,1,Set(DESTNUM=${SIP_HEADER(To)})
exten => s,n,NoOp(${DESTNUM})
exten => s,n,Set(DESTNUM=${DESTNUM:1:<font color="red">11</font>})
exten => s,n,NoOp(${DESTNUM})
exten => s,n,Goto(${DESTNUM},1)

exten => 電話番号,1,Dial(SIP/6200,60,tT)
exten => 電話番号,n,Hangup
電話をかけた相手に自分の番号を通知するにはInternetcalls(または類似のサービス)で電話番号登録する必要があります。
上の赤字の「電話番号」の部分にはInternetcallsに登録した自分の国際電話番号を入れます。
国際電話番号は例えば固定電話で03-1234-5678なら81-3-1234-5678なのでハイフンを除いて入力します。携帯電話で090-1234-5678なら81-90-1234-5678なのでハイフンを除いて入力します。
Internetcallsで電話番号を登録するにはInternetcallsのウェブフォームに自分の国際電話番号を入力しコールバックを待ちます。かかって来た電話を受けると英語の合成音声で数字を5,6桁程度を一方的に喋って切れます。Internetcallsのは結構早く喋るので英語慣れしていない人は聞き取るのが少し難しいかもしれません。
聞き取った数字をウェブフォームに入力すると電話番号の登録が完了となります。
なりすまし登録防止の為に通知番号の登録はこのような仕組みになっているようです。

ちなみに上の赤字の電話番号部分を詐称した番号にしても実際にはInternetcallsに登録した番号が通知されますので、仮に詐称するつもりでなく国際電話番号でない日本国内用の0から始まる番号を入力しても無駄です。

と、いうわけで、Internetcallsでは通知番号が国際電話番号になります。ですので、Internetcalls経由で日本の知り合いに電話すると日本の国際番号81が頭に付いた番号で通知されることになります。

ちなみに着信だけでなく、発信も国際電話番号のみです。例えば大阪の固定電話06-1234-5678なら81-6-1234-5678にかける必要があります。

この手の海外の格安電話サービスの最大の難点はこの国際電話扱いなところでしょうね。

次はAsteriskでfail2banです。