问题标签 [twilio-taskrouter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
649 浏览

twilio - Twilio 任务预留超时

我们目前正在使用 Twilio TaskRouter 实施一个新的联络中心。

所需的功能是:

  • 响铃第一个与过滤条件“销售”匹配的可用工作人员
  • 如果 Reservation 超时(Worker 没有应答),则振铃后续的 Worker
  • 如果所有可用的工作人员都超时或拒绝,则将任务移动到另一个队列

一切似乎都运行良好,但我们还没有想出如何更改超时时间(在 Worker 拿起电话之前给出的时间 - 接受预订)

更改工作流中的任务保留超时没有效果,我们总是得到 60 秒?

应该在哪里更改超时设置?我们使用作为 chrome 扩展实现的 TaskRouter JS 客户端......是 JS 客户端中的设置吗?

0 投票
0 回答
200 浏览

twilio - 匹配工人的 Twilio“最长空闲”订购未按预期工作

启用多任务处理的工作区。TaskQueue1 具有匹配的工作程序 Woker1 和 Worker2。Worker1 首先联机(状态设置为“空闲”),然后 Worker2 联机。使用 Wokflow Queue 为 TaskQueue1 创建的任务也设置为 TaskQueue1。正如预期的那样,这个任务被保留给 Worker1。Worker1 接受预订并开始工作。
场景 1: Worker1 完成任务(更新 task.status=completed)。接下来为同一任务队列创建一个新任务,并将其保留给 Worker2,它按预期满足“最长空闲”排序。
方案 2:Worker1 仍在处理任务。Worker2 进入离线状态(状态设置为“离线”)并立即恢复在线状态。Worker1 完成任务(更新 task.status=completed)。接下来为同一个任务队列创建一个新任务,但这次任务再次保留给 Worker1,即使 Worker2 在 Worker1 处理第一个任务时上线。
谁能解释为什么这两种情况下的行为不同?

0 投票
1 回答
334 浏览

twilio - 当 websocket 断开连接时,Taskrouter 工作人员活动未更改

我正在使用 twiliotaskrouter13.min.js 来启动一个使用

预期的行为是,当 websocket 被丢弃时,代理会自动移动到“离线”状态

添加连接和断开活动,并关闭现有>会话

var worker = new Twilio.TaskRouter.Worker(WORKER_TOKEN, false, "WAxxx", "WAyy", true);

https://www.twilio.com/docs/taskrouter/js-sdk/worker#taskrouterworker

但是,这似乎不是当前的行为,我对几个工作人员进行了测试,看起来工作人员在 websocket 断开连接后仍处于当前状态。

有人知道我们是否遗漏了什么吗?也许是不同的配置或某个地方的超时?

0 投票
0 回答
99 浏览

twilio - 为会议的来电设置 Twilio 客户端 customParameters

我目前正在将 Twilio Client 用于我们所有的端点,并且我们所有的呼叫段都通过代理会议进行桥接。因此,对 Twilio 客户端的调用是由入站呼叫上的任务路由器“会议”​​命令或代理会议参与者 API 进行的。我想为我的客户端应用程序提供有关传入呼叫的​​更多信息,例如使用 customParameters,但在使用会议界面创建呼叫时找不到传递其他信息的方法。

0 投票
1 回答
185 浏览

twilio - TaskRouter:离开队列

我正在建立一个呼叫中心,我需要一种让人们“退出队列”以留下语音邮件或被重定向到紧急联系人的方法。我希望他们每 2 分钟左右就有一次该选项(这是一条医疗热线)。

我能想到的最好的方法是waitUrl在动词顶部使用 a <Enqueue>,它会定期让呼叫者按 1 表示语音邮件或按 2 表示紧急情况。

如果我只需要一个或另一个,我可以简单地使用<Leave />并在<Enqueue>重定向后使用动词或捕获录音。

不幸的是,因为我<Gather>(数字 1 或 2)在waitUrl我需要<Leave />动词根据数字将我带到特定的 URL/操作 - 这是不可能的。

有什么创造性的解决方案吗?

谢谢

0 投票
1 回答
146 浏览

twilio - 通过更新其语音通道容量来防止工作人员接收语音任务

我目前正在使用任务路由器将呼叫路由到我的工作人员,并且我想暂时阻止某些工作人员获得分配的语音任务。我认为通过将语音的工作通道容量更新为 0 或将语音工作通道标记为不可用意味着虽然工作人员仍然是队列的一部分(基于其自定义属性),但如果有任何语音任务进入,他们不会分配给那个工人。情况似乎并非如此,我的工作人员仍然收到语音任务的预订。

我尝试通过将此检查添加到队列表达式“... AND worker.channel.voice.configured_capacity > 0”来更新我的队列以仅包含具有语音容量的工作人员,但是在控制台中保存队列时,我得到一个错误提示“TaskQueue 上的 TargetWorkersExpression 中不允许 Worker 通道容量表达式”,这让我相信这不是正确的做法。

我能看到的唯一其他解决方案是在工作流程的每一步都将上述工作通道容量检查添加到目标表达式中,但这将更难维护。

我不禁觉得我错过或误解了工作人员通道容量的工作原理或用途。值得一提的是,我的工作区禁用了多任务处理。

0 投票
1 回答
197 浏览

twilio - 查找当前分配给特定工作人员的语音任务

这听起来很简单,但我不确定我能做到这一点。我想知道特定工作人员当前正在处理什么语音任务(如果有),而无需在将任务分配给该工作人员时将这些信息存储在我身边。

我寻找这个的原因是因为我正在使用会议来接听代理的来电,并且我想为主管实施耳语/插入/教练。他们会知道哪些座席当前正在通话(基于座席的忙碌活动)并根据他们想要指导的座席的 workerSid,我希望能够获得他们当前正在处理的语音任务并加入该会议(因为 TaskSid 也是会议友好名称)。

我可以遍历当前打开的任务,试图找到正确的任务,但似乎没有任何处于已分配状态的任务表明它被分配给了谁。我只能使用从 Twilio 获得的信息来执行此操作的唯一方法有点太混乱了:

任何其他方式似乎都涉及遍历当前正在进行的会议,然后遍历他们的参与者以找到对代理的 contact_uri 进行的呼叫分支,以指导确定要加入的正确会议,这在我的情况下会更加混乱观点。

我想知道我是否缺少明显的东西。

0 投票
1 回答
870 浏览

node.js - Twilio Taskrouter:如何防止队列中的最后一个工作人员被重新分配拒绝任务?

我正在使用 NodeJS 来管理 Twilio Taskrouter 工作流程。我的目标是将任务分配给用 标识的主队列中的空闲工作人员queueSid,除非以下情况之一为真:

  1. 队列中没有任何工作人员设置为空闲

  2. 该任务的预订已被队列中的每个工作人员拒绝

在这些情况下,任务应该落到用 标识的下一个队列automaticQueueSid。以下是我为工作流构建 JSON 的方式(它包含一个过滤器,因此来自代理的入站呼叫不应生成对同一代理的出站呼叫):

这导致在任务到达队列后不会创建保留。我的事件记录器显示发生了以下事件:

这就是它所能得到的,就挂在那里。当我更换线路时

然后为下一个可用的工作人员正确创建预订,或者automaticQueueSid如果在来电时没有工作人员可用,则将预订发送给,所以我猜skip_if它工作正常。所以也许我写目标表达式的方式有问题?

我尝试通过在拒绝预订后将工作人员设置为不可用来解决此问题,如下所示:

但似乎正在发生的事情是,一旦预订被拒绝,在worker.updateWorkerFromSid()被调用之前,Taskrouter 已经生成了一个新的预订并将其分配给同一个工作人员,并且我的活动更新失败并出现以下错误:

最终,worker 似乎自然地设置为 Offline 并且任务确实超时并被移动到下一个队列中,如以下事件/描述所示:

在此之后,任务被移动到下一个队列automaticQueueSid,由在该队列中注册的可用工作人员处理。我不确定为什么要使用超时,因为我的工作流配置中没有包含一个。

我很困惑——在最后一个工人的预订被拒绝后,我怎样才能让任务成功地移动到下一个队列?

更新:虽然@philnash 的回答帮助我正确处理了这个worker.sid NOT IN task.rejectedWorkers问题,但我最终在更新工作人员的可用性时使用 RejectPendingReservations 参数实现了这个功能。

0 投票
1 回答
170 浏览

node.js - Twilio Taskrouter:如何在工作流配置中实现 WorkerSid 的“不联系”列表?

这个问题与我之前提出的问题类似,因为我希望任务对我添加为任务属性之一的 WorkerSid 列表执行目标工作人员表达式检查。但我认为这个问题的不同足以证明它自己的问题。

我的目标是将 WorkerSid 的“不联系”列表与任务相关联;这些是不应该被分配任务的工人(也许客户以前与他们的互动不好)。

我有以下工作流程配置:

当我创建任务时,检查 Twilio 控制台,我可以看到该任务具有以下属性:

所以我知道该任务已成功分配 WorkerSids 数组作为其属性之一。

只有一名工作人员处于空闲状态,其属性与任务队列匹配queueSid。该工作人员的 SID 是WORKER_SID1_HERE,因此唯一可用的工作人员没有资格接收任务预留。所以应该发生的是第一个目标表达式worker.sid not in task.do_not_contact返回false,并且任务落入automaticQueueSidTaskQueue。

相反,该任务仍处于queueSid未分配状态。记录以下 Taskrouter 事件序列:

我需要更改哪些内容才能获得所需的工作流行为?

0 投票
1 回答
64 浏览

twilio - 跳过超时表达式字段在 Twilio Java Helper 库中不可用

我正在尝试使用 Twilio Java SDK (7.40.0) 创建一个工作流。我需要将“跳过超时表达式”(https://www.twilio.com/docs/taskrouter/worker-presence)设置为路由步骤的一部分。但我无法在 WorkflowRuleTarget 类中找到用于设置“跳过超时表达式”的字段。我如何设置这个字段?