Twilio VoiceでSIPを使用する

はじめる前に

SIP Interfaceを使用できるようにする前に、Twilioアカウントにサインアップする必要があります(すでに持っている場合、その必要はありません)。 アカウントにサインアップする場合は、 https://jp.twilio.com/try-twilio/kddi-web にアクセスします。

概要

通信インフラをTwilioに接続して、コールセンターやIVRなどといった Programmable Voice アプリケーションを、Twilioのパワフルかつ柔軟な音声通話機能とともに構築を始めましょう。 Twilioへは公開インターネットで接続できるほか、代替としてTwilioのInterconnectを利用したプライベート接続も可能です。 Programmable Voice SIPでは、音声通話をグローバルなリーチで任意の固定電話、携帯電話、ブラウザー、モバイルApp、またはSIPエンドポイントにルーティングできます。

下図は、通話フローにおけるTwilioクラウドの位置付けについて示しています。

Programmable Voice SIP ダイアグラム

SIPとは何か? 

Session Initiation Protocol (SIP) は音声およびビデオ通話用のマルチメディア通信セッション管理に広く採用されている標準の通信プロトコルです。 SIPはオンプレミスまたは仮想PBXのような通信インフラとTwilioの通信プラットフォーム間の通信を確立するために使用できます。

TwilioへSIPを送信する

TwilioのProgrammable Voice SIP Interface製品を使用すると、既存のSIP通信インフラを使用してTwilio CloudでSIPセッションを開始できます。 SIP InterfaceはTwilioのTwiML言語、そしてTwilioのREST APIを使用して高度な音声アプリケーションを実現します。 SIPの通信インフラをTwilioクラウドに接続する方法についての学習をはじめましょう。

TwilioからのSIPを受信する

TwilioのProgrammable Voice SIP Interface製品ではTwilioのTwiML言語やREST APIを使用して、皆さんの高度な音声通話アプリケーションでTwilioクラウドから既存のSIP通信インフラに対してSIPセッションを開始できます。 SIPの通信インフラをTwilioクラウドに接続する方法についての学習をはじめましょう。

SIP接続 - 技術仕様

以下のセクションは、Twilioの提供するSIP機能についての概要です。

メディアコーデック

Twilioは、メディアにG.711/μ-law CODECを使用します。 これは多くのキャリアーで使用されている最も普及したCODECであり、変換は不要です。

DTMF

TwilioはDTMFの送受信用に、RFC-2833を実装しています。

TLSを使用したSIPトラフィックの安全強化

暗号化は通話メディアと関連するシグナリングを送信時に確実にプライベートに保つようにします。 Transport Layer Security (TLS) はSIPのシグナリングにおける暗号化を提供します。

仕様

  • TwilioへのSIPの送信: TwilioはTLSへのリクエストに対して自動的に応答し、下記のCryptoスイートをサポートします: AES_CM_128_HMAC_SHA1_80 and AES_CM_128_HMAC_SHA1_32.  どちらも好きな順に含めることができます。
  • TwilioからのSIPの受信: ただひとつ、AES_CM_128_HMAC_SHA1_80のみが利用できます。
  • TwiMLを使用してTwilioからSIPを送信する際に暗号化を有効にする場合は、Dial動詞SIP名詞の中で transport=tls パラメーターを使用する必要があります。
    既定では、TLSにはポート5061が使用されますが、希望するポートを指定してURIの中で使用できます。
  • TwilioのルートCA証明書のインポート TLSはSIPエンドポイント間のSIPシグナリングを暗号化するために使用されます。 これが正しく機能するためには、ネットワーク中の特定のデバイスはCA証明書をインポートする必要があります。 Twilioでは、CA(Certificate Authority: 認証局)の証明書を使用します。 サーバーの正当性を確立するために、下記のルート証明書をあなたの通信インフラに追加することが重要です。 TwilioのCA証明書をダウンロードしてください。

    Twilioはドメインの複数のサブドメイン (*.sip.twilio.com) にしようできるワイルドカード証明書を使用することにご注意ください。 ネットワーク要素でワイルドカード証明書をサポートしていない場合は、証明書の検証を無効にしてください。

IPアドレスホワイトリスト

通信インフラにおいて、SIPインフラからTwilioクラウドへの、またその逆の接続が行えるか確認してください。 通信インフラが通信をブロックしていないことを確認するには、ホワイトリストを更新する必要があります。 ファイアーウォールで下記のIPアドレス範囲およびポートすべてをSIPシグナリングとRTPメディア・トラフィック用にホワイトリストに追加することを強く推奨します。 

これは異なる地域の電話番号を使用する場合や、可用性用途(たとえば、北米ヴァージニアのゲートウェイがダウンしたときは、北米オレゴンのゲートウェイが使用されます)に重要です。

北米バージニアゲートウェイ:

シグナリングIP:

54.172.60.0
54.172.60.1
54.172.60.2
54.172.60.3
Ports: 5060 (UDP/TCP), 5061 (TLS)

メディアIP:

54.172.60.0/23
34.203.250.0/23
Port Range: 10,000 to 20,000 (UDP)

北アメリカオレゴンゲートウェイ:

シグナリングIP:

54.244.51.0
54.244.51.1
54.244.51.2
54.244.51.3
Ports: 5060 (UDP/TCP), 5061 (TLS)

メディアIP:

54.244.51.0/24
Port Range: 10,000 to 20,000 (UDP)

欧州アイルランドゲートウェイ:

シグナリングIP:

54.171.127.192
54.171.127.193
54.171.127.194
54.171.127.195
Ports: 5060 (UDP/TCP), 5061 (TLS)

メディアIP:

54.171.127.192/26
52.215.127.0/24 
Port Range: 10,000 to 20,000 (UDP)

欧州フランクフルトゲートウェイ:

シグナリングIP:

    35.156.191.128
    35.156.191.129
    35.156.191.130
    35.156.191.131
    Ports: 5060 (UDP/TCP), 5061 (TLS)

メディアIP:

    35.156.191.128/25 
    Port Range: 10,000 to 20,000 (UDP) 

アジア太平洋東京ゲートウェイ:

シグナリングIP:

54.65.63.192
54.65.63.193
54.65.63.194
54.65.63.195
Ports: 5060 (UDP/TCP), 5061 (TLS) 

メディアIP:

54.65.63.192/26
Port Range: 10,000 to 20,000 (UDP)

アジア太平洋シンガポールゲートウェイ:

シグナリングIP:

54.169.127.128
54.169.127.129
54.169.127.130
54.169.127.131
Ports: 5060 (UDP/TCP), 5061 (TLS)

メディアIP:

54.169.127.128/26
Port Range: 10,000 to 20,000 (UDP)

アジア太平洋シドニーゲートウェイ:

シグナリングIP:

54.252.254.64
54.252.254.65
54.252.254.66
54.252.254.67
Ports: 5060 (UDP/TCP), 5061 (TLS)

メディアIP:

54.252.254.64/26
Port Range: 10,000 to 20,000 (UDP) 

南アメリカ サンパウロゲートウェイ

シグナリングIP:

177.71.206.192
177.71.206.193
177.71.206.194
177.71.206.195
Ports: 5060 (UDP/TCP), 5061 (TLS) 

メディアIP:

177.71.206.192/26
Port Range: 10,000 to 20,000 (UDP)

用語集

通信インフラ

IP-PBX, SBC, IP電話などを広範に示す用語

SIPエンドポイント

ユーザーがVoIP通話を開始するIP電話またはソフトクライアント

SIP URI

SIPにおける電話番号で、次のような形式になります。 sip:username@SIPDomain

Twilio SIP ドメイン

{example}.sip.{region}.twilio.comのような形式で、{example}はユーザーによって指定され、{region}にはレジストラーの所在するデータセンターの場所が入ります。 当初は us1 のみです。

ヘルプが必要ですか?

誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。