メニュー

Expand
Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

Workerの並び替え

By default, the reservation of Workers in a given TaskQueue is ordered by duration a Worker is unoccupied. Without an order_by expression, the Worker who has waited the longest without a Task will be the first reserved. An order_by expression allows you to designate an ordering for the Workers of a given TaskQueue based upon comparison of Workers' attributes.

order_by Expressionの主な構成要素は下記から構成されるorder_by節です:

  1. 入れ子にされた、あるいはそれ以外のWorkerのJSON属性内の整数値
  2. 並び順は「ASC」と指定すると昇順に、「DESC」を使用すると降順になります。

order_by Expressionは任意の数のorder_by節から構成できます。 1番目のorder_by節に対して複数のWorkerが同一の解決値をもつ場合、次の属性を比較することで2番目のorder_by節が並び順を最終決定する決め手となります。 例として、下記のようなWorkspaceを考えてみましょう:

  • 右記のようなorder_by Expressionを持つTaskQueue "worker.finance ASC, worker.support ASC"
  • 右記のような属性を持つWorker「Alice」 {finance = 10, support = 8}
  • 右記のような属性を持つWorker「Bob」 {finance = 10, support = 5}

まず、AliceとBobは最初のorder_by節である "worker.finance_level ASC" を使用して比較が行われます。 両者のfinance属性が等しいので、並び順が確定しません。 これを確定させるため、続いてこれら2人のWorkerは次のorder_by節、「worker.support_level ASC"」を使用して比較が行われます。 BobのサポートレベルはAliceのそれより少ない5であり、そして並び順は昇順です。 新規Taskが作成され、それがこのTaskQueueに入った場合、Workerは {Bob, Alice} という順序となり、Bobが新規Taskを処理するべく予約されます。

Workerが特定のスキルを保持していない場合はどうなるでしょうか。 並び順が確定しない場合、特定のスキルを持たないWorkerが、並べ替えの順序として「ASC」または「DESC」が選択されていても、そのスキルを持っているWorkerの後に順序づけられます。 たとえば、下記のようなWorkspaceがあったとします:

  • 右記のようなorder_by Expressionを持つTaskQueue "worker.finance ASC, worker.support ASC"
  • 右記のような属性を持つWorker「Alice」 {finance = 10, support = 8}
  • 右記のような属性を持つWorker「Bob」 {finance = 10}

まず、AliceとBobは最初のorder_by節である "worker.finance_level ASC" を使用して比較が行われます。 両者のfinance属性が等しいので、優先順位が確定しません。 これを確定させるため、続いてこれら2人のWorkerは次のorder_by節、「worker.support_level ASC"」を使用して比較が行われます。Bobはsupport属性を持たないため、Queueの中ではAliceの後に現れます。 新規Taskが作成され、それがこのTaskQueueに入った場合、Workerは {Bob, Alice} という順序となり、Aliceが新規Taskを処理するべく予約されます。

整数以外の属性で並べ替えを試みた場合、Expressionは無視されます。

指定されたすべての並べ替えの節について等しいWorkerに対しては、最後にTaskを割り当てられてからもっとも長時間経ったものが最終的な並び順の条件として使用されます。

{  
   "task_routing":{  
      "filters":[  
         {  
            "filter_friendly_name":"Sales filter",
            "expression":"type == 'Sales'",
            "targets":[  
               {  
                  "expression":"task.subSection = worker.specializedSubField",
                  "order_by":"worker.english_level ASC",
                  "priority":"1",
                  "queue":"WQ3935a4f744a241c1356c09310c2398e6"
               },
               {  
                  "priority":"1",
                  "queue":"WQ787b271950e0f7687ec432221e672ffa"
               }
            ]
         }
      ]
   }
}
Rate this page:

ヘルプが必要ですか?

誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。