这个问题与我之前提出的问题类似,因为我希望任务对我添加为任务属性之一的 WorkerSid 列表执行目标工作人员表达式检查。但我认为这个问题的不同足以证明它自己的问题。
我的目标是将 WorkerSid 的“不联系”列表与任务相关联;这些是不应该被分配任务的工人(也许客户以前与他们的互动不好)。
我有以下工作流程配置:
{
"task_routing":{
"filters":[
{
"filter_friendly_name":"don't call self",
"expression":"1==1",
"targets":[
{
"queue":queueSid,
"expression":"(task.caller!=worker.contact_uri) and (worker.sid not in task.do_not_contact)",
"skip_if": "workers.available == 0"
},
{
"queue":automaticQueueSid
}
]
}
],
"default_filter":{
"queue":queueSid
}
}
}
当我创建任务时,检查 Twilio 控制台,我可以看到该任务具有以下属性:
{"from_country":"US","do_not_contact":["WORKER_SID1_HERE","WORKER_SID_2_HERE"],
... bunch of other attributes...
}
所以我知道该任务已成功分配 WorkerSids 数组作为其属性之一。
只有一名工作人员处于空闲状态,其属性与任务队列匹配queueSid
。该工作人员的 SID 是WORKER_SID1_HERE
,因此唯一可用的工作人员没有资格接收任务预留。所以应该发生的是第一个目标表达式worker.sid not in task.do_not_contact
返回false
,并且任务落入automaticQueueSid
TaskQueue。
相反,该任务仍处于queueSid
未分配状态。记录以下 Taskrouter 事件序列:
task-queue.entered
Task TASK_SID entered TaskQueue QUEUESID_QUEUENAME
task.created
Task TASK_SID created
workflow.target-matched
Task TASK_SID matched a workflow target
workflow.entered
Task TASK_SID entered Workflow WORKFLOW_NAME
我需要更改哪些内容才能获得所需的工作流行为?