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 exempleClient.Nom. - Les variables et fonctions système comme
Position,IsOpen()ouAvailableAgents("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 exemplebool,Positionun nombre. SkilletLanguagepeuvent 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.Nowest 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%.