Partage via


Modes de distribution

Lors de la création d’une stratégie de distribution, nous spécifions l’un des modes de distribution suivants pour définir la stratégie à utiliser lors de la distribution des tâches :

Type de tourniquet

Les tâches seront distribuées de manière circulaire afin que chaque rôle de travail disponible reçoive des tâches en séquence.

Mode inactif le plus long

Les tâches seront distribuées au rôle de travail qui est le moins utilisé en premier. S’il y a une liaison, nous allons choisir le rôle de travail qui a été disponible pendant plus longtemps. L’utilisation est calculée en tant qu’Load Ratio avec l’algorithme suivant :

Ratio de charge = Agrégation de la capacité consommée par tous les travaux affectés au rôle de travail/Capacité totale du rôle de travail

Exemple

Supposons que chaque tâche chat a été configurée pour consommer une capacité pour un rôle de travail. Une nouvelle tâche de conversation est mise en file d’attente dans le routeur de travail et les rôles suivants sont disponibles pour prendre la tâche :

Worker A:
Capacity = 5
ConsumedScore = 3 (Currently handling 3 chats)
LoadRatio = 3 / 5 = 0.6
LastAvailable: 5 mins ago

Worker B:
Capacity = 4
ConsumedScore = 3 (Currently handling 3 chats)
LoadRatio = 3 / 4 = 0.75
LastAvailable: 3 min ago

Worker C:
Capacity = 5
ConsumedScore = 3 (Currently handling 3 chats)
LoadRatio = 3 / 5 = 0.6
LastAvailable: 7 min ago

Worker D:
Capacity = 3
ConsumedScore = 0 (Currently idle)
LoadRatio = 0 / 4 = 0
LastAvailable: 2 min ago

Workers would be matched in order: D, C, A, B

Le rôle de travail D a le ratio de charge le plus bas (0), de sorte que le rôle de travail D recevra une tâche en premier. Les rôles de travail A et C sont liés au même ratio de charge (0,6). Toutefois, le rôle de travail C a été disponible pendant plus de temps (il y a 7 minutes) que le rôle de travail A (il y a 5 minutes), de sorte que le rôle de travail C sera mis en correspondance avant le rôle de travail A. Enfin, le rôle de travail B sera mis en correspondance en dernier, car le rôle de travail B a le taux de charge le plus élevé (0,75).

Meilleur mode des rôles de travail

Les rôles de travail les plus compétents pour gérer la mission sont sélectionnés en premier. Il est possible de personnaliser la logique de classement des rôles, avec une expression ou une fonction Azure permettant d’en comparer deux avec une règle de scoring. Consultez l’exemple

Lorsqu’une règle de scoring n’est pas fournie, ce mode de distribution utilise plutôt la méthode de scoring par défaut, qui évalue les rôles de travail en fonction de la façon dont les étiquettes et les sélecteurs du travail correspondent aux étiquettes du rôle de travail. Les algorithmes sont décrits ci-dessous.

Correspondance d’étiquette par défaut

Pour calculer un score basé sur les étiquettes du travail, nous incrémentons Match Score de 1 pour chaque étiquette de travail qui correspond à une étiquette correspondante, puis divisez le nombre total d’étiquettes sur la tâche. Par conséquent, plus les étiquettes qui correspondent, plus un rôle de travail est élevé Match Score. La Match Score finale sera toujours une valeur comprise entre 0 et 1.

Exemple

Travail 1 :

{
  "labels": {
    { "language": "english" },
    { "department": "sales" }
  }
}

Rôle de travail A :

{
  "labels": {
    { "language": "english" },
    { "department": "sales" }
  }
}

Rôle de travail B :

{
  "labels": {
    { "language": "english" }
  }
}

Rôle de travail C :

{
  "labels": {
    { "language": "english" },
    { "department": "support" }
  }
}

Calcul :

Worker A's match score = 1 (for matching english language label) + 1 (for matching department sales label) / 2 (total number of labels) = 1
Worker B's match score = 1 (for matching english language label) / 2 (total number of labels) = 0.5
Worker C's match score = 1 (for matching english language label) / 2 (total number of labels) = 0.5

Le rôle de travail A sera mis en correspondance en premier. Ensuite, le rôle de travail B ou C sera mis en correspondance, selon qui était disponible pendant plus de temps, car le score de correspondance est lié.

Correspondance du sélecteur de rôle de travail par défaut

Dans le cas où la tâche contient également des sélecteurs de rôles de travail, nous allons calculer Match Score en fonction de LabelOperator de ce sélecteur de rôle.

Opérateurs d’étiquette Equal/notEqual

Si le sélecteur de rôle de travail a le LabelOperator Equal ou NotEqual, nous incrémentons le score de 1 pour chaque étiquette de travail qui correspond à ce sélecteur de rôle, de la même manière que pour le Label Matching plus haut.

Exemple

Travail 2 :

{
  "workerSelectors": [
    { "key": "department", "labelOperator": "equals", "value": "billing" },
    { "key": "segment", "labelOperator": "notEquals", "department": "vip" }
  ]
}

Rôle de travail D :

{
  "labels": {
    { "department": "billing" },
    { "segment": "vip" }
  }
}

Rôle de travail E :

{
  "labels": {
    { "department": "billing" }
  }
}

Rôle de travail F :

{
  "labels": {
    { "department": "sales" },
    { "segment": "new" }
  }
}

Calcul :

Worker D's match score = 1 (for matching department selector) / 2 (total number of worker selectors) = 0.5
Worker E's match score = 1 (for matching department selector) + 1 (for matching segment not equal to vip) / 2 (total number of worker selectors) = 1
Worker F's match score = 1 (for segment not equal to vip) / 2 (total number of labels) = 0.5

Le rôle de travail E sera mis en correspondance en premier. Ensuite, le rôle de travail D ou F sera mis en correspondance, selon qui était disponible pendant plus de temps, car le score de correspondance est lié.

Autres opérateurs d’étiquettes

Pour les sélecteurs de rôles de travail utilisant des opérateurs qui comparent par magnitude (GreaterThan/GreaterThanEqual/LessThan/LessThanEqual), nous incrémenterons le rôle Match Score par une quantité calculée à l’aide de la fonction logistique (Voir la figure 1). Le calcul est basé sur la quantité de valeur d’étiquette du rôle de travail qui dépasse la valeur du sélecteur de rôle de travail ou une quantité inférieure s’il ne dépasse pas la valeur du sélecteur de rôle de travail. Par conséquent, plus le sélecteur de rôle de travail a une valeur supérieure au rôle de travail, et plus le degré est élevé, plus le score sera élevé.

Diagramme montrant la fonction logistique.

Fig. 1. Fonction logistique

La fonction suivante est utilisée pour les opérateurs GreaterThan ou GreaterThanEqual :

MatchScore(x) = 1 / (1 + e^(-x)) where x = (labelValue - selectorValue) / selectorValue

La fonction suivante est utilisée pour les opérateurs LessThan ou LessThanEqual :

MatchScore(x) = 1 / (1 + e^(-x)) where x = (selectorValue - labelValue) / selectorValue

Exemple

Tâche 3 :

{
  "workerSelectors": [
    { "key": "language", "operator": "equals", "value": "french" },
    { "key": "sales", "operator": "greaterThanEqual", "value": 10 },
    { "key": "cost", "operator": "lessThanEqual", "value": 10 }
  ]
}

Rôle de travail G :

{
  "labels": {
    { "language": "french" },
    { "sales": 10 },
    { "cost": 10 }
  }
}

Rôle de travail H :

{
  "labels": {
    { "language": "french" },
    { "sales": 15 },
    { "cost": 10 }
  }
}

Rôle de travail I :

{
  "labels": {
    { "language": "french" },
    { "sales": 10 },
    { "cost": 9 }
  }
}

Calcul :

Worker G's match score = (1 + 1 / (1 + e^-((10 - 10) / 10)) + 1 / (1 + e^-((10 - 10) / 10))) / 3 = 0.667
Worker H's match score = (1 + 1 / (1 + e^-((15 - 10) / 10)) + 1 / (1 + e^-((10 - 10) / 10))) / 3 = 0.707
Worker I's match score = (1 + 1 / (1 + e^-((10 - 10) / 10)) + 1 / (1 + e^-((10 - 9) / 10))) / 3 = 0.675

Les trois rôles de travail correspondent aux sélecteurs sur la tâche qui peuvent y travailler. Toutefois, nous pouvons voir que le rôle de travail H dépasse la valeur du sélecteur « ventes » d’une marge de 5. Pendant ce temps, le rôle de travail I dépasse uniquement la valeur du sélecteur de coût par une marge de 1. Le rôle de travail G ne dépasse pas toutes les valeurs du sélecteur. Par conséquent, le rôle de travail H sera mis en correspondance en premier, suivi du rôle de travail I et enfin du rôle de travail G.