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

質問をする

   

最も基本的なニーズである、質問に対して応えるという処理です。典型的なaskには3つのステップがあります。

 
  • 1.ユーザーに答えてもらいたい質問をTropoに提供する。
  • 2.可能な選択肢のリストをTropoに提供する。
  • 3.ユーザーが選択した選択に基づいてアクションを取る。
 

ユーザーに好きな色をたずね、相手にそれをリピートして返し、ログに記録するという基本的な例を挙げます。

 

JSONだけが、resultからの応答を引き出すのに用いられないので、以下の全ての例がライブラリを含みます。 PHPを使用する場合は、次の例がLimonadeフレームワークを含むことに注意してください。 その場合、http://www.example.com/test?uri=startのようにリソース名を含める為に、URLの終わりに定義する必要があります。

また、音声認識については英語のみの対応となっております。ご了承ください。

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

post '/index.json' do
  
  t = Tropo::Generator.new
  
  t.ask :name => 'color', 
        :timeout => 60, 
        :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, null, null, null, "color", 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();

    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", "timeout" => 60);
 
   $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", timeout=60, 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)

 

次は、番号で質問する方法を解説します。