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

TaskRouter中能否将Agent已入队待接受的reservation重新分配至自身?

实现Agent转移待接受Reservation的方案

好问题!这个需求在Twilio TaskRouter里是完全可以实现的,不过需要结合API操作来完成,我给你拆解具体的思路和步骤:

核心思路

当Agent A的待接受(pending状态)Reservation存在时,我们可以通过取消该Reservation让任务重新回到队列,再通过自定义规则确保任务优先分配给Agent B;或者更精准地直接指定任务分配给Agent B。

具体步骤

1. 定位目标Reservation

首先需要获取Agent A对应的那条pending状态的Reservation信息。你可以通过TaskRouter的Task API,查询该呼叫对应的Task的所有Reservation列表,筛选出状态为pending且Worker(Agent)为Agent A的Reservation SID。

2. 取消Agent A的Reservation

调用Twilio的Reservation Update API,将该Reservation的状态设置为canceled,同时可以添加自定义的Reason参数(比如"Transferred to Agent B")来记录操作原因。
示例请求(伪代码):

from twilio.rest import Client

client = Client(account_sid, auth_token)

reservation = client.taskrouter.workspaces('WSXXXXXXXX') \
                    .tasks('WTXXXXXXXX') \
                    .reservations('WRXXXXXXXX') \
                    .update(reservation_status='canceled', reason='Transferred to Agent B')

当Reservation被取消后,对应的Task会回到队列,状态变为queued,等待重新分配。

3. 确保任务分配给Agent B(可选但推荐)

如果你想避免任务被其他符合条件的Agent抢走,可以在取消Reservation后,立即更新该Task的属性,添加TargetWorker参数,指定只分配给Agent B。比如:

task = client.taskrouter.workspaces('WSXXXXXXXX') \
             .tasks('WTXXXXXXXX') \
             .update(attributes='{"TargetWorker": "worker.sid == \'WBXXXXXXXX\'"}')

这里的WBXXXXXXXX是Agent B的Worker SID,这样Task重新进入匹配流程时,只会分配给符合该规则的Agent B。

注意事项

  • 操作时机:必须确保Reservation处于pending状态(Agent A未接听),如果Agent A已经接听,Reservation状态变为accepted,此时取消操作不会让任务回到队列。
  • 权限与安全:这些API操作必须在你的后端服务中完成,不能直接在前端调用(避免泄露Auth Token)。Agent B的客户端只需发起一个请求到你的后端,由后端执行上述API操作。
  • 客户端监听:Agent B的客户端需要保持监听TaskRouter的事件(比如reservation.created),这样才能及时收到新的Reservation通知。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:32:21