この質問は、タスクの属性の 1 つとして追加した WorkerSids のリストに対して、タスクでターゲット ワーカー式チェックを実行するという点で、以前に尋ねたものと似ています。しかし、この問題は、独自の質問を正当化するのに十分なほど異なると思います。
私の目標は、WorkerSids の「連絡しない」リストをタスクに関連付けることです。これらは、タスクを割り当てる必要のない作業者です (おそらく、顧客は以前に彼らと悪いやり取りをしていた可能性があります)。
次のワークフロー構成があります。
{
"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...
}
これで、タスクの属性の 1 つとして WorkerSids の配列がタスクに正常に割り当てられたことがわかります。
Idle であり、その属性がqueueSid
TaskQueue と一致するワーカーは 1 つだけです。そのワーカーの 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
希望するワークフロー動作を実現するには、何を変更する必要がありますか?