Twilio条件StatusCallback

时间:2013-12-13 02:02:26

标签: php twilio

我目前正在开发一个涉及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();
        }
    }

}
?>

1 个答案:

答案 0 :(得分:1)

Twilio开发者传播者在这里。

实现此功能的一种方法是使用FindMe Twimlet

如果您想将其集成到自己的应用程序中,我建议您查看Twilio文档中的Call Screening HowTo。呼叫筛选如何按顺序呼叫号码列表,如果用户不按键接受呼叫,则仅转到下一个号码。