2014年4月15日火曜日

FUSION IP-Phone SMARTをAsterisk経由で

FUSION IP-Phone SMARTのアカウントをIP-PBXとして名高いAsteriskの
外線発着信回線として利用してみます。
なお、Asteriskについては以前の記事等を参考に適切にセットアップしてください。
ちなみにFUSIONとの接続にはこのあたりを参考にしました。

まずは発信できるようにします。
設定ファイル"/etc/asterisk/sip.conf"の[general]セッションに以下を追加します。
register => <ユーザID>:<パスワード>@smart.0038.net
また"/etc/asterisk/sip.conf"の最後に以下を追加します。
[fusion1]
type=friend
username=<ユーザID>
fromuser=<ユーザID>
secret=<パスワード>
host=smart.0038.net
fromdomain=smart.0038.net
context=fusion1-in
insecure=port,invite
canreinvite=no
disallow=all
そして設定ファイル"/etc/asterisk/extensions.conf"の最後に以下を追加します。
[fusion1-in]
exten => <ユーザID>,1,Dial(SIP/<内線番号>,,tT)
exten => <ユーザID>,n,Hangup
ここで<ユーザID>と<パスワード>はFUSIONから通知されたもので、
<ユーザID>はもらった電話番号から先頭の050を取ったものです。
このケースではFUSION網からかかってきた電話を
<内線番号>のSIPクライアントで着信して通話できます。
もし複数のFUSIONアカウントを持っているなら"fusion1"としている部分を
"fusion2"などとして設定に追加し、
そちらからの着信を別の内線番号に振付けることが可能です。
設定次第で一斉鳴動させたりすることも可能です。

次に発信です。
そして設定ファイル"/etc/asterisk/extensions.conf"の
[default]セッションの最後に以下を追加します。
exten => _050577[7-9].,1,Dial(SIP/fusion1/${EXTEN})
exten => _05057[8-9].,1,Dial(SIP/fusion1/${EXTEN})
exten => _05058.,1,Dial(SIP/fusion1/${EXTEN})
総務省の電話番号割り当て資料で[IP電話の電話番号(050)]を確認すると、
FUSION IP-Phone SMARTで使われている電話番号は現時点で
"050-5777-xxxx"から"050-5899-xxxx"と判断できるので、
とりあえずこの番号向けへはFUSION網へ発信するようにします。
これだけ設定する分には無料通話しか発生しません。
もしある特定の番号(自宅とか家族の携帯電話とか)への発信を追加で許したいなら、
exten => 03xxxxxxxx.,1,Dial(SIP/fusion1/${EXTEN})
exten => 090xxxxxxxx.,1,Dial(SIP/fusion1/${EXTEN})
のように電話番号直打ちで追加すればいいですし、
電話番号の先頭に'_'をつけると正規表現ができるので、まとめて許可することも出来ます。
なお、正規表現はperlやsedで使われる一般的な'[5-7]'のような形が使え、
'X'='[0-9]'、'Z'='[1-9]'、'N'='[2-9]'と省略できます。
また'.'は一桁以上の数字として認識されます。

もしまったく縛りなく発信したいのであれば、先の設定の代わりに
exten => _0.,1,Dial(SIP/fusion1/${EXTEN})
とすればいいでしょう。
日本の電話番号は市外局番を含めると先頭に0が必ず付きますし、
国際電話も"010+国番号+相手先電話番号"なので
0から始まる番号へFUSION経由でかけられます。
ただしAsteriskへのログインパスワードが洩れると
有料通話をされまくるなんてことになるのでご注意を。
さらにFUSIONへのログインパスワードがAsteriskの設定ファイルに平文で書いてあるので、
設定ファイルのパーミッションやサーバへのログインパスワードについても言わずもがなです。
まあFUSIONへのログインパスワードは安全のためMYページで時々変えたほうがいいでしょう。
なお、国際電話はMYページで許可しておかないとかけられませんが、
必要ないなら禁止したままにした方が無難です。

2 件のコメント:

  1. どういう風なのかNo audio format found to offer なんちゃらのエラーがでる人は以下でできるかも‥

    [fusion1];
    type=friend
    username=[FUSION アカウント]
    fromuser=[FUSION アカウント]
    secret=パスワード
    host=smart.0038.net
    fromdomain=smart.0038.net
    context=default
    insecure=port,invite
    canreinvite=no
    disallow=all
    allow=ulaw
    allow=alaw
    dtmfmode=inband
    nat=yes

    返信削除
    返信
    1. ご指摘ありがとうございます。codecの設定、私は[general]セッションでしていたので気にしていませんでした。

      削除