Tropo WebAPI Development Guide Home  |  Frameset Home

  Asking for Digits  |  TOC  |  Changing Ask Timeouts  

5 Steps To Ask Complete Questions


If you haven’t already, we definitely recommend reading the Asking a Question example first, as this example builds on that one. It could be confusing otherwise.

A slightly more advanced version of the Tropo ask method has five steps:


Tropo has several optional parameters you can set that control the behavior of an ask. For example, let’s say you want to repeat your question when the user doesn’t respond to it before the default 30 second timeout occurs. You can set the optional attempts parameter to ask the question up to three times before giving up:

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

post '/index.json' do
  
  t = Tropo::Generator.new
  
  t.ask :name => 'color', 
        :attempts => 3, 
        :say => {:value => "What's your favorite color?  Choose from red, blue or green."},
        :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 => "You said " + 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("What's your favorite color?  Choose from red, blue or green.");
    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("You said " + answer);
		
    res.send(TropoJSON(tropo));

});

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

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

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

	$tropo = new Tropo();

	$options = array("choices" => "red, blue, green", "name" => "color", "attempts" => 3);
 
	$tropo->ask("What's your favorite color?  Choose from red, blue or green.", $options);

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

	$tropo->RenderJson();
}

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

	$tropo = new Tropo();
	@$result = new Result();
	
	$answer = $result->getValue();
	
	$tropo->say("You said " . $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 = "What's your favorite color?  Choose from red, blue or green.")	
	
	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("You said " + answer)
	
	return t.RenderJson()
	
run_itty(server='wsgiref', host='0.0.0.0', port=8888)

Note that if you use PHP, the above example includes the Limonade framework, so you would need to define the end of the start URL in Tropo to include the resource name, like http://www.example.com/test.php?uri=start.

There several other optional parameter you can set, as well.

Next Step: Changing Ask Timeouts


  ANNOTATIONS: EXISTING POSTS
0 posts - click the button below to add a note to this page

login
  Asking for Digits  |  TOC  |  Changing Ask Timeouts  

© 2012 Voxeo Corporation  |  Voxeo IVR  |  VoiceXML & CCXML IVR Developer Site