【问题标题】:How to answer a pending or incoming call using its callSid on Twilio client using PHP?如何在使用 PHP 的 Twilio 客户端上使用其 callSid 接听挂起或来电?
【发布时间】:2020-05-03 11:42:12
【问题描述】:

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

我收到多个电话并将信息注册到我的数据库中,如果我不希望我的 Twilio 客户端接听来电,我可以根据此 url 使用 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.

我该如何解决?

我需要你的帮助。

谢谢。

【问题讨论】:

  • 完全理解您的呼叫流程是一项挑战,因此,如果您有图表或一些要点说明您希望呼叫流程如何,一旦网站访问者启动客户端发出呼叫,这会很有帮助。

标签: php twilio twilio-api twilio-php


【解决方案1】:

您可以在不修改呼叫的情况下返回 TwiML,因为呼叫尚未建立。您在应用程序 SID 语音 URL 中将 TwiML 返回到网站端 Twilio 客户端 (twilio.js),指示它拨打您的客户端。

【讨论】:

    【解决方案2】:

    您收到一个 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      • 2018-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多