twilio - 用于虚拟呼叫中心的 Twilio IVR
问题描述
我需要为带有一些基本请求的虚拟呼叫中心创建一个 Twilio IVR。
- 来电连接并请求来自呼叫者的输入。
- 根据数字输入或语音输入,创建到代理的出站呼叫。这可以是同时调用或通过 TaskRouter 先进先出。
- 呼叫需要具有机器检测或收集输入以确保代理连接。主要目的是避免应答机,因为虚拟代表可能会忽略导致个人 VM 接听的呼叫。
- 如果在超时时间内没有座席连接,则将入站呼叫定向到语音邮件,该语音邮件将被转录并通过电子邮件发送到群组电子邮件。
最初我们通过 OpenVBX 提供了一个解决方案,尽管我不认为这是支持(并且 Twilio 平台已经进行了改进,这导致了新的解决方案)。我尝试仅使用 Twilio 托管平台 (StudioFlow) 和功能。
这是当前通向 TaskRouter 的 StudioFlow 流程。然后,TaskRouter 工作流回调我试图用来连接到排队调用者的函数。
TaskRoute 工作流回调是:/assignment
exports.handler = function(context, event, callback) {
const taskAttributes = JSON.parse(event.TaskAttributes),
workerAttributes = JSON.parse(event.WorkerAttributes),
client = context.getTwilioClient();
client.calls.create({
machineDetection: 'Enable',
url: 'https://' + context.DOMAIN_NAME + '/agent-response?ReservationSid='+event.ReservationSid+'&TaskSid='+event.TaskSid,
from: taskAttributes.called,
to: workerAttributes.contact_uri
});
};
然后 /agent-response
exports.handler = function(context, event, callback) {
var status = '';
console.log(JSON.stringify(event));
if (event.AnsweredBy !== 'machine_start') {
status = 'accepted';
}
if (status == 'accepted') {
return callback(null, {
'instruction': 'dequeue',
'post_work_activity_sid': '<AVAILABLE-SID>'
});
} else {
return callback(null,{
'instruction': 'reject'
});
}
};
因此,目前呼叫会通过机器检测发送给代理。我无法弄清楚如何将出站代理调用与排队的 TaskRouter 调用出列/连接。
有没有人有 1) 建议如何更有效地执行此操作和/或 2) 如何连接到排队的入站 sid?
谢谢!
解决方案
这是一种方法,我怎么能看到你的修复:
1)您不需要使用TaskRoute Workflow callback is: /assignment
. 您可以在工作流配置页面上设置所有需要的东西:
2) 一旦您将呼叫排入正确的队列,您将使用 Reservations for agent(您可以在此处阅读更多信息)
worker.on("reservation.created", function (reservation) {
reservation.conference(reservation.task.attributes.from,
// 这里使用会议,但您可以使用 Dequeue 或 Call 代替。
"IDLE ActivitySid",
undefined,
`client:${Current Agent Client Key}`,
undefined,
{
一些通话配置设置
});
});
3) 最后一步是使用 Twilio.Device(您可以在此处阅读完整规范)通过以下方式获取并启动此调用:
Twilio.Device.incoming(function (conn) {
// accept the incoming connection and start two-way audio
conn.accept();
});
如果您在构建 Twilio 呼叫中心时需要更多支持,请告诉我。
推荐阅读
- android - android studio中的数据库wal和shm
- python - Django Fernet 字段:InvalidToken at / 未提供异常消息
- php - PHP Session cookie 随机不安全,无法替换安全 cookie,90% 的 Firefox 用户都受到影响
- android - Android:生产构建中的分支 SDK 崩溃问题
- node.js - 如何使用 node.js 设置 VPS 服务器并指定端口?
- swiper - swiperjs 响应式浏览器宽度问题
- c# - Autofac没有解析其他项目中的接口
- r - 如何将此数据框转换为 R 中的多个时间序列对象?
- python - ImageMagick 在转换为 JPG 时将 NASA 的 [.IMG] 文件用黑线分割
- formio - Formio如何下载使用form io form创建的记录?