myContactCenterManuel

Code dans les flux

Comment calculer et décider en C# dans les flux — le nœud Code script, les fonctions et l'expression d'un nœud Vérifier —, ce que voit le code, comment l'éditeur de flux le vérifie et ce qui se passe en cas d'erreur en exploitation.

Dans un flux, du code C# figure à trois endroits :

Emplacement Ce que vous écrivez Résultat
Nœud Code script des instructions qui renvoient un texte avec return Le texte détermine la sortie par laquelle le déroulement se poursuit.
Fonctions vos propres méthodes avec paramètres et valeur de retour appelables depuis le code script, les expressions et d’autres fonctions
Expression d’un nœud Vérifier une condition, par exemple Position > 10 Le déroulement se poursuit par vrai ou par Faux.

L’éditeur de flux assemble tout le code d’un flux en une classe commune. Le Routing Service la compile dès qu’il reçoit le flux et en exécute une instance distincte pour chaque conversation. Les variables ne valent donc toujours que pour une conversation.

Le nœud Code script

Vous trouvez le nœud Code script dans la boîte à outils de l’éditeur de flux, sous Nœuds étendus, dans tous les types de flux. Ses propriétés :

Propriété Signification
Afficher du nom le nom dans le flux
Sorties les sorties ; « + » en ajoute une, « – » en supprime une. Chaque Sortie a un Afficher de texte et peut être Visible.
Code script le code ; « … » ouvre l’éditeur de code

Le code est le corps d’une méthode qui renvoie un texte. Le déroulement se poursuit par la sortie reliée dont l’Afficher de texte correspond exactement à ce texte — majuscules, minuscules et espaces comprises.

Fonctions

Vous créez des fonctions dans les propriétés du flux — sans nœud sélectionné — sous Éléments globaux › Fonctions :

Propriété Signification
Nom un nom C# valide : sans espaces ni caractères spéciaux, ne commençant pas par un chiffre
Catégorie de retour int, float, double, bool, string, DateTime, TimeSpan ou void
Paramètre pour chaque paramètre, Nom et Type : les mêmes types, plus long
Code le corps de la méthode ; « … » ouvre l’éditeur de code

Vous appelez une fonction comme une méthode, par exemple EstNumeroService(DestinationNumber). Les fonctions sans paramètres qui renvoient une valeur sont en outre disponibles comme espaces réservés dans les textes du flux : %Name% — voir Espaces réservés.

L’expression d’un nœud Vérifier

Le nœud Vérifier a la propriété Expression : une condition C# sur une seule ligne, qui donne true ou false. Avec true, le déroulement se poursuit par la sortie vrai, sinon par Faux. Dans l’expression, les mêmes noms sont disponibles que dans le code script.

Ce que voit le code

  • Les variables du flux — sous Éléments globaux › Variables — comme champs que vous lisez et écrivez : Compteur = Compteur + 1;. Vous accédez aux sous-champs avec un point, par exemple Client.Nom.
  • Les variables et fonctions système comme Position, IsOpen() ou AvailableAgents("Ventes", "Français", "InboundCall") — les mêmes que dans les textes, voir Espaces réservés, mais dans le code aussi avec plusieurs arguments. Dans le code, elles ont un type : IsOpen() donne par exemple bool, Position un nombre.
  • Skill et Language peuvent aussi être définies, avec le nom de la compétence ou de la langue : Skill = "Ventes";. Un nom qui n’existe pas est traité comme une erreur par le flux.
  • trace écrit dans le journal : trace.Info(…), trace.Warning(…), trace.Error(…). Les lignes apparaissent dans le domaine Flow du Routing Service, voir Paramètres de traçage.

La sélection Variables de flux sous l’éditeur de code liste tous ces noms avec Catégorie de retour, Paramètre et Description et insère celui que vous choisissez à la position du curseur.

Sont notamment intégrés les espaces de noms System, System.Collections.Generic, System.Linq, System.Threading.Tasks, System.Data, System.Data.Odbc, System.Data.SqlClient et MimeKit. Il n’est pas possible d’ajouter vos propres lignes using ; écrivez tout le reste avec le nom complet, par exemple System.Text.RegularExpressions.Regex. Le code ne s’exécute pas de façon asynchrone — await n’existe pas.

Vérifier et enregistrer

L’éditeur de flux compile tout le flux à chaque modification. Les erreurs apparaissent dans la liste des erreurs sous le diagramme et dans l’éditeur de code. Un double-clic sur une erreur dans le code ouvre l’éditeur au bon endroit.

Code Message
UC0001 Le code d'utilisation dans le nœud contient une erreur de compilation. — dans le code script ou l’expression d’un nœud
UC0002 Usercode in function contient une erreur de compilation.
UC0003 Usercode contient une erreur de compilateur. ou Script in Script Node renvoie une chaîne d'affichage de sortie non existante. — un return "…" ne correspond à aucune sortie

Le message est suivi de la ligne et de l’erreur du compilateur. Tant que l’une de ces erreurs subsiste, le flux ne peut pas être enregistré : la fenêtre Erreur critique indique Impossible d’enregistrer le flux en raison d’erreurs critiques et Veuillez corriger ces erreurs pour activer l'enregistrement.

Générer le code dans le ruban affiche tout le code que l’éditeur de flux génère — pratique pour trouver une ligne signalée.

En exploitation

  • Erreurs : si le code lève une exception, le flux réagit avec son Comportement d'erreur — pour les appels, par exemple Par défaut : mettre fin à l’appel. Interceptez vous-même les erreurs que vous voulez suivre et écrivez-les dans le journal avec trace.Error(…).
  • Durée : le code s’exécute dans le déroulement de la conversation. Tant qu’il calcule, celle-ci attend ; une boucle infinie la bloque.
  • Heure : DateTime.Now est l’heure locale de l’ordinateur sur lequel s’exécute le Routing Service.

Exemples

Ouvert ou fermé : un code script avec les sorties « Ouvert » et « Fermé » :

if (IsOpen() && AvailableAgents() > 0)
{
    return "Ouvert";
}

return "Fermé";

Reprendre le numéro de client de la signalisation : le PBX transmet le numéro de client dans l’en-tête SIP X-NumeroClient ; le flux a une variable NumeroClient de type string et les sorties « Connu » et « Inconnu ». GetXHeader attend le nom de l’en-tête sans « X- » ; Trim() supprime les espaces au début et à la fin de la valeur :

string number = GetXHeader("NumeroClient").Trim();
if (string.IsNullOrEmpty(number)) return "Inconnu";

NumeroClient = number;
trace.Info("Numéro client issu de l'en-tête X : ", number);
return "Connu";

Fonction dans un nœud Vérifier : une fonction EstNumeroService avec le type de retour bool, un paramètre numero de type string et le code return numero.StartsWith("0800");. L’Expression du nœud Vérifier est EstNumeroService(DestinationNumber).

Fonction pour les textes : une fonction SalutationHoraire avec le type de retour string, sans paramètre, avec le code return DateTime.Now.Hour < 18 ? "Bonjour" : "Bonsoir";. Dans une annonce générée à partir d’un texte, écrivez alors %SalutationHoraire%.

    ↑ ↓ sélectionner · Entrée ouvrir · Échap fermer