如何获取特定TaskRouter队列中无任务分配的坐席数量?
获取Twilio TaskRouter特定队列中无任务分配的坐席数量
TaskQueue Statistics API返回的activity_statistics仅按坐席状态统计人数,无法区分同状态下是否有任务分配。要获取特定队列中无论状态、当前无任务分配的坐席数量,可通过以下方式实现:
方式一:通过TaskQueue Workers API遍历统计
- 调用TaskRouter的
TaskQueue Workers接口,获取目标队列下的所有坐席(Worker)列表 - 对每个Worker,通过以下字段判断是否无任务分配:
current_task_sid:为空表示当前没有正在处理的任务reservation_count:为0表示没有待确认的保留任务
- 统计同时满足上述两个条件的Worker数量
示例逻辑(伪代码):
# 假设已初始化Twilio客户端 target_task_queue_sid = "WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" workers = client.taskrouter.workspaces("WSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") \ .task_queues(target_task_queue_sid) \ .workers.list() taskless_worker_count = 0 for worker in workers: if worker.current_task_sid is None and worker.reservation_count == 0: taskless_worker_count += 1 print(f"无任务分配的坐席数量:{taskless_worker_count}")
方式二:通过Workspace Workers API筛选统计
如果需要更灵活的筛选条件,可直接调用Workspace Workers接口,通过task_queue_sid参数过滤出目标队列的坐席,再按同样的任务状态条件统计:
workers = client.taskrouter.workspaces("WSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") \ .workers.list(task_queue_sid=target_task_queue_sid) # 后续统计逻辑同方式一
优化建议
如果仪表盘需要实时更新统计数据,频繁遍历Worker API可能带来性能开销,建议结合Twilio TaskRouter的**实时事件(Real-time Events)**或Webhooks:
- 监听Worker的任务分配、完成、取消等事件
- 在本地维护缓存,实时更新每个Worker的任务状态
- 直接从缓存中统计目标队列的无任务坐席数量,减少API调用频次
内容的提问来源于stack exchange,提问作者SO-user
相关产品推荐
相关产品推荐

