「出るまで、順番に電話をかける」というお題で、今更Twilioを使ってみました。
TROPOの方が情報が少なくて手探りで面白そうとでしたが、そこにはスケジュールがの壁が。。
PHP版で良いサンプルがなかったので、備忘録も兼ねてソースをアップします。
構成は電話をかけるPHPと喋らす内容を記述したXMLの2つのファイルです。
Twilioの情報と、電話番号の別ファイルでの管理部分と、電話後のメッセージの取り扱いは環境によりけりなので割愛しています。
割愛しすぎて間違えているところがあるかも知れませんが。。
##■call.php
<?php
require "Twilio.phpのパス";
// パラメーター
$status = $_REQUEST["CallStatus"];
$count = $_REQUEST["count"];
$total = $_REQUEST["total"];
// 連絡先用番号の処理
if($count == ''){
$currentcount = 0;
}else{
$currentcount = $count + 1;
}
// 電話をかけた回数の処理
$total++;
// Twilio用設定
//$sid ACCOUNT SID
//$token AUTH TOKEN
//$timeout 電話を鳴らす秒数
//$maxcall 電話をかける回数
//$from 発信元
//$xml Twilio動作用XML
//$url コールバックのURL
// 電話番号
// コールバックのURLに何人目かを仕込んでいるので順々に電話
$number = array('***********','***********','***********');
if(count($number) == $currentcount){
$currentcount = 0;
}
// Call back用URL の生成
$url = str_replace('COUNT',$currentcount,$url);
$url = str_replace('TOTAL',$total,$url);
// 電話の処理
$exec = 0;
if($status != 'completed'){
if($total <= $maxcall){
$msg = $number[$count].' に電話をします。';
$client = new Services_Twilio($sid,$token);
$call = $client->account->calls->create($from,$number[$count],
$xml,array(
"StatusCallback" => "$url",
"Timeout" => "$timeout"
));
}else{
$msg = '誰も電話に出てくれない。';
}
}else{
$msg = $number[$count].' が電話に出ました。';
}
?>
##■call.xml
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say language="ja-jp">喋らせたい文言</Say>
</Response>