twilio如何用PHP和JavaScript从队列中选取一个呼叫。

问题描述 投票:0回答:1

我正在用twiml创建一个呼叫排队系统,一切都在工作,比如我可以接收呼叫和查询呼叫,但我不能从队列中选择呼叫,我写了这段代码,但它不工作。

这是我的twiml,当有来电时,我接到第一个电话,其他的电话会被排队,但现在第一个电话结束后,我不能选择排队的电话。

我接到第一个电话后,其他的电话就会被排队,但是现在第一个电话结束后,我无法接听排队的电话,而且当我挂断电话后,它把第一个来电放在队列中。

header("Content-type: text/xml");

$name = $_POST['name'];
$email = $_POST['email'];

$message = '<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Say>Please wait and one of our agents will be with you shortly.</Say>
    <Dial>
        <Client>joey</Client>
        <Parameter name="name" value="'.$name.'" />
        <Parameter name="email" value="'.$email.'" />
    </Dial>
    <Say>Our agents are still busy please hold.</Say>
    <Enqueue waitUrl="waiting.php">Support</Enqueue>
</Response>';

echo $message;

所以为了从队列中选择一个电话,我找到了这个Twilio的PHP代码。

use Twilio\TwiML\VoiceResponse;

$support = $_REQUEST['To'];

$response = new VoiceResponse();
$response->say("You will now be connected to the first caller in the queue.");
$dial = $response->dial('');
$dial->queue($support, ['url' => 'about_to_connect.php']);

echo $response;

用这个JavaSCript代码

 queueButton.click(function() {
        Twilio.Device.connect({
            To: 'Support'
        });
    });

在这里,我想按照这个答案 Twilio在队列中连接一个代理的呼叫。

但当我点击一个按钮来选择调用时,什么都没有发生,相反,我得到这个js错误信息

twilio.js:7100 Received an error from the gateway: {code: 31002, connection: Connection, message: "Connection Declined", twilioError: Error

code: 31005
description: "Connection error"
explanation: "A connection error occurred during the call"

总而言之,我只是需要一个解决方案,如何将一个代理连接到一个队列中,比如查看队列中有多少呼叫,并能够从队列中选择它们。

请帮忙

先谢谢你

javascript php twilio twilio-php twilio-twiml
1个回答
0
投票

我想明白了。

所以要想呼叫队列,我需要第二个号码,我可以用它来呼叫队列,但是我没有第二个号码,所以我有输入.php文件用于twiml Gather,我做了一个if语句来检查呼叫的用户是一个代理还是一个custome,如果是一个代理,我就拨一个队列。

if($_POST['user_type'] == 'agent'){
  <Response>
    <Dial>
        <Queue url="about_to_connect.xml">my_queue_name</Queue>
    </Dial>
</Response>
}else{
  //My Gather here
}

为了能够检查用户是代理还是客户,当我调用队列时,我传递了一个名为user_type的自定义变量。

let connection = Twilio.Device.connect({
  "user_type": "agent"
});

所以我就可以调用我的队列了,这时我才意识到twiml的厉害,它的工作就是控制呼叫。

我建议你买第二个号码,以免拖慢你的通话速度。

我建议你买第二个号码,以免拖慢你的通话速度。

© www.soinside.com 2019 - 2024. All rights reserved.