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

通話の転送

   

転送通話はcallerIDに基づく着信拒否や、IVRを利用した着信振り分けなどといった場面において役立つ事が多いのではないかと思います。 Tropoでは、そのすべてを比較的少ないコードで処理することができます。

 

最も簡単な形式の転送は次のとおりです。

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

post '/index.json' do
  
  t = Tropo::Generator.new
  
  t.say(:value => "転送中です。お待ちください。")
  t.transfer(:to => "0909876XXXX")
  
  t.response
  
end

var http = require('http');
var tropo_webapi = require('tropo-webapi');

var server = http.createServer(function (request, response) {  
  
    var tropo = new TropoWebAPI();

    tropo.say("転送中です。お待ちください。");
    tropo.transfer("0909876XXXX");
    
    response.end(TropoJSON(tropo));

}).listen(8000); 
<?php

require 'tropo.class';

$tropo = new Tropo();

$tropo->say("転送中です。お待ちください。");
$tropo->transfer("0909876XXXX");
    
$tropo->RenderJson();

?>
from itty import *
from tropo import Tropo

@post('/index.json')

def index(request):

    t = Tropo()
    
    t.say("転送中です。お待ちください。")
    t.transfer("0909876XXXX")

    return t.RenderJson()

run_itty(server='wsgiref', host='0.0.0.0', port=8888)

{"tropo":[
      {
         "say":[{"value":"転送中です。お待ちください。"}]
      },
      {
         "transfer":{"to":"0909876XXXX"}
      }
   ]}
 

より上等なものにもできます。以下の例では配列として複数の行き先を(最初に出た人にかかります)指定しています。 また、保留音と、転送をキャンセルするボタン、タイムアウトした場合のハンドラを指定しました。これらも多少のコードを追加するだけです。

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

post '/index.json' do
  
  t = Tropo::Generator.new
  
  t.say(:value => "転送中です。お待ちください。")
  t.transfer(:to => ["0909876XXXX", "031234XXXX"],
            :choices => {:terminator => "#"},
            :on => {:event => "ring", :say => {:value => "http://www.phono.com/audio/holdmusic.mp3"}})
  t.response
  
end
var http = require('http');
var tropo_webapi = require('tropo-webapi');

var server = http.createServer(function (request, response) {  
  
    var tropo = new TropoWebAPI();
    var say = new Say("http://www.phono.com/audio/holdmusic.mp3");
    var choices = new Choices(null, null, "#");
    var on = {"event":"ring", "say": say};
    
    tropo.say("転送中です。お待ちください。");
    
    //to, answerOnMedia, choices, from, name, on, required, timeout
    tropo.transfer(["0909876XXXX","031234XXXX"], null, choices, null, null, on, null, null);
    
    response.end(TropoJSON(tropo));

}).listen(8000); 
<?php 
 
require 'tropo.class';

$tropo = new Tropo();
$choices = new Choices(null, null, "#");
$say = new Say("http://www.phono.com/audio/holdmusic.mp3"); 
$on = new On("ring", null, $say); 

$options = array(
          'choices' => $choices,
          'on' => $on
        );
 
$tropo->say("転送中です。お待ちください。t");
$tropo->transfer(array("0909876XXXX", "031234XXXX"), $options);
     
$tropo->RenderJson();
 
?>
from itty import *
from itty import *
from tropo import Tropo

@post('/index.json')

def index(request):

    t = Tropo()
    
    t.say("転送中です。お待ちください。")
    t.transfer(["0909876XXXX","031234XXXX"], choices = {"terminator":"#"}, on = {"event":"ring", "say":{"value":"http://www.phono.com/audio/holdmusic.mp3"}})

    return t.RenderJson()

run_itty(server='wsgiref', host='0.0.0.0', port=8888)

{"tropo":[
      {
         "say":[{"value":"転送中です。お待ちください。"}]
      },
      {
         "transfer":{
            "to":["0909876XXXX","031234XXXX"],
            "choices":{"terminator":"#"},
            "on":{
               "say":{"value":"http://www.phono.com/audio/holdmusic.mp3"},
               "event":"ring"
            }
         }
      }
   ]}
 

以下はcallerIDを基にした着信拒否です。これは、セッションから情報を抽出しなければならないので、ライブラリと一緒でないと機能しないことにご注意ください。

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

post '/index.json' do
  
  v = Tropo::Generator.parse request.env["rack.input"].read
  t = Tropo::Generator.new
  
  callerID = v[:session][:from][:id]
  
  if (callerID == "0802345XXXX")
    t.transfer(:to => "031234XXXX")
  else
    t.say(:value => "こんにちは")
  end
  
  t.response
  
end
var http = require('http');
var tropo_webapi = require('tropo-webapi');

var server = http.createServer(function (request, response) {  
  
  request.addListener('data', function(data){
    json = data.toString();
  });
    
  request.addListener('end', function() {

    var session = JSON.parse(json);
    var tropo = new TropoWebAPI();
    var callerID = session.session.from.id;
    
    if(callerID == "0802345XXXX")
        tropo.transfer("031234XXXX");
    else
        tropo.say("こんにちは");
    
    response.end(TropoJSON(tropo));
});

}).listen(8000); 
<?php

require 'tropo.class';

$tropo = new Tropo();
$session = new Session();

$from = $session->getFrom();
$callerID = $from["id"];

if ($callerID == '0802345XXXX')
    $tropo->transfer("031234XXXX");
else
    $tropo->say("こんにちは");
    
$tropo->RenderJson();

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

@post('/index.json')

def index(request):

    s = Session(request.body)
    callerID = s.fromaddress['id']
    t = Tropo()

    if(callerID == '0802345XXXX') :
        t.transfer("031234XXXX")
    else :
        t.say("こんにちは")
        
    return t.RenderJson()

run_itty(server='wsgiref', host='0.0.0.0', port=8888)

 

転送するだけではなく、全ての電話番号をまとめて遮断する必要がありますか? Tropoはこの点にも対応しております。 次のページは着信拒否です。