AsteriskからTwilioを経由してPSTN網にアクセスしてみよう!第2回

  • #技術ブログ 

こんにちは、永遠の半人前エンジニア うえピーです。

今回は、Asterisk&Twilioで、私の予想通りすぐに、PSTN網にアクセスして、発着信できるのか検証してみたいと思います!

今回のゴールは、

  • ・私の社内携帯に、Asteriskにレジストしたスマホアプリから発信
  • ・社内携帯からそのスマホアプリに着信

です。

AsteriskからTwilioに接続する方法は、いくつかあるのですが、
今回は、”エラスティックSIPトランク”を使ってみたいと思います。

まず、Twilioのマニュアルを参照した感じですと、作業ステップは以下です。

  1. (Twilioにて)電話番号を取得
  2. (Twilioにて)エラスティックSIPトランクを作成
  3. (Asteriskにて)スマホアプリ用の内線及びキューを作成
  4. (Asteriskにて)SIPトランク及び、着信ルート、発信ルートを作成
  5. (スマホアプリにて)Asteriskにレジスト

また、前提条件は、以下の通りです。

  • ・Asteriskの設定は、GUIで簡単に行なうため、FreePBXを使う
  • ・Twilioのアカウントは取得済み

※Asteriskや、Twilioの基本用語は、ある程度おさえている前提で、書かせていただいていることはご容赦下さい。

では、早速、検証開始。

1. (Twilioにて)電話番号を取得

電話番号ダッシュボードで、日本の050番号をゲット。
電話番号購入1

2.(Twilioにて)エラスティックSIPトランクを作成

まずは、エラスティックSIPトランクを作成します。
エラスティックSIPトランク作成1

続いて、発信用のTerminationを作成&認証用のIPアクセスコントロールリスト、クレデンシャルリストを作成しましょう。
エラスティックSIPトランク作成2
エラスティックSIPトランク作成3
エラスティックSIPトランク作成4

次は、着信用にOriginationを作成します。
エラスティックSIPトランク作成5

最後に、先ほど購入した電話番号を設定します。
エラスティックSIPトランク作成6

3.(Asteriskにて)スマホアプリ用の内線及びキューを作成
それでは、スマホアプリ用の内線作っちゃいます。
※注意点は、Asteriskと内線(スマホ)が別ネットワークになるのて、NATの設定をYesにすることと、Qualify(生きてますよ通知)もYesにすることです。
内線作成1
内線作成2

続いて、キューを作成します。設定した内線はすべて鳴らすことにしておくかな。あと、内線も複数設定と。
※もし、着信時、複数の内線を鳴らす予定がなければ作成しなくてもOK。今回は、ちょっとでもIP-PBXらしさを出すため作ります。
キュー作成1
キュー作成2

4.(Asteriskにて)SIPトランク及び、着信ルート、発信ルートを作成
まずは、SIPトランクを作成。ポイントは、電話番号に国コードを含めることです。
SIPトランク1
SIPトランク2

あとは、ここがかなり重要ポイントですが、Dialed Number Mainpulation Rulesにて、発信時入力した先頭の0を+81に自動で変換するようにしておくと
発信時、わざわざ+81を入力しなくてよいので使い勝手がよくなります。
SIPトランク3

ここが1番重要です。Twilioにて作成したTermination、認証用のIPアクセスコントロールリスト、クレデンシャルリストを発信用のOutgoinに設定します。
※たったこれだけの入力でOK!
SIPトランク4

ここも重要。着信用のIncomingの設定です。ポイントは、日本のTwilioサーバーのIPアドレスをhostに指定することです。
SIPトランク5

続いて、発信ルートを作成します。ポイントは、スマホ側では、070xxxxxxxxとみたいな感じで相手先電話番号を入力しつつ、
Twilioには、+8170xxxxxxxxで発信したいので、先頭の0をプレフィックスにして、発信するよう設定することです。
折角なので、固定電話にも発信できるようにしておきましょう!
発信ルート1
発信ルート2

いよいよ大詰め、着信ルートを設定します。ポイントは、電話番号に国コードを含めることくらいです。あと、宛先は、先ほど作成したキューでお願いします。
着信ルート1

5.(スマホアプリにて)Asteriskにレジスト
今回は、有償ですが、私のお勧めAcrobits Softphoneからレジストしてみます。
スマホレジスト

ここまで、所要時間、10分程度(画面のスナップショット取得含む)。
これで本当に発着信できれば、私の中ではちょー簡単!

どきどきしながら、まずは発信!
発信1
発信2

よし、かかってきた!
発信3

よっしゃ!発信時の通話成功!!
発信4

続いて、着信。
着信1
ん?
がーん、この番号では、サービス提供していない旨のガイダンスが流れて、着信できない・・・。

まずは、Twilio側のログを確認
twilioコールログ
うーん、こちらは、正常に着信している・・・、原因は、Asteriskか・・・。

AsteriskのCLIを確認してみると・・・
Asteriskログ

Twilioサーバーの想定していないIPアドレスから接続にきてるからRejectされている模様!!

設定マニュアルを読み直してみると、日本のTwilioサーバー(pstn.jp1.twilio.com)は、3種類のIPアドレスのいづれかから接続があるみたいですね。

3種類分のtrunkを作成する必要があるのか・・・では、早速。
SIPトランク6

さて、再度、着信に挑戦。
着信2

よっしゃー、着信通話成功!!
着信3

どうでした!?
最後にトラブル、ありましたが、これは設定時の注意点として、ご記憶頂くとして、結構さらっといけちゃう感じがしませんか?

次回は、通話品質にフォーカスしてみようかと思っております!

[参考資料]

  1. エラスティックSIPトランク
  2. SIP トランキング設定ガイド
  3. FreePBX設定ガイド

追伸:設定のイメージがわくように画像を貼り付けてみましたが、ワンクリック拡大できないと参考にならないですね。次回の記事までにLightboxの導入を検討してみます。
⇒かたさん、プラグイン導入、サンキューです。この投稿から、Lightboxに切り替えました。