我目前正在开发一个涉及Twilio的项目,项目的一部分涉及获取4个数字的数组,并按顺序调用它们,直到其中一个接收它停止呼叫。一切似乎都在起作用,除了停止呼叫部分。
通过使用StatusCallback方法,即使在应答和确认呼叫后(通过使用动词在键盘上按1),它仍然继续呼叫其他号码。有没有办法让它只有在没有应答呼叫的情况下才会发生StatusCallback?
<?php
$twilio = new Services_Twilio($AccountSID, $AccountToken);
$twilioPhone = ""; // Twilio number
$numbers = Array(
trim($_GET["num1"]),
trim($_GET["num2"]),
trim($_GET["num3"]),
trim($_GET["num4"])
);
$message = trim($_GET["msg"]);
$called = $_GET["phone"];
$run = 0;
if ($called) {
$run = array_search($called, $numbers)+1;
}
if ($_GET['Digits']) {
// Code to be run when the call is confirmed
?>
<Response>
<Say voice="alice">Okay, this number has been confirmed.</Say>
</Response>
<?
exit;
} else {
if (empty($_GET["automated"]) || $_GET["automated"] == null) {
$paramString = "automated=1&num1=".$numbers[0]."&num2=".$numbers[1]."&num3=".$numbers[2]."&num4=".$numbers[3]."&msg=".$message;
header("location: URL_HERE/index.php?".$paramString);
} else {
try {
$call = $twilio -> account -> calls -> create(
$twilioPhone,
$numbers[$run],
'http://twimlets.com/echo?Twiml=%3CResponse%3E%3CSay%3E'.rawurlencode(stripslashes($message)).'%3C%2FSay%3E%3CPause%20length=%221%22%2F%3E%3CGather%20numDigits=%221%22%20action=%22URL_HERE%2Findex.php%22%20method=%22GET%22%3E%3CSay%3EPlease%20press%201%20to%20confirm%20you%20have%20recieved%20this%20message.%3C%2FSay%3E%3C%2FGather%3E%3C%2FResponse%3E',
Array(
"timeout"=>"15",
"ifmachine"=>"hangup",
"StatusCallback"=>"URL_HERE/index.php?automated=1&phone=".$numbers[$run]."&num1=".$numbers[0]."&num2=".$numbers[1]."&num3=".$numbers[2]."&num4=".$numbers[3]."&msg=".$message
)
);
} catch (Exception $err) {
echo "Error: " . $err -> getMessage();
}
}
}
?>
答案 0 :(得分:1)
Twilio开发者传播者在这里。
实现此功能的一种方法是使用FindMe Twimlet。
如果您想将其集成到自己的应用程序中,我建议您查看Twilio文档中的Call Screening HowTo。呼叫筛选如何按顺序呼叫号码列表,如果用户不按键接受呼叫,则仅转到下一个号码。