php - 如何在使用 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.
我该如何解决?
我需要你的帮助。
谢谢。
解决方案
您收到 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>
推荐阅读
- swift - 如何在 Mac OSX 上更正 NSLinguisticTagger 函数并出现错误“Type 'String' has no member 'tokenType'”(该函数适用于 iOS)?
- excel - 复制活动工作表中的非连续范围以选择工作表
- dynamics-crm - 如何在相关实体上创建汇总字段?
- haskell - 如何编写需要非零数字的非空列表的 QuickCheck 属性?
- python-2.7 - xarray - 无法读取数据
- amazon-web-services - AWS ECS 开发工具包。使用开发工具包为 ECS 集群注册新容器实例 (EC2)
- c# - ASP.NET 应用程序未启动 - 404
- security - twitter 上的图像哈希值(q-anon 阴谋)
- android - 在 show() 之前获取 DialogFragment 子类中的父活动
- vb.net - LINQ to SQL 中的不同没有按预期工作(完全)