クイックスタート|Tropo Web API

シンプルグラマでの処理

   

グラマはユーザーが期待することをTropoに伝える言葉のようなものです。 シンプルグラマは、Tropoで入力要件を表現するのにあらかじめ設定された方法を指す言葉です。

 

クイックスタートの番号を尋ねるで、 [DIGITS]文法を紹介し、これを使ってTropoに1ディジットを指示しました。 代わりに[4-5 DIGITS]を使用して数字の範囲を表すこともできます。 ([10-20 DIGITS][1-2 DIGITS]など、自由に決めることができます。) 呼び出し側が5のかわりに4を入力すると、Tropoは入力が完了したと判断する前に、4秒間待機します。 発信者がキーを押せばTropoに伝わるようにしたい場合は、terminatorパラメータを要求ステートメントに加え、発信者が押すべきキーに設定します。

 

電話でユーザーと話す主な方法が2つあり(プッシュホン入力のdtmfと音声)、デフォルトではどちらのモードの入力にも反応するため、 "dtmf"入力をピンナンバーリクエストに指定します。 これはmodeパラメータで管理できます。 可能な値は「dtmf」、「speech」または「any」です。 この他のaskの例と同様に、これらはライブラリ限定です。PHPを使っている場合には、 下記の例がLimonadeフレームワークを含んでいるので、最初のURLの末尾にリソース名を定めなければならないことに注意してください。 例:http://www.example.com/test?uri=start

 
require 'tropo-webapi-ruby'
require 'sinatra'

post '/index.json' do
  
  t = Tropo::Generator.new
  
  t.ask :name => 'digits', 
        :timeout => 60, 
        :say => {:value => "4~5桁のピン番号を入力してください。終了したら、シャープキーを押してください。."},
        :choices => {:value => "[4-5 DIGITS]", :mode => "dtmf", :terminator => "#"}        
  
  t.on :event => 'continue', :next => '/continue.json'
  
  t.response
  
end

post '/continue.json' do
  
  t = Tropo::Generator.new
  
  t.say(:value => "Thank you.")
  
  t.response
  
end

var http = require('http');
var express = require('express');
var app = express.createServer();
var tropo_webapi = require('tropo-webapi');

// Required to process the HTTP body.
// req.body has the Object while req.rawBody has the JSON string.

app.configure(function(){
    app.use(express.bodyParser());
});

app.post('/', function(req, res){
    
    var tropo = new TropoWebAPI();
    
    var say = new Say("4~5桁のピン番号を入力してください。終了したら、シャープキーを押してください。.");

    // (value, mode, terminator)
    var choices = new Choices("[4-5 DIGITS]", "dtmf", "#");

    // (choices, attempts, bargein, minConfidence, name, recognizer, required, say, timeout, voice);
    
    tropo.ask(choices, null, null, null, "digits", null, null, say, 60, null);
    
    tropo.on("continue", null, "/continue", true);
    
    res.send(TropoJSON(tropo));
    
});

app.post('/continue', function(req, res){
    
    var tropo = new TropoWebAPI();

    tropo.say("Thank you.");
        
    res.send(TropoJSON(tropo));

});

app.listen(8000);
console.log('Server running on port :8000');
<?php

require 'tropo.class';
require 'lib/limonade';
 
dispatch_post('/', 'app_start');
function app_start() {
 
    $tropo = new Tropo();

    $options = array("choices" => "[4-5 DIGITS]", "name" => "digits", "timeout" => 60, "mode" => "dtmf", "terminator" => "#");

    $tropo->ask("4~5桁のピン番号を入力してください。終了したら、シャープキーを押してください。.", $options);
 
    $tropo->on(array("event" => "continue", "next" => "hello_world?uri=continue"));
 
    $tropo->RenderJson();
}
 
dispatch_post('/continue', 'app_continue');
function app_continue() {
 
    $tropo = new Tropo();
     
    $tropo->say("ありがとうございます。");
     
    $tropo->RenderJson();
 
}
 
run();
 
?>
from itty import *
from itty import *
from tropo import Tropo, Choices

@post('/index.json')
def index(request):

    t = Tropo()
    
    choices = Choices("[4-5 DIGITS]", mode="dtmf", terminator = "#")
    t.ask(choices, timeout=60, name="digit", say = "4~5桁のピン番号を入力してください。終了したら、シャープキーを押してください。.")
    
    t.on(event = "continue", next ="/continue")

    return t.RenderJson()
    
@post("/continue")
def index(request):
    
    t = Tropo()
    
    t.say("ありがとうございます。")
    
    return t.RenderJson()
    
run_itty(server='wsgiref', host='0.0.0.0', port=8888)

 

modeパラメータを 「dtmf」に設定している場合、*と#も使用することができます。 数字だけに限定されているわけではないことに注意してください。

 

Tropoではdtmf入力以上のことが可能です。 TropoのSimple Grammarを使用して、単語やフレーズ全体を認識させることもできます。 更に詳しい情報は次の 「コンセプトとボキャブラリー」をご覧ください。