无法获取使用 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?
我正在尝试使用 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?