メニュー

Expand
Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

Inbound - Sending SIP to Twilio

概要

Twilio’s Programmable Voice SIP product enables you to use your existing SIP communications infrastructure (e.g. IP-PBX, SBC, etc) to initiate SIP sessions with Twilio and use [TwiML][twiml] and/or the [REST][twilio-rest] APIs to create advanced voice applications. Twilio sits in the middle, enabling calls to be routed to your SIP communications infrastructure, PSTN, or to browsers and mobile apps. There are a few short steps to configure Twilio to interoperate with your infrastructure so you can start building and testing your voice app.

Programmable Voice SIP ダイアグラム

動作の仕組み

To send SIP to Twilio's cloud you need to create a Twilio SIP Domain. A SIP domain is a custom DNS hostname associated with your Twilio account that can accept SIP traffic. If anyone makes a SIP request using that domain, (e.g. sip:alice@example.sip.us1.twilio.com), it will be routed over the internet to Twilio. When a SIP request is received by Twilio, the SIP domain is used to determine the authentication criteria and subsequently used to look up the configured URL to webhook to your application that will provide instructions on how to handle the incoming SIP call. See [how Twilio passes data to your application][twilio-request].

はじめましょう

Log in to the Console and select Programmable Voice from the vertical menu on the left side of the view which will bring you to the Dashboard. Now navigate to [SIP Domains/Endpoints][sip-endpoints].

ステップ1: Twilio Voice SIPドメイン/エンドポイントの作成

Voice SIPエンドポイント画面の赤い+印をクリックします

わかりやすい名前

SIPドメインに対して、MyCompanyJP などといった分かりやすい名前を付けます

SIP URI / ドメイン名

このプロパティーで、インフラから公開インターネットを経由してTwilioによってホストされた正しいサーバーにルーティングするために使用されるグローバルに一意なSIPドメインを指定できます。

SIPリクエストは下記のようなSIP URIを使用します:sip:hanako@example.sip.twilio.com

Twilioは着信リクエストを処理し、選択された認証メソッドを使用してそれを認証します。 リクエストが認証されると、続いて述べるようにリクエストされたURLのWebhookを呼び出します。 同じSIPドメイン内のすべてのユーザーは、同じアプリケーションURLにWebhookします。

Domain names can contain letters, numbers, and “-”. By default, every account has its own Twilio Account SID reserved as a domain.

すでに存在するドメインを作成しようとすると、エラーが表示されます。 既存のドメインのサブドメインの作成は、元のドメインを所有している場合には許可されます。 たとえば、foo.example.sip.twilio.com は、すでにexample.sip.twilio.com というドメインをすでに持っている場合にのみ作成できます。 

Sub-accounts can create subdomains of any SIP domain in the master account. There exists a [REST API for creating Domains][rest-create-domain].

ローカライズ済みSIP URI

If you wish to manually connect to a specific geographic edge location that is closest to the location of your communications infrastructure, you may do so by pointing your communications infrastructure to any of the following localized SIP URIs:

  • {example}.sip.ashburn.twilio.com (北米バージニア)
  • {example}.sip.umatilla.twilio.com (北米オレゴン)
  • {example}.sip.dublin.twilio.com (欧州アイルランド)
  • {example}.sip.frankfurt.twilio.com (欧州 フランクフルト)
  • {example}.sip.singapore.twilio.com (アジア太平洋シンガポール)
  • {example}.sip.tokyo.twilio.com (アジア太平洋東京)
  • {example}.sip.sao-paulo.twilio.com (South America São Paulo)
  • {example}.sip.sydney.twilio.com (アジア太平洋シドニー)

If you are looking for a list of legacy SIP localized URIs, visit here.

リクエストURL (Webhook)

SIP INVITEの受領にともなってTwilioが呼び出すWebサーバーを指し示すURLを指定してください。 URLは着信通話の処理方法を指定したTwiMLを応答しなければなりません。 代わりに、静的なTwiML Binを指し示すURLを指定することもできます。

下記は静的なTwiMLの例として使用できるURLです。 TwilioがSIP INVITEを受け取り、認証されると、INVITEを受け取って通話が確立され、発信者に対して短いメッセージを読み上げます。

http://twimlets.com/message?Message%5B0%5D=Congratulations!%20You%20just%20made%20your%20first%20call%20with%20Twilio%20SIP.

Fallback URL

リクエストURLの呼び出しに失敗(無効なTwiMLなど)した際に呼び出される第二のURLを任意で指定することもできます。

Status Callback URL

任意で、開始 (initiated)発呼中 (ringing)応答 (answered)完了 (completed)、といった通話の進行状況に応じてWebhookリクエストを送信するURLを指定できます。

認証

認証は、SIPドメインを許可されたデバイスおよびユーザーからのアクセスのみに制限します。 少なくとも、アクセス制御リストまたはクレデンシャル・リストのいずれかを構成する必要があります。 上記の両方を構成している場合、ACLとクレデンシャルリストの両方がユーザーに課されます。

IPアクセス制御リスト (ACL)

構成済みの場合、Twilioはリスト中のIPアドレスから発信(Originating)されたSIPトラフィックのみを受け入れ、その他のすべてのパケットを排除します。 IPアドレスのワイルドカードはサポートされず、完全なIPアドレスを指定しなければなりません。 IPアクセス制御リストは一つ以上のSIPドメインに対して適用できます。 IP ACL作成用のREST APIもあります。

クレデンシャルリスト

クレデンシャル・リストはあなたのSIPドメインによって受け入れられるユーザー名とパスワードの組です。

If a Credential List is configured, your SIP INVITE will be challenged with a 407 Proxy Authentication Required requesting the appropriate user name and password.

それぞれのユーザーは下記の要件に従ったパスワードを設定する必要があります。

  • 12文字以上
  • 大文字、小文字を両方入れること
  • 少なくとも1桁の数字

Twilioはユーザー名に対して提供されたパスワードを平文で保存する代わりに、パスワードはダイジェスト認証の仕様に従ってMD5ハッシュが行われます。 一旦パスワードが設定されると、Twilioは保存されたパスワードを取得するすることはできなくなります。 クレデンシャルリスト一つ以上のSIPドメインに対して適用できます。

A REST API exists for creating Credential Lists.

Step 2: Allow Twilio’s IP addresses and ports

To ensure that your communications infrastructure doesn’t block communication, you must update your allow list. See the SIP documentation for details.

ステップ3: TwilioのSIPドメインへのSIPの送信開始

Now that Twilio’s IPs and ports are allowed in your system and your SIP Domain is created, you can send SIP requests to Twilio. If you used the example URL from Step 1, you will hear:

“Congratulations! You just made your first call with Twilio SIP.”

高度な機能

SIP Custom Headers

In order to better integrate with remote SIP applications, Twilio reads the headers that are sent in the SIP request and response messages. Twilio will read any headers beginning with the X- and prepended with SipHeader_ prefix in request parameters.

You can send multiple param & value pairs as part of the same header. For example, X-TestHeader: param1=value1;param2=value2;param3=value3

If you send headers without X- prefix, Twilio will not read the header. As a result, the header will not be passed in the output.

UUI (User-to-User Information) Header

In order to pass the contextual information of the caller, customers use UUI (User-to-User Information) header in SIP request messages. You can pass a UUI (User-to-User) header through a webhook as a parameter for incoming calls to Twilio.

Simply add UUI SIP header as part of the SIP message before sending it to Twilio. The headers will be sent as request parameters in the webhook requested from your server. For example, if you send the following SIP headers in your SIP message:

User-to-User: 123456789;encoding=hex

Twilio will prepend the UUI header with SipHeader_ prefix in webhook request to your server. For example,

SipHeader_User-to-User "123456789;encoding=hex".

Rate this page:

ヘルプが必要ですか?

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