首页 > 解决方案 > 如果用户未使用 Twilio 应答,请再次呼叫用户

问题描述

编辑:现在工作,将此帖子编辑为工作脚本。 我正在设置一个警报,如果传感器达到某个值,它会呼叫用户。我已经让呼叫部分工作,但如果用户没有拿起电话,我需要 Twilio 再次呼叫用户。

目前,Twilio 打电话给用户,告诉他警报响了。如果用户在 15 秒内没有接听电话,Twilio 将结束通话,因此不会转到语音信箱。现在,呼叫的状态将在 Twilio 控制台中为“无应答”。我试过以下代码:

在我的 call.php 中:

<?php
require __DIR__ . '/vendor/autoload.php';

use Twilio\Rest\Client;

// /include 'insertcall.php';


// Your Account SID and Auth Token from twilio.com/console
$account_sid = 'xxx';
$auth_token = 'xxx';
// In production, these should be environment variables. E.g.:
// $auth_token = $_ENV["TWILIO_ACCOUNT_SID"]




// A Twilio number you own with Voice capabilities
$twilio_number = "+12242631292";

// Where to make a voice call (your cell phone?)
$time = time();
$call_id = $sensor_id . $time;
echo "callid: ";
echo $call_id;
echo "<br><br>";
$client = new Client($account_sid, $auth_token);
$client->account->calls->create(

    $callto,
    $twilio_number,
    array(
        "machineDetection" => "DetectMessageEnd",
        "url" => "https://link.nl/includes/alarmbot/includes/cas_xml.inc.php?sensor=$sensor_id",
        "statusCallbackMethod" => "POST",
        "statusCallback" => "https://link.nl/includes/alarmbot/callback.php?sensor=$sensor_id&callid=$call_id",
        "statusCallbackEvent" => array(
            "completed"
        ),
        "timeout" => 15 // Wanneer niemand op neemt na 15 sec -> No Answer zodat we niet naar voicemail gaan en alsnog als completed gaat.
    )
);





$conn = mysqli_connect($servername, $username, $password, $dbname);

$sql5 = "INSERT INTO twilio_calls (id, sensor_id, completed) VALUES ($call_id, '$sensor_id', '0')";

if ($conn->query($sql5) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql5 . "<br>" . $conn->error;
}

在我的 callback.php 中:

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
setlocale(LC_ALL, 'nl_NL');
require 'includes/boot.php';

use Twilio\Rest\Client;


$servername = "localhost";
$username = "xxx";
$password = "xxx";
$dbname = 'xxx';

$account_sid = 'xxx';
$auth_token = 'xxx';

if (isset($_REQUEST['CallStatus'])) {
    $call_status = $_REQUEST['CallStatus'];
    $call_id = $_REQUEST['callid'];

    $twilio_number = "+mynumber";


    echo $call_status;
    echo "<br>";
    echo $call_id;
    echo "<br>";
    if ($call_status !== 'completed' && $call_status !== 'busy') {
        $conn = mysqli_connect($servername, $username, $password, $dbname);

        $sql = "SELECT * FROM twilio_calls WHERE id='$call_id'";
        $result = $conn->query($sql);

        if ($result->num_rows > 0) {
            while ($row = $result->fetch_assoc()) {
                $sensor_id = $row['sensor_id'];
                $sql_2 = "SELECT telefoonnummer FROM alarmnummers WHERE sensor_id='$sensor_id' AND backup = 1";
                $result_2 = $conn->query($sql_2);

                if ($result_2->num_rows > 0) {
                    while ($row_2 = $result_2->fetch_assoc()) {
                        $telefoonnummer = $row_2['telefoonnummer'];
                        echo $telefoonnummer;
                        $client = new Client($account_sid, $auth_token);
                        $client->account->calls->create(
                            $telefoonnummer,
                            $twilio_number,
                            array(
                                "url" => "https://link.nl/includes/alarmbot/includes/callback.php?sensor=$sensor_id",
                                "timeout" => 15
                            )
                        );
                    }
                } else {
                    echo "query ni goed";
                }

                $sql_3 = "UPDATE twilio_calls SET completed=1 WHERE id='$call_id'";
                $conn->query($sql_3);
            }
        } else {
            echo "andere query ni goed";
        }
    } else {
        $sql = "UPDATE twilio_calls SET completed=1 WHERE id='$call_id'";
        $conn->query($sql);
        echo "Updated, call busy or completed";
    }
} else {
    echo 'No valid callback';
}

所以当他/她没有接听时,我需要再次打电话给用户。我不确定我应该怎么做。

标签: phptwilio

解决方案


推荐阅读