Axivox Guide utilisateur
Retour au site

Switch / Case

Aiguille l'appel selon la valeur d'une variable. Chaque cas déclaré crée sa propre sortie, par égalité exacte ou selon un motif, et Défaut recueille le reste.

En bref

Sortiesune par cas déclaré, plus Défaut
Étiquette d'une sortiela valeur du cas, précédée de ~ quand Regex est coché
ChampsExpression à tester, puis un tableau Valeur du cas avec une case Regex
Comparaison par défautégalité exacte, majuscules et espaces compris
Nombre de casnon limité
Ordrele premier cas qui correspond gagne ; les suivants ne sont pas évalués

Le texte d'aide affiché dans la fenêtre est : « Chaque cas crée une sortie ; « Défaut » est pris si aucun cas ne correspond. Cochez « Regex » pour traiter la valeur comme une expression régulière (ex. ^\+251, ^0[1-9][0-9]{7}$). Sinon, égalité exacte. »

Comment ça marche

Le module calcule d'abord l'expression à tester, en général une variable écrite {{ma_variable}}. Il obtient donc un texte, celui que porte la variable au moment du passage de l'appel.

Il parcourt ensuite vos cas de haut en bas et s'arrête au premier qui correspond. Si aucun ne correspond, il prend Défaut.

Égalité exacte

Sans la case Regex, un cas correspond quand la valeur est rigoureusement identique : Premium et premium sont deux valeurs différentes, et un espace de trop suffit à faire échouer la comparaison.

Motif, ou expression régulière

Une expression régulière est une description de forme plutôt qu'une valeur. Au lieu de lister les milliers de numéros qui commencent par 02, vous décrivez « commence par 02, puis des chiffres ».

Quelques signes suffisent à couvrir presque tous les besoins :

ÉcritureCe qu'elle veut dire
^le début de la valeur
$la fin de la valeur
\dun chiffre
[0-9]un chiffre, autre écriture
[1-9]un chiffre de 1 à 9
+le signe précédent, une fois ou plus
*le signe précédent, zéro fois ou plus
{7}le signe précédent, exactement sept fois

Les deux exemples de l'interface se lisent ainsi : ^\+251 correspond à toute valeur qui commence par +251, et ^0[1-9][0-9]{7}$ à une valeur de neuf chiffres qui commence par un zéro suivi d'un chiffre de 1 à 9.

Écrivez le motif seul, sans le barrer de slashes. ^02 est correct, /^02/ ne correspondra à rien.

Ce qu'il faut saisir

ChampCe qui est attenduSi vous le laissez vide
Expression à testerune variable, par exemple {{langue}}, ou un texte qui en contient unela valeur testée est vide, et seul un cas vide ou Défaut peut être retenu
Valeur du casla valeur attendue, ou le motif si Regex est cochésans Regex, le cas ne correspond qu'à une valeur elle-même vide ; avec Regex, il correspond à tout et capte tous les appels
Regexcochée, la valeur devient un motifcomparaison par égalité exacte

Le bouton Ajouter crée une ligne de cas, Supprimer retire celle de la ligne. Sauver ferme la fenêtre, et les sorties du module se réétiquettent aussitôt.

La marche à suivre

  1. Posez le module Switch / Case et reliez le nœud précédent à son entrée.
  2. Ouvrez-le et renseignez l'Expression à tester, en copiant la variable depuis le panneau Variables disponibles plutôt qu'en la retapant.
  3. Cliquez sur Ajouter et saisissez la Valeur du cas. Répétez pour chaque valeur que vous voulez distinguer.
  4. Cochez Regex uniquement sur les lignes où vous décrivez une forme, et non une valeur précise.
  5. Rangez vos cas du plus précis au plus général : le premier qui correspond gagne.
  6. Cliquez sur Sauver. Le module affiche maintenant une sortie par cas, plus Défaut.
  7. Reliez chaque sortie à sa destination, Défaut comprise : une sortie retenue qui ne mène nulle part raccroche l'appel.
  8. Posez un module Débogage juste avant, avec pour message la variable testée. Vous lirez la valeur réellement comparée.
  9. Cliquez sur Sauver, puis sur Appliquer les modifications dans le bandeau du haut.
  10. Appelez votre numéro en provoquant chacun des cas, et vérifiez que l'appel part bien là où vous l'attendez.

Si ça ne marche pas

Tous les appels partent en Défaut. Lisez d'abord la valeur réellement testée, avec un Débogage posé juste avant. Neuf fois sur dix elle est vide, parce que le module qui pose la variable n'a pas été traversé, ou parce que le nom écrit entre accolades ne correspond pas.

Ma valeur est la bonne mais le cas n'est pas pris. La comparaison est exacte : Premium n'est pas premium, et un espace en fin de valeur compte. Cochez Regex et décrivez la forme, par exemple ^[Pp]remium$.

Mon motif ne correspond jamais. Écrivez-le sans slashes autour : ^02\d+ et non /^02\d+/. Vérifiez ensuite qu'un motif mal formé ne passe pas inaperçu : il ne correspond jamais et n'affiche aucune erreur.

C'est toujours le même cas qui gagne, alors que deux pourraient correspondre. C'est le comportement attendu. Remontez le cas le plus précis au-dessus du plus général, ou restreignez le motif du plus général.

L'appel se coupe alors qu'un cas correspond bien. La sortie de ce cas n'est reliée à rien. Vérifiez chaque sortie du module, Défaut comprise, après avoir ajouté ou supprimé un cas : les sorties se renumérotent.

Comment le plan d'appel se construit, expliqué en images

Voir la page Plans de numérotation