電話器のプッシュ音認識機能、TwiML:

20140704-01.png

Twilioのプッシュ音認識機能、<gather>をご紹介します。

 

プッシュ音とは、スマホや固定電話など電話器の数字ボタンを押した際に発生する「音」のことを言います。
Twilioはこの「音」を数字に変換し、呼ばれた処理に値(データ)をPSOTやGETで渡します。このプッシュ音認識機能はTwilioの機能の中で良く使われる動詞の一つです。
例えば、受信電話番号の振り分け、IVR(自動音声応答)などの開発で良く使われています。
Twilioの<Gather>を使えば単なる電話処理だけではなく、PHPやRubyなどプログラミング言語による開発も可能です。

 

プッシュ音認識 <Gather>

Gather動詞は短いコードで、ユーザーから入力されたプッシュ音を認識します。まず、下のコードをTwilioのRequest URLに設定し、電話をかけてみてください。

そうすると、4行目のメッセージが再生された後、無言状態になります。
そこで、電話器の数字ボタンをプッシュしてみてください。
プッシュされたボタン(キー)の値を取得できるのが<Gather>です。

なお、Twilioの動詞にはそれぞれいろんな属性を持っていますので、Gatherの属性も試してみてください。
今回のコードでには「timeoutとfinishOnKey」が設定されています。
属性に関する情報やサンプルコード、概要などは下の公式ドキュメントから確認できます。

 

 

※ Request URLの設定はブログの「◎ 電話番号管理画面」を参考してください。
/developper/entry000195.html

 

ネスト動詞

下記の二つのサンプルコードみればお分かりかと思いますが、二つのサンプルコードは動きが違います。

  • 上のサンプルコードはメッセージの再生の途中でもキーの入力可能です。
  • 下のサンプルコードはメッセージの再生の途中にはキーの入力不可能です。

つまり、<Gather>動詞は<Say>と<Play>動詞のネストが可能です。

 

通話の分岐

ここでは通話の処理を分岐させてみたいと思います。
このソースコードは電話をかけたユーザーから好きな果物を電話の数字ボタンで選択してもらいます。

  1. ユーザーが050に電話をかけます。
  2. 6行目のアナウンスに従って好きな番号をプッシュします。
  3. ユーザーがプッシュした数字がTwilio経由でこのファイルに戻って来ます。
    戻って来る値はPOSTまたはGETに設定されます。(選択可)

 

Request URL

下記のソースコードURLをTwilioの電話番号(050)のRequest URLに設定すると、そのRequest URLに値を渡します。
<Gather>によるデータはリアルタイムで渡されますので、動的なアプリケーションの開発が可能です。

なお、7行目の<Gather>動詞を他の分岐処理の中に入れますと、処理を入れた箇所で新しい入力を受けることになります。

 

Twilioのライブラリを使いますと。

Twilioは様々なプログラミング言語のライブラリを提供しています。今回はPHPのライブラリを使いましたが、他のライブラリも是非ご覧ください。

 

分岐処理で他の処理(関数やコマンドなど)も実行可能です。

アプリケーションの開発には様々な例外や新しい機能(処理)などとの連動が必要になるかと思います。
このようなシステム(仕様)的な処理とTwilioを自由自在に組み合わせることも可能です。

例えば、1が入力されたら、Aコマンドを実行、2が入力されたら、Bコマンドを実行などの処理をさせることも可能です。

まず、今回の場合ですと、

  1. 最初は6行目のメッセージが再生され30秒間(timeout属性)入力を待ちます。
  2. ユーザーが1〜4の中で一つの数字を入力します。
  3. 入力された値が「1」だとしたら、
    • 10行目のPHPコマンドが実行されます。
    • 12行目のメッセージがアナウンスされます。
    • 13行目でもう一回入力を待ちます。

 

入力後の処理を遷移させる

こちらの処理はによる処理終了後その処理を遷移させることが可能です。
使い方は簡単、Gather動詞に actionに遷移先のURLを記述します。
サンプルコードではパラメータ変数を「POST」になっていますが、GETにすることも可能です。

例)<Gather action="twiml-gather-action.php?userId=AAA" method="GET">
このように書けば、$_GET["userId"]から値の取得が可能になります。

 

twiml-gather.xml

 

twiml-gather-action.php

 

まとめ

このGather動詞を使いますと、他にもいろんな処理ができますので、皆さん是非、お試しください。
Twilioの新規登録はこちら
https://twilio.kddi-web.com/signup/

いろんな場面で使われている、<gather>動詞についてはこちらをご覧ください。

  • twilio-welcome-イベント-vol-24-アイデアソン-から生まれたアイデアを形に
  • twilio本人認証
  • 通話スクリーニング
  • twilioを利用した投票システム

この記事をシェア


最新記事

すべての記事へ