2015年3月16日月曜日

Twilio を使ってみた - その3

前々回「Twilio を使ってみた - その1」では、Twilio トライアルアカウントへの登録と、電話を受けて任意のメッセージを流すところまで、前回「Twilio を使ってみた - その2」では電話の転送をやりました。

今回は、電話を受けたらボタンを押すように促し、押されたボタンごとにメッセージを流してみようと思います。

Gather 動詞
押されたボタンの収集は Gather 動詞を使います。
ドキュメント: https://jp.twilio.com/docs/api/twiml/gather

ドキュメントのサンプルそのままですが、以下のように使用します。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Gather timeout="10" finishOnKey="*">
        <Say>Please enter your pin number and then press star.</Say>
    </Gather>
</Response>

発信者がボタンを押すと押した数値をパラメーターに GET もしくは POST (method で指定)リクエストを送信します。
action 属性で送信先 URL の指定もできます。

サーバー
今回から TwiML および アプリケーションをサーバーに配置したいと思います。
なんでも良いのですが、私は Google App Engine(以下、GAE) を使うことにしました。

GAE のセットアップなどは省略します。

アプリケーション
前回、前々回では TwiML を直接指定し処理を指示していましたが、今回はアプリケーションという形で構築をしていきます。
今回は、GAE + PHP で作りました。

PHP のソースコードは以下
<?php
require 'twilio-php/Services/Twilio.php';

$response = new Services_Twilio_Twiml();
if( isset($_REQUEST['Digits']) ) {
  $input = $_REQUEST['Digits'];
  switch($input) {
  case '9':
    $response->say('さようなら', array('language' => 'ja-jp'));
    break;
  default:
    $gather = $response->gather(array('numDigits' => 1, 'timeout' => '10'));
    $gather->say($input . 'を押したな', array('language' => 'ja-jp'));
    break;
  }
} else {
  $gather = $response->gather(array('numDigits' => 1, 'timeout' => '10'));
  $gather->say('なんかボタン押して。', array('language' => 'ja-jp'));
}

print $response;


require 'twilio-php/Services/Twilio.php';
こちらのファイルは、Twilio のライブラリーです。本家サイトよりダウンロードしたものを、アップロードしています。
Twilio Docs - Php Install
https://github.com/twilio/twilio-php/archive/master.zip

コードは 「ゼロからはじめるぜ! Twilio - Twilio for KDDI Web Communications」を参考に…というかほぼそのまんまです。

上記コードの else 節の部分が電話をかけた時に最初に通る部分です。
if( isset($_REQUEST['Digits']) ) {
...
} else {
  // ここ
}
そこで、Gather が処理され Digits パラメータ付きで同じ URLが叩かれます。
すると、今度は if 節の部分が実行されます。

こちらの PHP を実行できるように GAE の app.yaml を編集してアップロードして下さい。
これで、アプリケーション側の設定が終わりです。

アプリケーションの登録
アプリケーションを Twilio に登録します。
Twilio のダッシュボードから「ツール」→「TWIML APPS」を選択します。すると、下図のような画面が出てくるので「TwiMLAppを作成する」ボタンを押します。


アプリケーション作成ページが開くので、フレンドリーネームと Request URL を設定します。
今回は音声通話に Request URL (GAE の URL)を記入します。

記入したら、保存ボタンを押して下さい。

次に、電話番号にこのアプリケーションを割り当てます。
「電話番号」から電話番号を選択し、音声通話のところの「Configure with」をアプリケーションに設定し、コンボボックスから先ほど作成したアプリケーションを選択して下さい。


これで Twilio 側の設定も終わりです。

電話かけて、ボタン操作に反応することを確認しましょう。

最後に
今回の内容は、ゼロからはじめるぜ! Twilio の以下の回に相当する内容です。

また、ソースコード等は github で公開しています。
https://github.com/srz-zumix/twilio

0 件のコメント:

コメントを投稿