You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在客户接听前将坐席接入Twilio外呼通话?

解决Twilio Flex外呼坐席延迟接起问题

核心问题是任务创建时机太晚——你当前是客户接听后才将通话入队分配给坐席,自然会导致坐席错过通话开头。最简便的解决方法是提前创建任务,在发起外呼的同时就将任务推送给坐席,等客户接听后直接桥接通话,具体步骤如下:

1. 调整流程逻辑

  • 第一步:先通过Twilio TaskRouter创建外呼任务,分配给空闲坐席
  • 第二步:任务分配完成后,发起给客户的外呼
  • 第三步:客户接听后,直接将通话桥接到已分配的坐席

2. 修改发起外呼的Twilio函数

先创建TaskRouter任务,再发起外呼:

// 先创建TaskRouter任务
const task = await client.taskrouter.workspaces(context.TWILIO_WORKSPACE_SID)
  .tasks
  .create({
    attributes: JSON.stringify({
      to: event.To,
      from: event.From,
      direction: "outbound",
      // 其他需要传递给坐席的业务属性
    }),
    workflowSid: context.TWILIO_WORKFLOW_SID,
    taskChannel: "voice"
  });

// 再发起外呼,URL指向负责桥接通话的函数
await client.calls.create({
  url: `https://your-twilio-function-domain.com/connect-call?taskSid=${task.sid}`,
  to: event.To,
  from: event.From,
  statusCallback: statusCallbackURL,
  statusCallbackEvent: ["ringing", "answered", "completed", "failed", "busy", "no-answer"]
});

3. 编写桥接通话的Twilio函数

上面url指向的函数返回Twiml,用<Connect>直接连接到已创建的任务:

const taskSid = event.taskSid;
const twiml = new Twilio.twiml.VoiceResponse();
// 直接桥接到指定TaskRouter任务
twiml.connect({
  taskSid: taskSid
});
callback(null, twiml);

4. 处理客户未接听的情况

在statusCallback对应的函数中,监听通话未接通状态,删除已创建的TaskRouter任务,避免坐席接到无效任务:

if (["failed", "busy", "no-answer"].includes(event.CallStatus)) {
  await client.taskrouter.workspaces(context.TWILIO_WORKSPACE_SID)
    .tasks(event.TaskSid)
    .remove();
}

额外优化点

  • 在任务属性中添加autoAnswer: true,配置Flex自动接听外呼任务,进一步缩短响应延迟
  • 确保Workflow路由规则优先分配当前空闲的坐席,避免任务等待分配的时间损耗

内容的提问来源于stack exchange,提问作者ege

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 17:05:31