TwiML:Twilio マークアップ言語

概要

TwiML文書 は、通話や SMS を受信した時の動作を Twilio に指示するための、命令のセットです。

ユーザーの Twilio 番号に音声通話や SMS が着信すると、Twilio はこの Twilio 番号に関連付けられた URL を検索し、この URL 宛にリクエストを送信します。 Twilio はこの URL で TwiML の命令を読み込み、通話を録音する、メッセージを再生する、キーパッドで数字をダイヤルするようアナウンスを流すなど、次の動作を判断します。

たとえば、次のサンプルでは、短いアナウンスを流した後、発信者の声を録音します。

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Say voice="woman">Please leave a message after the tone.</Say>
    <Record maxLength="20" />
</Response>

TwiML は HTML とよく似ています。 一度に1つの TwiML 文書だけが実行されますが、TwiML 文書を複数リンクさせれば、複雑な音声処理アプリケーションを作ることができます。

Twilio 番号からその他の番号への発信通話も、着信通話と同じように、TwiML を用いて制御します。 発信通話の最初の URL は、Twilio REST API リクエストのパラメーターとして渡されます。

TwiML 動詞

以下の動詞を組み合わせて、さまざまな種類のインタラクティブな音声通話アプリケーションと メッセージングアプリケーションの開発ができます。

  • Say - テキストを読み上げます。
  • Play - 発信者に音声ファイルを再生します。
  • Dial - 通話に参加者を追加します。
  • Record - 発信者の声を録音します。
  • Gather - 発信者がキーパッドでダイヤルした数字を収集します。
  • Sms - 通話中に SMS メッセージを送信します。
  • Hangup - 通話を終了します。
  • Queue - 発信者をキューに追加します。
  • Redirect - コールフローを別の TwiML 文書へリダイレクトします。
  • Pause - 次の指示を実行する前にポーズを挿入します。
  • Reject - 着信通話を拒否します。通話は課金されません。
  • Message - MMS もしくは SMS メッセージに返信します。

Twilio とのインタラクション

Twilio からユーザーのアプリケーションへは、HTTP の GET または POST を使って、最初の TwiML リクエストを送信させます。 後続のコールフローにおいて可変するもの、たとえば、 <Gather> を使ったキーパッド入力の受け付けや、 <Record> を使った音声録音など、これらについては、ユーザーのアプリケーションに追加のリクエストが必要になります。これらのリクエストも各動詞の method パラメーターで指定し、GET や POST で送信できます。

POST

Twilio から Web サーバーに対し HTTP:POST を実行すると、一般的なウェブ サイトにおけるフォーム送信と同様に、その通話に関連付けられた各種メタデータ (電話番号等) が、POST のボディーとして送られます。 ただし、Twilio は POST をキャッシュできませんので、注意が必要です。 静的な TwiML ページを Twilio にキャッシュさせたい場合は、Twilio が GET 使ってアプリケーションへのリクエストを送信するようにしてください。

GET

Twilio から Web サーバーに対し HTTP:GET を実行すると、一般的なウェブ サイトにおけるフォーム送信と同様に、その通話に関連付けられた各種メタデータ (電話番号等) が、URL エンコーディングされて送られます。 Twilio では、HTTPにおける GET リクエスト標準の HTTP キャッシング ディレクティブをサポートします。静的な TwiML 文書とメディア ファイルをローカルにキャッシュします。 MP3 など、のサイズの大きいメディア ファイルには、キャッシングが重要になります。