首页 > 解决方案 > 如何在使用 PHP 的 Twilio 客户端上使用其 callSid 接听挂起或来电?

问题描述

我正在按照 Javascript 快速入门在我的网站上部署 Twilio: https ://www.twilio.com/docs/voice/client/javascript/quickstart

我收到多个电话并将信息注册到我的数据库,如果我不希望我的 Twilio 客户端接听来电,我可以根据以下网址使用 callSid 挂断:https ://www.twilio.com/docs/voice/ api/call-resource?code-sample=code-update-a-call-resource-to-end-the-call&code-language=PHP&code-sdk-version=5.x

代码:

<?php 

include "../../../twilio_client/vendor/autoload.php";

use Twilio\Rest\Client;

$callsid = $_POST['callsid'];

// put your Twilio API credentials here
$accountSid = 'AC2XXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$authToken  = '67XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$twilio = new Client($accountSid, $authToken);

$call = $twilio->calls($callsid)->update(array("status" => "canceled"));
$calla = $twilio->calls($callsid)->fetch();
$parentCall = $calla->parentCallSid;
$call = $twilio->calls($parentCall)->update(array("status" => "completed"));

?>

这很好用,所以以同样的方式,但如果我想使用 callSid 接听来电,我根据这个 url 尝试了这个:https://www.twilio.com/docs/voice/api/call-resource? code-sample=code-update-a-call-in-progress-with-twiml

代码:

<?php 

include "../../../twilio_client/vendor/autoload.php";

use Twilio\Rest\Client;

$callsid = $_POST['callsid']; //callSid
$usrclient = $_POST['usrclient'];//client connected to receive calls

// put your Twilio API credentials here
$accountSid = 'AC2XXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$authToken  = '67XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$twilio = new Client($accountSid, $authToken);

$call = $twilio->calls($callsid)->update(array("twiml" => "<Response><Dial><Client>".$usrclient."</Client></Dial></Response>"));

?>

但它不起作用,它向我显示了这个错误: [Wed Jan 15 23:14:06.493068 2020] [:error] [pid 30189] [client 190.239.139.220:18718] PHP Fatal error: Uncaught exception 'Twilio\\Exceptions\\RestException' with message '[HTTP 400] Unable to update record: Call is not in-progress.

我该如何解决?

我需要你的帮助。

谢谢。

标签: phptwiliotwilio-apitwilio-php

解决方案


您收到 HTTP 400 错误,即BAD REQUEST. Twilio 将其定义为:The data given in the POST or PUT failed validation. Inspect the response body for details. https ://www.twilio.com/docs/usage/your-request-to-twilio

你有错误:call is not in-progress

据我所知,您的 $_POST['usrclient'] 不正确。检查您的 POST 以确保其有效。

您还可以通过将 Twiml 更改为简单的东西并自己调用它来测试您的脚本。然后你就会知道是脚本还是usrclient

<Response><Say>Ahoy there</Say></Response>

推荐阅读