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

完全な質問をするための5つのステップ

   

もし前回の質問をするをお読みになっていなければ、そちらを先にお読みください。 でないと混乱を招く可能性があります。

 

Tropoのやや高度なaskメソッドの動作には、5つのステップがあります:

・ユーザに答えてもらいたい質問をTropoに渡す。

・利用可能な選択肢のリストをTropoに渡す。

・任意:Tropoが「ask」で使用するデフォルト設定を変更。

・任意:ユーザが何もしない、または不正な選択を行うケースを設定する。

・ユーザの選択に基づいて行動する。

 

Tropoでは、askの動作をコントロールするように設定できるオプションパラメータがあります。 たとえば、ユーザが質問に応答しない場合、デフォルト30秒のタイムアウトが起こる前に、質問を繰り返したいとしましょう​​。 任意のattemptsパラメータを設定して、間違えても3回まで質問を繰り返す事ができます:

  サンプル
require 'tropo-webapi-ruby'
require 'sinatra'

post '/index.json' do
  
  t = Tropo::Generator.new
  
  t.ask :name => 'color', 
        :attempts => 3, 
        :say => {:value => "好きな色は何ですか?レッド、ブルー、グリーンで応えてください。"},
        :choices => {:value => "red, blue, green"}
  
  t.on :event => 'continue', :next => '/continue.json'
  
  t.response
  
end

post '/continue.json' do
  
  v = Tropo::Generator.parse request.env["rack.input"].read
  
  t = Tropo::Generator.new
  
  answer = v[:result][:actions][:color][:value]
  
  t.say(:value => "あなたの好きな色は " + answer)
  
  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("好きな色は何ですか?レッド、ブルー、グリーンで応えてください。");
    var choices = new Choices("red, blue, green");

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

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

    var answer = req.body['result']['actions']['value'];
   
    tropo.say("あなたの好きな色は " + answer);
      
    res.send(TropoJSON(tropo));

});

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

<?php

require 'tropo.class';
require 'lib/limonade';

dispatch_post('/start', 'app_start');
function app_start() {

   $tropo = new Tropo();

   $options = array("choices" => "red, blue, green", "name" => "color", "attempts" => 3);
 
   $tropo->ask("好きな色は何ですか?レッド、ブルー、グリーンで応えてください。", $options);

   $tropo->on(array("event" => "continue", "next" => "hello_world?uri=continue"));

   $tropo->RenderJson();
}

dispatch_post('/continue', 'app_continue');
function app_continue() {

   $tropo = new Tropo();
   @$result = new Result();
   
   $answer = $result->getValue();
   
   $tropo->say("あなたの好きな色は " . $answer);
   
   $tropo->RenderJson();

}

run();

?>
from itty import *
from tropo import Tropo, Result

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

   t = Tropo()

   t.ask(choices = "red, blue, green", attempts=3, name="color", say = "好きな色は何ですか?レッド、ブルー、グリーンで応えてください。")	
   
   t.on(event = "continue", next ="/continue")
   
   return t.RenderJson()
   
@post("/continue")
def index(request):
   
   r = Result(request.body)
   t = Tropo()
   
   answer = r.getValue()
   
   t.say("あなたの好きな色は " + answer)
   
   return t.RenderJson()
   
run_itty(server='wsgiref', host='0.0.0.0', port=8888)

 

PHPをお使いでしたら、Limonade フレームワークを含む前述の例に注意してください。 http://www.example.com/test?のようなリソース名を含めるためにTropoの開始URLの終わりをuri=startと定義する必要があります。 タイムアウトのように、他にも設定できる任意のパラメータもいくつかあります。