CallerIDの読み込みと設定

   

CallerID(コーラーID)はとても分かりやすい概念です。コーラーIDは、ご利用中のアプリケーションが誰かと交信中に何を表示するかと同様に、 アプリケーションが誰と交信しているかを定めます。 このページでは、受信したコーラーIDと送信設定に関して、できることとできないことを説明します。


 

コーラーIDの読み込み

通話に関するcallerIDは、JSONのsession以下、to配列のidの部分に表示されます。


 
{
   "session":{
      "id":"71d00a781cc47bf46712344740701fe1",
      "accountId":"46256",
      "timestamp":"2011-05-06T14:23:23.608Z",
      "userType":"HUMAN",
      "initialText":null,
      "callId":"148d0ca6cd8a2423d3016d4ea2c6f90b",
      "to":{
         "id":"5855550100",
         "name":"+15855550100",
         "channel":"VOICE",
         "network":"SIP"
      },
      "from":{
         "id":"0901234XXXX",
         "name":"+10901234XXXX",
         "channel":"VOICE",
         "network":"SIP"
      }
   }
}

コーラーIDの設定

日本の環境においては、callerIDの設定は全て無視されます。 つまり、スクリプト上でどのようなcallerIDを設定しても、発信先には各アプリケーションに振り分けられている Tropoの番号が表示されることになります。 しかし、callerIDを取得して通話を振り分けることは可能です。以下は取得した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 == "0901234XXXX")
				    t.say(:value => "Aさんに転送します。")
				    t.transfer(:to => "039876XXXX")
				  elsif (callerID == "0909876XXXX")
				    t.say(:value => "Bさんに転送します。")
				    t.transfer(:to => "0701595XXXX")
				  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 == "0901234XXXX") {
				        tropo.say("Aさんに転送します。");
				        tropo.transfer("039876XXXX");
					    }
 				   else if(callerID == "0909876XXXX") {
				        tropo.say("Bさんに転送します。");
				        tropo.transfer("0701595XXXX");
				    }
				    else 
				        tropo.say("登録されていません。");	
        
				    response.end(TropoJSON(tropo));
					});

				}).listen(8000); 
			
				<?php

				require 'tropo.class.php';

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

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

				if ($callerID == '0901234XXXX') {
				    $tropo->say("Aさんに転送します。");
				    $tropo->transfer("039876XXXX");
				}
				elseif ($callerID == '0909876XXXX') {
				    $tropo->say("Bさんに転送します。");
				    $tropo->transfer("0701595XXXX");
				}
				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 == '0901234XXXX') :
				        t.say("Aさんに転送します。")
				        t.transfer("039876XXXX")
			    elif (callerID == '0909876XXXX') :
				        t.say("Bさんに転送します。")
				        t.transfer("0701595XXXX")
				    else :
				        t.say("登録されていません。")
        
				    return t.RenderJson()

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


			

 

SIPヘッダの設定と取得に関する詳細については次のページをご覧ください。