0

この質問は、タスクの属性の 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 であり、その属性がqueueSidTaskQueue と一致するワーカーは 1 つだけです。そのワーカーの SID はWORKER_SID1_HEREであるため、利用可能な唯一のワーカーはタスク予約を受け取る資格がありません。したがって、最初のターゲット式が をworker.sid not in task.do_not_contact返しfalse、タスクがautomaticQueueSidTaskQueue にフォールスルーするはずです。

代わりに、タスクは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

希望するワークフロー動作を実現するには、何を変更する必要がありますか?

4

1 に答える 1