ゼロからはじめるぜ! Twilio – 第4回

20130719-12.jpg

こんにちは! Twilio チーム ネットワークエンジニアの まさ です。
酷い暑さですね!! よくおばちゃんが日傘をさしています。なんで晴れた日にわざわざ傘持ってまで出歩くんだろうと思ってましたが、実際やってみたんです。
体感温度、5 度変わる!

炎天下に晒されると、太陽光の分、体感温度がプラスされていたわけです。
男子も遠慮なく日傘を持つべき。折りたたみ傘で十分。しかも黒がいいです。
つい、白で反射したくなりがちですが、白だと自分が眩しいばかりか地面からの赤外線を自分に照射するようなもの。黒を装備すれば全部吸収してくれる。

 

日傘は本気で涼しい。おばちゃんの生活の知恵には素直に従っておくべきと痛感しました。

さて、前回は「ジラし」という大人のテクニックを駆使し、みなさまに再びこの場でお会いできました。本当にありがごとうございます。
今回は、いよいよ TwiML を作っていきます。もう一度、目標のおさらいをしておきましょう。

今回の目標

電話を架けるとアナウンスが流れ、発信者にプッシュ音操作を促し、ボタンに応じて次の処理が分岐する

そして「発信者のボタン操作を収集するには <Gather> 動詞を使う」でしたね。

電話を架けると何かをする、というモノを作りますので、まずは電話を受けるために TwiML が必要です。そして、<Gather> 動詞を使って何が押されたかを集め、その結果を別のアプリケーションに渡す、という動作をします。

 

まずは、最初に電話を受ける際に必要になる TwiML です。このようになります。

この XML は、電話が架かってくると「請求金額の確認をします。今月のご利用料金は 1 を、先月のご利用料金は 2 を、終わるときは 9 を押しなさい」と喋り、発信者からのボタン操作を 10 秒間待つ、というものです。

 

今回使った動詞は 2 つです。<Gather> と <Say> で、それぞれの詳しいドキュメントは以下の通りです。
<Gather> 動詞のドキュメント
<Say> 動詞のドキュメント

 

1 つずつ、詳しく説明しますね。

この Gather には 3 つの属性を指定しています。属性に与える値(イコールを挟んだ右辺)は必ずダブルコーテーションで囲います。

  • timeout="10"
    プッシュ操作を 10 秒間待ち続ける
  • numDigits="1"
    ボタン操作を 1 桁だけ受け付ける
  • action="URL"
    何が押されたかを URL パラメータに載せてこの URL を叩く

 

Gather は、その下にネストされている全ての動詞(この例だと Say)を実行し終えてから timeout をカウントし始めます。そして、timeout 値の秒数以内に何もプッシュ操作がされないと電話を切ります。

 

例えば、発信者へ「333 をある整数で割ると、小数部分のどこかに 7494 という数字が出てきます。このような整数のうち最小のものを求めなさい」といった、それなりの長考を要する難問を課す場合には timeout 値を調整しましょう。
なお、発信者のプッシュ操作は、Say が喋っている途中でも受け付けます。

この例の場合だと、発信者が「5」のボタンを押せば、Twilio はhttp://hogehoge/twilio/usage_summary.php?Digits=5
という URL を叩きますし、「3」のボタンを押せば、Twilio は http://hogehoge/twilio/usage_summary.php?Digits=3
という URL を叩きます。

 

「何が押されたかを集め、その結果を別のアプリケーションに渡す」というのは、この 「?Digits=X」の部分です。
よって、usage_summary.php という PHP 言語のプログラムを作り、この中で Digits=X を拾った上で何かやってくれ、という命令を書くことになります。

 

続いて Say の説明です。Say は <Say> ~ </Say> で囲んだ文字列を喋ってくれます。

  • language="ja-jp"
    日本語で話す

 

Say のデフォルトは英語ですので、日本語で喋らせたい場合はこの属性を付加することを忘れないでください。漢字でも大丈夫ですが、たまに意図しない読み方をするお茶目な面がありますので、その場合はひらがなで書きます。

 

さあ、この XML を保存しますが、文字コードは必ず UTF-8 で保存してください。今回は welcome.xml という名前にしておきます。そして、このファイルをご利用のサーバ環境にアップロードします。

私はこのようにしてみました。この領域は http://hogehoge/twilio/twiml/welcome.xml としてアクセスできます。

20130719-13.jpgこれで、最初に叩かれる TwiML が完成しました。今回はここまでにしておきます。

 

次回は、いよいよ大物 PHP を使って、発信者のプッシュ操作に応じて分岐するそれぞれの処理を実現するプログラムを作ります。私もはじめての PHP です、まずは見よう見真似でやってみようじゃありませんか!!

ちなみに、Gather の説明で出した難問の正解は「419」です。

この記事をシェア

最新記事

すべての記事へ