Этот вопрос похож на этот вопрос, который я ранее задавал , в том смысле, что я хочу, чтобы задача выполнила проверку целевого рабочего выражения в списке 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...
}
Итак, я знаю, что задаче был успешно присвоен массив WorkerSids в качестве одного из ее атрибутов.
Есть только один рабочий, который бездействует и чьи атрибуты соответствуют queueSid
TaskQueue.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
Что мне нужно изменить, чтобы получить желаемое поведение рабочего процесса?