【问题标题】:Plivo PHP API 4.0, can't get callstatus or duration (action URL does not execute?)Plivo PHP API 4.0,无法获取调用状态或持续时间(操作 URL 不执行?)
【发布时间】:2018-02-18 22:49:24
【问题描述】:

我希望您能帮助我解决使用 Plivo PHP(新 SDK 4.0)拨打电话的问题。首先,我将说明我想要实现的目标: - 我网站上的一个客户想和main的代理交谈,所以他在表格中介绍了他的电话号码,选择了一个代理,最后在提交时,网站连接了他们两个拨号(这个工作)。但是,(从这里开始我的问题),我无法根据其中一些详细信息检索呼叫详细信息(状态、持续时间、呼叫的初始和结束日期等...)以便为客户开具发票。

2018 年 2 月 23 日编辑:

Ramya,600 错误已消失,一切似乎都正常,正如我在 Plivo 调试日志中看到的那样。以下是我的新代码(我认为由于您的指示做得更好),然后我向您展示 Plivo debud 日志(也许您可以在我的帐户,2018 年 2 月 23 日 18:33:15 拨打电话),最后我看到 我的服务器调试错误日志为空!

主要问题是 dialstatus.php 文件,虽然似乎接收了参数,但我不知道如何访问它们,因为 dialstatus.php 没有执行在我的监视器中显示数据(例如在我的代码中,这个线永远不会显示在监视器屏幕上:)

echo "Status = $estado, Aleg UUID = $aleg, Bleg UUID = $bleg";  

因此,即使它接收到参数,我也无法访问它们来操作它们、在屏幕上打印它们、对它们执行 ifs 等。这可能是文件的权限问题吗? (这些php文件在我的服务器上有6,4,4的权限,和其他的一样)。

谢谢!

代码 1:makecall.php

require 'vendor/autoload.php';
use Plivo\RestClient;

$client = new RestClient("**********", "**************************");

$telefono_cliente = "34*******";
$telefono_experto = "34*********";
$duracion = 50;

try {
$response = $client->calls->create(
    "3491111111",
    [$telefono_experto],
    "https://www.ejemplo.com/llamar/response.php?telf=$telefono_cliente",
    'POST',

    [
        'time_limit' => $duracion,
    ]
);

$id = $response->requestUuid;
echo "<br>Este es el requestUuid: " . $id . "<br><br>";

}
catch (PlivoRestException $ex) {
print_r($ex);
}

?>

代码 2:response.php

require 'vendor/autoload.php';

use Plivo\XML\Response;

$resp = new Response();

    $params = array(
        'callerId' => '3491111111',
        'action' => "https://www.ejemplo.com/llamar/dialstatus.php",
        'method' => "POST",
        'redirect' => "false"
    );

    $body3 = 'Desde ejemplo un cliente desea hablar con usted.';
    $params3 = array(
        'language' => "es-ES", # Language used to read out the text.
        'voice' => "WOMAN" # The tone to be used for reading out the text.
    );
    $resp->addSpeak($body3,$params3);    

    $dial = $resp->addDial($params);
    //$number = "34**********";
    $number = $_GET['telf'];
    $dial->addNumber($number);

    Header('Content-type: text/xml');
    echo($resp->toXML());

/*
Output:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Speak language="es-ES" voice="WOMAN">Desde ejemplo un cliente desea hablar con usted.</Speak>
    <Dial redirect="false" method="POST" action="http://www.ejemplo.com/llamar/dialstatus.php" callerId="3491111111">
        <Number>34********</Number>
    </Dial>
</Response>
*/
?>

代码 3:dialstatus.php

// Print the Dial Details
$estado = $_REQUEST['DialStatus'];
$aleg = $_REQUEST['DialALegUUID'];
$bleg = $_REQUEST['DialBLegUUID'];

echo "Status = $estado, Aleg UUID = $aleg, Bleg UUID = $bleg";

?>

【问题讨论】:

    标签: php status phone-call duration plivo


    【解决方案1】:

    这里是 Plivo 销售工程师。

    1. Redirect = true 仅在您希望通过在操作 URL 中返回另一个 XML 来继续调用时使用。对于您的用例,您不必使用此参数。即使 Redirect 设置为 false,Plivo 也会使用参数列表向操作 URL 发出请求。我查看了您的帐户 (here),我可以看到这个请求与 DialStatus、ALegUUID、BLegUUID 以及其他参数一起发送。

    2. 拨号操作 URL 是了解 DialStatus 和 DialHangupCause 的最佳位置。

    您也可以在Hangup URL request 中找到通话时长和计费金额。这个挂断 URL 可以在您的第一个 API 调用(给专家)中配置。默认情况下,挂断 URL 设置为应答 URL。

    请向我们发送support ticket 以获得进一步的帮助。

    【讨论】:

    • 谢谢拉米亚!但我无法理解(肯定很容易)是为什么用于在屏幕上打印结果的“dial_status.php”文件没有运行(也许它正确接收参数,但没有执行以在屏幕上显示它们或句柄它们带有变量)。换句话说:我的问题是我应该以自己的方式运行文件“dial_status.php(代码3)”,还是应该自动运行? (在我的测试中它不会自动运行)所以如果你能解释它是如何工作的并给我一个例子,那就太好了。 (我开了一张票,但答案是没有任何许可的一行!)。
    • dial_satus.php 应该自动执行,不需要手动运行。你看到这个请求进入你的服务器了吗?你可以设置redirect=false吗?您可以使用 Requestb.in (requestb.in) HTTP 监控工具来检查请求是否命中操作 URL。只需将操作 URL 替换为 requestb.in url 并运行测试。
    • 谢谢拉米亚!至少我知道它应该自动运行,但还没有幸运。我用以下结果编辑了帖子:1)设置redirect = false(这样,来自Plivo的调用调试得到错误600)。 2)测试requestb.in。非常感谢您的耐心等待。
    • 从您的 requestb.in 输出中,很明显 Plivo 正在向您的操作 url 发出请求。在托管 dial_status.php 的服务器中,您是否看到任何传入请求的日志?当 Dial 结束时,Plivo 会通知这个 url。我正在检查为什么有 600 状态,但我可以看到发送到 dial_status.php 的请求的日志。你能检查你的服务器日志并添加一些调试行吗?
    • 嗨,拉米亚,谢谢!我根据您的指示编辑了最后的更改。错误已经消失(没有 600 错误),但 dialstatus.php 没有执行并显示在监视器屏幕上,尽管收到了参数。
    猜你喜欢
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2020-09-17
    • 2022-11-25
    相关资源
    最近更新 更多