Bonjour !
Bienvenue dans ce nouveau module dédié à la logique de flux avancée dans Architect. Dans les modules précédents, nous avons construit des flux fonctionnels avec des menus SVI, des plannings horaires et des transferts vers des files d'attente. Nous avons même appris à les déboguer. Ces flux sont puissants, mais ils reposent principalement sur les choix explicites de l'appelant via un menu DTMF.
Et si vous vouliez router un appel différemment en fonction de données que vous connaissez déjà, sans avoir à poser de question à l'appelant ? Par exemple, en fonction de son statut de fidélité, de l'heure exacte, ou d'une information récupérée dans une base de données externe.
C'est précisément l'objectif de cette leçon. Nous allons explorer comment créer des branchements conditionnels intelligents dans vos flux. Pour cela, vous allez maîtriser deux des actions les plus fondamentales d'Architect : Decision et Switch. À la fin de cette session, vous serez capable de construire des flux qui s'adaptent dynamiquement au contexte de l'appel, une compétence essentielle pour concevoir des expériences client personnalisées.
1. L'action Decision : La logique binaire (Si/Alors/Sinon)
L'action Decision est l'équivalent d'une structure if/then/else en programmation. Elle vous permet de poser une question qui ne peut avoir que deux réponses : "Oui" ou "Non" (vrai ou faux).
Le principe est simple :
- Vous écrivez une expression qui doit être évaluée.
- Si l'expression est vraie, le flux emprunte le chemin de sortie "Yes".
- Si l'expression est fausse, le flux emprunte le chemin de sortie "No".
Cette action est parfaite pour les vérifications binaires. Par exemple, "Le temps d'attente estimé est-il supérieur à 5 minutes ?" ou "L'appel provient-il d'un numéro international ?".

Pour voir de plus près comment se configure une action Decision, je vous invite à lire un court extrait d'une documentation.
Architect Flows | Medallia Documentation
Cet extrait, tiré d'un guide d'intégration Medallia, montre la configuration et l'utilisation concrète d'un bloc Decision pour vérifier une condition avant de router un appel.
Lisez le court paragraphe qui commence par 'Finally, add a Decision block...'. Concentrez-vous sur l'objectif de l'action : évaluer une variable booléenne (Task.shouldOffer) pour décider de la suite du parcours.
Comme vous pouvez le voir, l'action Decision est simple mais très puissante. L'expression que vous pouvez y écrire peut être bien plus complexe qu'une simple variable. Vous pouvez y utiliser des fonctions et des opérateurs logiques (AND, OR, NOT) pour créer des conditions sophistiquées, comme par exemple : Call.Ani == "+33123456789" AND IsAfter(Flow.StartDateTime, ToDateTime("2024-10-26T17:00:00")).
2. L'action Switch : Les branchements multiples
Que faire si vous avez plus de deux chemins possibles ? Imaginez que vous vouliez router un appel en fonction d'un statut client qui peut être "Gold", "Silver" ou "Bronze". Vous pourriez utiliser plusieurs actions Decision imbriquées les unes dans les autres, mais cela deviendrait vite illisible.
C'est là qu'intervient l'action Switch. Elle est conçue pour évaluer une seule variable et orienter le flux vers différents chemins (Cases) en fonction de la valeur de cette variable. C'est l'équivalent d'une structure switch/case en programmation.
L'action Switch contient :
- Une expression à évaluer : Généralement, c'est simplement le nom d'une variable (ex:
Flow.CustomerStatus). - Plusieurs
Cases: ChaqueCasecorrespond à une valeur possible de la variable (ex: "Gold", "Silver"). - Un chemin
Default: Ce chemin est emprunté si la valeur de la variable ne correspond à aucun desCasesdéfinis. C'est une sécurité essentielle.

Retournons à notre ressource précédente pour voir un exemple concret de l'action Switch.
Architect Flows | Medallia Documentation
Ce second extrait du même guide montre comment l'action Switch est utilisée pour gérer plusieurs scénarios en fonction de la valeur numérique du temps d'attente (EWT).
Lisez la section intitulée 'Switch (check EWT value)'. Observez comment les 'Cases' sont définis avec des expressions de comparaison (<, >) et comment le chemin 'Default' gère tous les autres scénarios.
3. Mise en pratique : Routage par statut client
Maintenant, mettons ces concepts en application. Étant donné votre expérience avec les centres de contact, un scénario de routage basé sur la segmentation client vous sera familier.
Objectif : Créer un segment de flux qui route les appelants différemment selon un statut "VIP", "Standard" ou "Inconnu".
- Créez un nouveau flux d'appel entrant pour cet exercice. Nommez-le "Routage Conditionnel".
- Initialisez une variable de test. Juste après le point de départ (
Start), ajoutez une actionUpdate Data(dans la catégorieData).- Créez une nouvelle variable de type
String(chaîne de caractères) nomméeFlow.CustomerStatus. - Dans le champ
Value to Assign, entrez la valeur littérale"VIP". Pour l'instant, nous fixons la valeur manuellement. Plus tard dans le cours, nous verrons comment cette valeur pourrait provenir d'une recherche en base de données via une Data Action.
- Créez une nouvelle variable de type
- Utilisez une action
Switchpour le routage.- Ajoutez une action
Switch(catégorieLogical). - Dans le champ
Expression, entrez le nom de notre variable :Flow.CustomerStatus. - Configurez les
Cases:- Cliquez sur
+ Add Case. Pour la valeur (Value), tapez"VIP". - Cliquez de nouveau sur
+ Add Case. Pour la valeur, tapez"Standard".
- Cliquez sur
- Vous avez maintenant trois chemins de sortie : "VIP", "Standard" et "Default".
- Ajoutez une action
- Connectez les sorties à des actions de transfert.
- Sur le chemin de sortie "VIP", ajoutez une action
Transfer to ACDet sélectionnez votre file d'attente prioritaire (si vous n'en avez pas, sélectionnez n'importe quelle file d'attente pour l'exercice). - Sur le chemin de sortie "Standard", ajoutez une autre action
Transfer to ACDvers votre file d'attente standard. - Sur le chemin "Default", ajoutez d'abord une action
Play Audioavec un message comme "Nous n'avons pas pu vous identifier, nous vous mettons en relation avec un conseiller", puis connectez cette action à la même actionTransfer to ACDque le chemin "Standard".
- Sur le chemin de sortie "VIP", ajoutez une action
- Testez votre logique.
- Modifiez la valeur initiale de
Flow.CustomerStatusen"Standard"et observez le chemin pris. - Modifiez-la en
"Nouveau"et vérifiez que le cheminDefaultest bien emprunté.
- Modifiez la valeur initiale de
Cet exercice simple mais concret démontre à quel point l'action Switch rend la logique de routage multi-chemins propre et facile à lire.
4. Quand utiliser Decision vs Switch ?
Voici une règle simple pour choisir entre les deux :
-
Utilisez
Decisionlorsque votre condition est binaire (vrai/faux). C'est idéal pour évaluer des expressions complexes qui aboutissent à une seule réponse oui/non.- Exemple :
Flow.EWT > 300 AND Flow.Language == "en-us" - Exemple :
IsSet(Flow.CustomerID)(La variable a-t-elle été définie ?)
- Exemple :
-
Utilisez
Switchlorsque vous avez plusieurs chemins possibles basés sur les différentes valeurs possibles d'une seule variable. C'est beaucoup plus propre et évolutif que d'enchaîner plusieursDecision.- Exemple : Router en fonction du choix de menu SVI (
Task.Choice). - Exemple : Router en fonction du statut client (
Flow.CustomerStatus).
- Exemple : Router en fonction du choix de menu SVI (
Conclusion
Félicitations ! Vous venez d'ajouter deux des outils les plus puissants d'Architect à votre arsenal. La capacité de créer des branchements conditionnels est la clé pour passer de flux statiques à des expériences client intelligentes et dynamiques.
Points clés à retenir :
- L'action
Decisionest votre outil pour la logique binaireif/then/else, idéale pour évaluer des expressions complexes qui renvoient Vrai ou Faux. - L'action
Switchest votre solution pour les branchements multiples basés sur les différentes valeurs d'une seule variable, offrant clarté et maintenabilité. - Le chemin
Defaultdans une actionSwitchest crucial pour gérer les cas inattendus et garantir que votre flux ne se bloque jamais.
Prochaine leçon :
Maintenant que nous savons comment créer des chemins différents, comment pourrions-nous gérer une liste de données ? Par exemple, comment lire une liste des dernières commandes d'un client pour lui en proposer un résumé ? Dans la prochaine leçon, nous allons découvrir comment manipuler les variables de type collection (des listes) et comment utiliser l'action Loop pour itérer sur leurs éléments, ouvrant la porte à des traitements de données encore plus avancés au sein de vos flux.