无法获取使用 Twilio 连接函数传递给拨出和拨入呼叫的自定义参数

Unable to get custom parameters passed using Twilio connect function for outgoing and incoming calls

我正在尝试使用 Twilio 创建一个呼叫中心,我快到了,但现在卡住了,因为我无法获得自定义传递的参数。

我的主要目的是让客户打电话,但首先他们应该先提供他们的电子邮件和姓名,然后单击呼叫客户按钮,我想在代理端接收自定义参数。

现在我尝试传递参数,但我无法检索它们。

这是我用来拨打和接听电话以及传递和获取参数的代码

(客户方)此代码允许拨出电话,客户拨打呼叫中心代理

require __DIR__ . '/vendor/autoload.php';
use Twilio\Jwt\ClientToken;

$accountSid = '';
$authToken  = '';
$appSid = '';

$capability = new ClientToken($accountSid, $authToken);
$capability->allowClientOutgoing($appSid);
$token = $capability->generateToken();

所以根据文档,我应该像这样传递自定义参数:

var params = {"name": "John", "email": "john@gmail.com"};
             Twilio.Device.connect(params);

(座席端)此代码允许从客户到座席的来电。

$accountSid = '';
$authToken  = '';

$capability = new ClientToken($accountSid, $authToken);
$capability->allowClientIncoming('joey');
$token = $capability->generateToken();

在代理端,我使用此代码接收客户信息或自定义参数。 根据文档,获取自定义参数的代码是这样的:

if (connection.customParameters.hasOwnProperty("name")) {
            let displayName = connection.customParameters.get("name");
            console.log(displayName)
        }

        if (connection.customParameters.hasOwnProperty("email")) {
            let customerID = connection.customParameters.get("email");
            console.log(customerID)
        }

但我不确定

因此,当客户调用此 twilio 函数时,会将呼叫排入队列并将其分配给接线员

代码如下:

exports.handler = function(context, event, callback) {
  let twiml = new Twilio.twiml.VoiceResponse();

    twiml.say(" Please hold, while we connect you to one of our available agent ");
    twiml.enqueue({
    workflowSid: context.WORKFLOW_SID
    }).task({}, `{"selected_skill":"operator"}`);
  callback(null, twiml);
};

然后,可用的接线员将从这里接受任务,然后拨打代理

接线员这样拨客户端

{"skills":["operator"],"contact_uri":"client:joey"}

请帮忙 提前致谢

根据我对相关文档的看法,参数似乎仅通过 TwiML 发送到 Twilio 客户端,如此处所示。

https://www.twilio.com/docs/voice/client/javascript/changelog#160-aug-29-2018

Added support for custom incoming parameters from TwiML as Map Connection.customParameters. When a TwiML application sends custom parameters using the noun, these parameters will be added to Connection.customParameters

<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Dial>
    <Client>
      <Identity>alice</Identity>
      <Parameter name="foo" value="bar"/>
      <Parameter name="baz" value="123"/>
    </Client>
  </Dial>
</Response>

听起来您正在使用任务路由器 JavaScript SDK,也许您可​​以将这些参数作为属性添加到 task, and then access those tasks from the Task Router client SDK?