Contrôle du flux conversationnel

Cette rubrique décrit le traitement de votre dialogue en phase d'exécution lorsqu'une personne interagit avec lui. Apprenez à utiliser le flux de conversation à votre avantage et à modifier le flux si nécessaire.

Vous pouvez affecter le flux d'une conversation à l'aide des fonctionnalités suivantes :

Désambigüisation

Avec la fonction de désambiguïsation, l'assistant demande de l'aide au client lorsque plusieurs noeuds du dialogue peuvent répondre à son entrée. Au lieu de deviner le noeud à traiter, votre assistant fournit à l'utilisateur la liste des principales options de noeud et lui demande de choisir celle qui convient.

Montre un exemple de conversation entre un utilisateur et l'assistant, où l'assistant demande des précisions à l'utilisateur.
Assistant demande des éclaircissements

La désambiguïsation est déclenchée lorsque les conditions suivantes sont remplies :

  • La cote de confiance des intentions finalistes détectées dans l'entrée utilisateur est proche de celle de l'intention principale.
  • La cote de confiance de l'intention principale dépasse 0,2.

Même lorsque ces conditions sont remplies, la désambiguïsation ne se produit que si au moins deux noeuds indépendants de votre dialogue répondent aux critères suivants :

  • La condition du noeud inclut l'une des intentions ayant déclenché la désambiguïsation.
  • La description de l'objectif du noeud figure dans la zone de nom du noeud. (La zone de nom de noeud externe peut aussi contenir une description.)

Un noeud avec une condition booléenne dont la valeur est true sera probablement inclus dans la liste de désambiguïsation. Par exemple, si le nœud vérifie la présence d'un type d'entité et que l'entité est mentionnée dans les données de l'utilisateur, elle peut être incluse dans la liste. De tels noeuds ne déclenchent pas la désambiguïsation, mais si celle-ci est déclenchée, ils seront probablement inclus dans la liste de désambiguïsation qui en résulte.

En savoir plus

Exemple de désambiguïsation

Soit un dialogue comportant deux noeuds avec des conditions d'intention qui répondent aux demandes d'annulation. Les conditions sont les suivantes :

  • eCommerce_Cancel_Product_Order
  • Customer_Care_Cancel_Account

Si l'utilisateur dit i must cancel it today, les intentions suivantes peuvent être détectées dans l'entrée :

[
  {"intent":"Customer_Care_Cancel_Account","confidence":0.5602024316787719},
  {"intent":"eCommerce_Cancel_Product_Order","confidence":0.46903514862060547},
  {"intent":"Customer_Care_Appointments","confidence":0.29033891558647157},
  {"intent":"General_Greetings","confidence":0.2894785046577454},

Si vous effectuez un test à partir du volet "Essayer", vous pouvez survoler l'icône de l'œil pour voir les trois intentions les plus importantes qui ont été reconnues dans l'entrée du test.

Affiche les 3 intentions les plus importantes reconnues dans l'entrée de l'utilisateur du volet Essayer.
Principales intentions

L'assistant est confiant à 0.5618281841278076 (56 %) que l'objectif de l'utilisateur correspond à l'intention #Customer_Care_Cancel_Account. Si une autre intention a un score de fiabilité proche de celui de cette la note de cette intention supérieure, la désambiguïsation se déclenche. Dans cet exemple, l'intention #eCommerce_Cancel_Product_Order a un score de confiance proche de 46%.

Par conséquent, lorsque l'utilisateur dit i must cancel it today, les deux nœuds de dialogue sont susceptibles d'être considérés comme des candidats viables pour répondre. Pour déterminer le noeud de dialogue à traiter, l’assistant demande à l'utilisateur d'en choisir un. Et pour aider l'utilisateur, l'assistant fournit un bref résumé de l'action de chaque noeud. Le texte récapitulatif est extrait directement de la zone name du noeud. Si elle existe et si une description y est ajoutée, le texte est alors pris dans la zone external node name.

La description qui s'affiche dans la liste de désambiguïsation provient du nom (ou du nom de noeud externe) du dernier noeud traité dans la branche dans laquelle la correspondance d'intention se produit. Pour plus d'informations, voir Désactivation des noeuds utilitaire cible d'un accès direct.

Le service invite l'utilisateur à choisir parmi une liste d'options de dialogue, dont Annuler un compte, Annuler une commande de produit et Aucune de ces options.
Choisir des options

Notez que l'assistant reconnaît le terme today dans l'entrée utilisateur en tant que date, une mention de l'entité@sys-date. Si votre arborescence de dialogue contient un noeud avec une condition sur l'entité @sys-date, ce noeud sera aussi probablement inclus dans la liste des choix de désambiguïsation. Cette image montre qu'il est inclus dans la liste en tant qu'option de capture des informations sur la date.

Le service invite l'utilisateur à choisir parmi une liste d'options de dialogue, y compris les informations relatives à la date de capture.
Informations sur la date de capture

Modification de la configuration de désambiguïsation

La désambiguïsation est activée automatiquement pour toutes les nouvelles compétences de dialogue. Vous pouvez modifier les paramètres appliqués automatiquement à la désambiguïsation sur la page Options.

Pour éditer les paramètres de désambiguïsation, procédez comme suit :

  1. Dans Options, cliquez sur Désambiguïsation.

  2. Dans la zone Disambiguation message, ajoutez du texte à afficher avant la liste des options de noeud de dialogue. Par exemple, Que voulez-vous faire ?

  3. Dans le champ Anything else, ajoutez du texte à afficher en tant qu'option supplémentaire que les utilisateurs peuvent choisir si aucune des autres options du nœud de dialogue ne correspond à ce que l'utilisateur souhaite faire. Par exemple, Rien de tout cela.

    Rédigez un message court, afin qu'il s'affiche en ligne avec les autres options. Le message doit comporter moins de 512 caractères. Pour plus d'informations sur les actions de l'assistant si un utilisateur choisit cette option, reportez-vous à la rubrique Traitement de l'option Rien de tout cela.

  4. Si vous souhaitez limiter le nombre d'options de désambiguïsation pouvant être affichées pour un utilisateur, spécifiez un chiffre compris entre 2 et 5 dans la zone Maximum number of suggestions.

Vos modifications sont automatiquement sauvegardées.

Vous pouvez utiliser l'API pour modifier d'autres paramètres de désambiguïsation. Ces paramètres incluent la sensibilité de la désambiguïsation, qui affecte la fréquence de déclenchement de la désambiguïsation et le nombre de choix inclus. Pour plus d'informations, voir API Reference.

Choix des noeuds à ne pas afficher en tant qu'options de désambiguïsation

Tous les noeuds peuvent être inclus dans la liste de désambiguïsation.

  • Les noeuds qui se situent à n'importe quel niveau de la hiérarchie d'arborescence sont inclus.
  • Les noeuds qui conditionnent des intentions, des entités, des conditions spéciales, des variables contextuelles ou n'importe quelle combinaison de ces valeurs sont inclus.

Pensez à masquer certains noeuds de la liste de désambiguïsation.

  • Masquer les noeuds racine avec les conditions welcome et anything_else

    À moins que vous n'ayez ajouté des fonctions supplémentaires à ces nœuds, il n'est généralement pas utile de les inclure dans une liste de désambiguïsation.

  • Masquer les noeuds utilitaire cible d'un accès direct

    Le texte de la liste de désambiguïsation est alimenté par le nom de nœud (ou le nom de nœud externe) du dernier nœud traité dans la branche où la condition de nœud est remplie.

    N'incluez pas de noeuds d'utilitaire, tels que remercier l'utilisateur, dire au revoir ou demander un retour de qualité de réponse, dans la liste de désambiguïsation au lieu d'une phrase qui décrit l'objectif du noeud racine correspondant.

    Par exemple, il se peut qu'un noeud racine avec la condition d'intention correspondante #store-location accède directement à un noeud qui demande aux utilisateurs s'ils sont satisfaits de la réponse. Si le nœud #check_satisfaction possède un nom de nœud et une désambiguïsation, le nom du nœud rejoint est affiché dans la liste de désambiguïsation. Par conséquent, Check satisfaction apparaît dans la liste de désambiguïsation pour représenter la branche #store-location au lieu du nom Get store location du noeud racine.

  • Masquer les noeuds racine qui sont conditionnés par une entité ou une variable de contexte uniquement

    Seul un noeud comportant une intention correspondante peut déclencher la désambiguïsation. Cependant, lorsqu'il est déclenché, tout nœud dont la condition correspond est inclus dans la liste de désambiguïsation. Lorsque votre dialogue inclut des noeuds qui conditionnent les entités, par exemple, l'ordre des noeuds dans la hiérarchie d'arborescence peut s'avérer significatif de manière inattendue.

    • L'ordre des nœuds a une incidence sur le déclenchement de la désambiguïsation. Prenons l'exemple du scénario utilisé précédemment pour présenter la désambiguïsation. Si le nœud qui conditionne @sys-date était placé plus haut dans l'arbre de dialogue que les nœuds qui conditionnent les intentions #Customer_Care_Cancel_Account et #eCommerce_Cancel_Product_Order, la désambiguïsation ne serait jamais déclenchée lorsqu'un utilisateur saisit i must cancel it today. Votre assistant considère que la date mentionnée ( today ) est plus importante que les références d'intention en raison de l'emplacement des nœuds correspondants dans l'arbre.

    • L'ordre des nœuds a un impact sur les nœuds inclus dans la liste des options de désambiguïsation. Parfois, un noeud n'est pas répertorié comme une option de désambiguïsation comme prévu. Cela peut se produire si une valeur de condition est également référencée par un noeud qui ne peut pas être inclus dans la liste de désambiguïsation pour une raison quelconque. Par exemple, une entité peut déclencher un nœud situé plus haut dans l'arbre de dialogue mais qui n'est pas activé pour la désambiguïsation. Si la même entité est la seule condition pour un nœud activé pour la désambiguïsation, mais qu'elle se trouve plus bas dans l'arbre, il se peut qu'il ne s'agisse pas d'une option de désambiguïsation parce que votre assistant ne l'atteint jamais. La valeur correspondait au noeud situé au début de l'arborescence et a été omise, et il est possible que l'assistant ne traite pas le noeud situé plus bas.

Masquage complet des noeuds de la désambiguïsation

Vous pouvez empêcher chaque noeud d'un dialogue ou un noeud de dialogue individuel d'être inclus dans la liste de désambiguïsation.

Pour désactiver entièrement la désambiguïsation, procédez comme suit :

  1. Dans Options, cliquez sur Désambiguïsation.

  2. Mettez l'interrupteur sur Off.

Pour empêcher l'inclusion d'un seul noeud de dialogue dans la liste de désambiguïsation, procédez comme suit :

  1. Cliquez sur un nœud de dialogue pour l'ouvrir dans la vue d'édition.

  2. Cliquez sur Paramètres.

  3. Définissez le commutateur Show node name sur Off.

    Plus Si vous avez ajouté une description sommaire du nœud au champ du nom du nœud externe au lieu du champ du nom, supprimez-la.

    La zone external node name a deux usages. Elle fournit des informations sur le noeud aux clients lorsqu'elle est incluse dans une liste de désambiguïsation. Elle fournit également la description du noeud dans le récapitulatif de la discussion qui est partagé avec les agents du centre de services lorsqu'une conversation leur est transférée. La zone Nom de nœud externe n'est visible que dans les compétences faisant partie d'une instance de plan payé. Si la zone external node name contient du texte, celui-ci est utilisé, que la zone name en contienne ou non.

Pour chaque noeud, testez les scénarios dans lesquels le noeud doit être inclus dans la liste des options de désambiguïsation. Le test vous permet d'ajuster l'ordre des nœuds ou d'autres facteurs susceptibles d'influer sur le fonctionnement de la désambiguïsation au moment de l'exécution. Voir Test de désambiguïsation.

Hiérarchisation d'un noeud lors de la désambiguïsation

Certains nœuds sont suffisamment importants pour votre client pour que vous souhaitiez qu'ils soient renvoyés seuls, en dehors d'une liste de désambiguïsation, lorsque l'assistant est certain que le nœud répond à un besoin du client.

Par exemple, vous pouvez avoir un noeud qui corresponde à l'intention #stolen_card. Chaque fois qu'un message entrant suggère qu'un client souhaite signaler une carte de crédit volée, vous ne voulez pas que la réponse de l'assistant soit perdue dans une liste de désambiguïsation d'options. Vous voulez que l'assistant donne une réponse unique qui aide le client à résoudre ce problème urgent.

Pour concevoir votre dialogue pour hiérarchiser un seul noeud lors de la désambiguïsation, procédez comme suit :

  1. Dans le noeud qui conditionne l'intention, cliquez sur Personnaliser pour activer plusieurs réponses conditionnées.

  2. Ajoutez une réponse conditionnée avec la condition suivante :

    intent.confidence > n

    n est une cote de confiance qui a du sens pour vos données d'apprentissage. Exemple :

    intent.confidence > 0.7

  3. Déplacez la réponse vers la première place de la liste des réponses conditionnées.

  4. Cliquez sur l'icône représentant un engrenage pour personnaliser la réponse conditionnée.

  5. Dans la section Réponses de l'assistant, ouvrez l'éditeur de contexte.

  6. Ajoutez la variable contextuelle suivante :

    Variable contextuelle
    Variables Valeur
    system {"prevent_disambiguation":true}
  7. Cliquez sur Sauvegarder.

    Vous pouvez également ajouter un nœud de niveau racine avec une condition telle que :

    #stolen_card && intent.confidence > 0.7

    Placez ce noeud plus haut dans l'arborescence que le noeud conditionné par #stolen_card, ce qui permet de l'inclure dans une liste de désambiguïsation.

  8. Testez votre dialogue. Assurez-vous que la réponse du noeud est renvoyée à la place d'une liste de désambiguïsation lorsque le seuil de cote de confiance approprié est atteint.

Traitement de l'option Rien de tout cela

Lorsqu'un utilisateur clique sur l'option Rien de tout cela, l'assistant supprime du message les intentions reconnues dans l'entrée utilisateur et soumet le message à nouveau. Cette action déclenche généralement le noeud Anything else dans votre arborescence de dialogue.

Pour personnaliser la réponse renvoyée dans cette situation, vous pouvez ajouter un noeud racine avec une condition qui recherche une entrée utilisateur sans intentions reconnues (les intentions sont supprimées, rappelez-vous) et contient une propriété suggestion_id. Une propriété suggestion_id est ajoutée par l'assistant lorsque la désambiguïsation est déclenchée.

Ajoutez un noeud racine avec la condition suivante :

intents.size()==0 && input.suggestion_id

Cette condition n'est remplie que si l'entrée déclenche un ensemble d'options de désambiguïsation dont l'utilisateur dit qu'aucune ne correspond à l'objectif.

Ajoutez une réponse qui indique aux utilisateurs que vous comprenez qu'aucune des options proposées ne répond à leurs besoins, et prenez les mesures qui s'imposent.

Là encore, l’emplacement des noeuds dans l’arborescence est important. Si un noeud conditionné par un type d'entité mentionné dans l'entrée utilisateur est plus haut dans l'arborescence que ce noeud, sa réponse s'affiche à la place.

Test de désambiguïsation

Lors du test, l'ordre dans lequel les options sont répertoriées peut changer. En fait, les options elles-mêmes qui sont incluses dans la liste de désambiguïsation peuvent changer d'un test à l'autre.

Ce comportement est voulu. Dans le cadre du développement en cours pour aider l'assistant à apprendre automatiquement à partir des choix de l'utilisateur, les choix et leur ordre dans la liste de désambiguïsation sont volontairement aléatoires. Le fait de changer l'ordre permet d'éviter le biais qui peut être introduit par un pourcentage de personnes qui choisissent toujours la première option sans avoir soigneusement examiné tous leurs choix au préalable.

Pour tester la fonction de désambiguïsation, procédez comme suit :

  1. Dans le volet "Essayez", entrez un énoncé test qui est un bon candidat pour la désambiguïsation, c'est-à-dire que deux ou plusieurs de vos nœuds de dialogue sont configurés pour traiter des énoncés de ce type.

  2. Si la réponse ne contient pas de liste d'options de noeud de dialogue parmi lesquelles vous pouvez choisir, vérifiez que vous avez ajouté des informations récapitulatives aux champs de nom de noeud (ou de nom de noeud externe).

  3. Si la désambiguïsation n'est toujours pas déclenchée, il se peut que les valeurs des cotes de confiance des noeuds ne soient pas aussi proches que vous le pensiez.

    • Pour voir la cote de confiance des trois principales intentions détectées dans l'entrée, survolez l'icône en forme d'oeil dans le panneau "Try it out".

    • Pour afficher les scores de confiance de tous les intentions détectés dans l'entrée utilisateur, ajoutez temporairement <? intents ?> à la fin de la réponse du nœud pour un nœud qui sera déclenché.

      Cette expression SpEL affiche les intentions détectées dans l'entrée utilisateur sous forme de tableau. Le tableau inclut le nom de l'intention et le niveau de confiance qu'a l'assistant que l'intention reflète l'objectif recherché par l'utilisateur.

    • Pour voir quelles entités, le cas échéant, ont été détectées dans la saisie de l'utilisateur, vous pouvez remplacer temporairement la réponse actuelle par une réponse textuelle unique contenant l'expression SpEL <? entities ?>.

      Cette expression SpEL affiche les entités détectées dans l'entrée utilisateur sous forme de tableau. Le tableau comprend le nom de l'entité, l'emplacement de la mention de l'entité, la chaîne de la mention de l'entité et le niveau de confiance que le terme est une mention du type d'entité spécifié.

    • Pour afficher les détails de tous les artefacts, y compris d'autres propriétés telles que la valeur de la variable contextuelle au moment de l'appel, examinez l'intégralité de la réponse de l'API. Reportez-vous à la rubrique Affichage des détails de l'appel d'API.

  4. Supprimez temporairement la description dans le champ de nom (ou le champ de nom de nœud externe ) pour au moins un des nœuds que vous prévoyez comme option de désambiguïsation.

  5. Entrez à nouveau l'énoncé de test dans le panneau "Try it out".

    Si vous avez ajouté l'expression <? intents ?> à la réponse, le texte comprend une liste des intentions que votre assistant a reconnues dans l'énoncé test, ainsi que le score de confiance pour chacune d'entre elles.

    Le service renvoie un tableau d'intentions, dont Customer_Care_Cancel_Account et eCommerce_Cancel_Product_Order.
    Intentions et scores de confiance

Une fois les tests terminés, supprimez les expressions SpEL que vous aviez entrées dans les réponses des noeuds ou rétablissez toutes les réponses initiales que vous avez remplacées par ces expressions, puis remplissez à nouveau les zones name ou external node name dont vous aviez supprimé le texte.

Digressions

Une digression se produit lorsqu'un utilisateur se trouve dans un flux de dialogue qui répond à un objectif, mais change de sujet pour initier un flux de dialogue qui répond à un autre objectif. Si aucun des noeuds de la branche de dialogue ne correspond à l'objectif de la dernière entrée de l'utilisateur, la conversation vérifie les conditions de noeud racine pour une correspondance appropriée. Les paramètres de digression disponibles au niveau noeud vous permettent de personnaliser davantage ce comportement.

Grâce aux paramètres de digression, vous pouvez autoriser la conversation à revenir au flux de dialogue qui a été interrompu lorsque la digression est survenue. Par exemple, l'utilisateur est en train de commander un nouveau téléphone, mais il pose une question relative aux tablettes. Votre dialogue peut répondre à la question sur les tablettes, puis ramener l'utilisateur à l'endroit où il s'est arrêté avec la commande de téléphone. Le fait d'autoriser des digressions et le retour dans le flux de dialogue initial offre aux utilisateurs la possibilité de mieux contrôler le flux de la conversion durant la phase d'exécution. Ils peuvent changer de sujet, suivre jusqu'au bout le flux de dialogue lié à l'autre sujet qui est sans rapport avec le premier, puis revenir là où ils étaient avant. Le résultat est un flux de dialogue qui simule de manière plus réaliste une conversion entre humains.

Avant de commencer

Lorsque vous testez l'ensemble de votre dialogue, décidez quand et où il est judicieux d'autoriser des digressions et des retours à partir de ces digressions. Les contrôles de digression ci-après s'appliquent automatiquement aux noeuds.

  • Chacun des noeuds racine de votre dialogue est configuré pour permettre aux digressions de les cibler par défaut. Les noeuds enfant ne peuvent pas être la cible d'une digression.

  • Les noeuds avec des attributs sont configurés pour empêcher les digressions sortantes. Tous les autres noeuds sont configurés pour autoriser les digressions sortantes. Toutefois, la conversation ne peut pas faire digression à partir d'un noeud dans les circonstances suivantes :

    • Si l'un des nœuds enfants du nœud actuel contient la condition anything_else ou true. Ces conditions sont particulières en ce sens qu'elles évaluent toujours la réalité. Etant donné leur comportement connu, elles sont souvent utilisées dans des dialogues pour forcer un noeud parent à évaluer un noeud enfant spécifique, de manière successive. Pour éviter de rompre la logique du flux de dialogue existant, les digressions ne sont pas autorisées dans ce cas. Avant de pouvoir activer des digressions à partir de ce type de noeud, vous devez modifier la condition du noeud enfant.

    • Si le nœud est configuré pour passer à un autre nœud ou ignorer les données de l'utilisateur après leur traitement. La section d'étape finale d'un nœud spécifie ce qui se passe après le traitement du nœud. Lorsque le dialogue est configuré pour passer directement à un autre nœud, il est souvent nécessaire de s'assurer qu'une séquence spécifique est respectée. Et lorsque le noeud est configuré pour ignorer l'entrée utilisateur, cela revient à forcer le dialogue à traiter le premier noeud enfant après le noeud en cours, de manière successive. Pour empêcher l'interruption d'une logique de flux de dialogue existante, les digressions ne sont autorisées dans aucun de ces cas. Avant de pouvoir activer des digressions à partir de ce noeud, vous devez modifier ce qui est spécifié dans la section d'étape finale.

Personnalisation des digressions

Vous ne pouvez pas définir le début et la fin d'une digression. L'utilisateur contrôle entièrement le flux de digression durant la phase d'exécution. Vous pouvez spécifier comment chaque noeud est inclus dans une digression dirigée par l'utilisateur. Pour chaque noeud, vous pouvez configurer si une digression:

  • Commence à partir du et quitte le noeud
  • Qui commence ailleurs peut cibler et pénétrer dans le nœud
  • Qui commence ailleurs et entre dans le nœud doit revenir au flux de dialogue interrompu une fois que le flux de dialogue en cours est terminé

Pour modifier le comportement de digression d'un noeud individuel, procédez comme suit :

  1. Cliquez sur le noeud pour ouvrir sa vue édition.

  2. Cliquez sur Customize, puis sur l'onglet Digressions.

    Les options de configuration diffèrent selon que le noeud que vous éditez est un noeud racine, un noeud enfant, un noeud avec enfants ou un noeud avec attributs.

    Digressions à partir de ce noeud

    Si les circonstances mentionnées précédemment ne s'appliquent pas, les options que vous pouvez sélectionner sont les suivantes :

    • All node types : indiquez si vous autorisez ou non les utilisateurs à faire digression à partir du noeud en cours avant d'atteindre la fin de la branche de dialogue en cours.

    • Tous les nœuds qui ont des enfants: Choisissez si vous voulez que la conversation revienne au nœud actuel si la réponse du nœud a été affichée et que ses nœuds enfants sont accessoires par rapport à l'objectif. Définissez le commutateur Allow return from digressions triggered after this node's response sur No pour empêcher le dialogue de revenir au noeud en cours et de continuer à traiter sa branche.

      Par exemple, si l'utilisateur demande Do you sell cupcakes? et que la réponse We offer cupcakes in a variety of flavors and sizes s'affiche avant que l'utilisateur ne change de sujet, vous ne voudrez peut-être pas que la boîte de dialogue revienne à l'endroit où elle s'est arrêtée. En particulier, si les nœuds enfants répondent à d'éventuelles questions complémentaires de l'utilisateur et peuvent être ignorés en toute sécurité.

      Toutefois, si le noeud fait appel à ses noeuds enfant pour traiter la question, vous souhaiterez peut-être forcer la conversation à revenir et à continuer à traiter les noeuds de la branche en cours. Par exemple, la réponse initiale peut être We offer cupcakes in all shapes and sizes. Which menu do you want to see: gluten-free, dairy-free, or regular?. Si l'utilisateur change de sujet, vous voudrez peut-être que la boîte de dialogue revienne pour que l'utilisateur puisse choisir un type de menu et obtenir les informations qu'il souhaitait.

    • Nodes with slots : indiquez si vous souhaitez autoriser ou non les utilisateurs à faire digression à partir du noeud avant que tous les attributs soient remplis. Définissez le commutateur Allow digressions away while slot filling sur Yes pour permettre les digressions sortantes.

      Si cette case est cochée, lorsque la conversation revient de la digression, l'invite pour l'attribut non renseigné suivant s'affiche afin d'encourager l'utilisateur à continuer à fournir des informations. Si cette case n'est pas cochée, toutes les entrées que l'utilisateur soumet et qui ne contiennent pas une valeur susceptible de convenir pour un attribut sont ignorées. Toutefois, vous pouvez définir des gestionnaires d'attributs dans le but de prendre en charge des questions non sollicitées dont vous pensez qu'elles seront peut-être posées par vos utilisateurs lors de leur interaction avec le noeud. Pour plus d'informations, voir Ajout d'attributs.

    • Nœuds avec emplacements: Choisissez si l'utilisateur est autorisé à dériver s'il revient au nœud actuel en cochant la case Dériver uniquement à partir d'emplacements vers des nœuds qui autorisent les retours.

      Lorsque cette case est cochée, dans la mesure où le dialogue recherche un noeud pour répondre à la question hors sujet de l'utilisateur, il ignore les noeuds racine qui ne sont pas configurés pour revenir après la digression. Cochez cette case si vous souhaitez empêcher les utilisateurs de quitter définitivement le nœud avant d'avoir rempli les créneaux requis.

    Digressions dans ce noeud

    Les choix possibles pour définir le comportement des digressions dans un noeud sont les suivants :

    • Empêcher les utilisateurs de pouvoir faire digression dans le noeud. Pour plus d'informations, reportez-vous à la rubrique Désactivation des digressions dans un noeud racine.

    • Lorsque les digressions dans le noeud sont activées, indiquez si le dialogue doit ou non revenir au flux de dialogue à partir duquel il a fait digression. Lorsque le traitement de la branche du nœud en cours est terminé, le flux de dialogue retourne au nœud interrompu. Pour que le dialogue revienne par la suite, sélectionnez Retour après digression.

  3. Cliquez sur Appliquer.

  4. Utilisez le panneau "Try it out" pour tester le comportement de digression.

    Là encore, vous ne pouvez pas définir le début et la fin d'une digression. L'utilisateur contrôle où et quand les digressions se produisent. Vous pouvez appliquer des paramètres qui déterminent la manière dont un nœud unique participe à un projet. Les digressions étant imprévisibles, il est difficile de savoir comment vos décisions de configuration influencent la conversation dans son ensemble. Pour réellement voir l'impact de vos choix, vous devez tester le dialogue.

Les noeuds #reservation et #cuisine représentent deux branches de dialogue qui peuvent participer à une digression dirigée par un utilisateur. Ce sont les paramètres de digression configurés pour chaque noeud spécifique qui rendent ce type de digression possible lors de la phase d'exécution.

Conseils relatifs à l'utilisation des digressions

Message de retour personnalisé: Pour tous les nœuds où vous autorisez les retours à partir de digressions, pensez à ajouter une formulation qui indique aux utilisateurs où ils reviennent lorsqu'ils se sont arrêtés dans un flux de dialogue précédent. Dans votre réponse textuelle, utilisez une syntaxe spéciale pour ajouter deux versions de la réponse.

Si vous n'ajoutez pas de message, le même texte de réponse s'affiche une deuxième fois pour indiquer aux utilisateurs qu'ils sont revenus au nœud dont ils se sont éloignés. Vous pouvez indiquer plus clairement aux utilisateurs qu'ils sont revenus au fil de conversation initial en spécifiant un message unique à afficher lorsqu'ils reviennent.

Par exemple, si la réponse texte d'origine pour le nœud est What's the order number?, vous pouvez afficher un message similaire à Now let's get back to where we left off. What is the order number? lorsque les utilisateurs retournent sur le nœud.

Pour ce faire, utilisez la syntaxe suivante pour spécifier la réponse textuelle du noeud :

<? (returning_from_digression)? "post-digression message" : "first-time message" ?>

Exemple :

<? (returning_from_digression)? "Now, let's get back to where we left off.
What is the order number?" : "What's the order number?" ?>

Vous ne pouvez pas inclure d'expressions SpEL ou de syntaxe abrégée dans les réponses textuelles que vous ajoutez. En fait, vous ne pouvez pas utiliser la syntaxe abrégée du tout. Au lieu de cela, vous devez créer le message en concaténant les chaînes de texte et la syntaxe d'expression SpEL complète pour former la réponse complète.

Par exemple, utilisez la syntaxe suivante pour inclure une variable contextuelle dans une réponse textuelle que vous auriez normalement spécifiée comme What can I do for you, $username? :

<? (returning_from_digression)? "Where were we, " +
context["username"] + "? Oh right, I was asking what can I do
for you today." : "What can I do for you today, " +
context["username"] + "?" ?>

Pour plus de détails sur la syntaxe des expressions SpEL, reportez-vous à la rubrique Expression pour accéder aux objets.

Prévention des retours : Dans certains cas, vous pouvez empêcher le retour au flux de conversation interrompu en fonction du choix fait par l'utilisateur dans le flux de dialogue en cours. Vous pouvez utiliser une syntaxe spéciale pour empêcher un retour à partir d'un noeud spécifique.

Par exemple, vous pouvez avoir un noeud conditionné par #General_Connect_To_Agent ou une intention similaire. En cas de déclenchement, si vous souhaitez obtenir la confirmation de l'utilisateur avant de le transférer à un service externe, vous pouvez ajouter une réponse telle que Do you want me to transfer you to an agent now?. Vous pouvez ajouter deux nœuds enfants qui conditionnent #yes et #no.

La meilleure façon de gérer les digressions pour ce type de branche consiste à définir le noeud racine pour autoriser les retours de digression. Toutefois, sur le noeud #yes , incluchez l'expression SpEL <? clearDialogStack() ?> dans la réponse. Exemple :

OK. I will transfer you now. <? clearDialogStack() ?>

Cette expression SpEL empêche le retour de la digression à partir de ce nœud. Lorsqu'une confirmation est demandée, si l'utilisateur répond par l'affirmative, la réponse appropriée est affichée et le flux de dialogue qui a été interrompu n'est pas repris. Si l'utilisateur dit non, il est renvoyé au flux qui a été interrompu.

Désactivation des digressions dans un noeud racine

Lorsqu'un flux fait digression dans un noeud racine, il suit le cours du dialogue qui est configuré pour ce noeud. Le flux peut traiter une série de noeuds enfant avant la fin de la branche de noeud, puis revenir au flux de dialogue qui a été interrompu. En effectuant des tests, vous pouvez constater qu'un noeud racine est déclenché trop souvent, à des moments inattendus, ou que le dialogue est trop complexe et envoie l'utilisateur trop loin du cours. Si vous déterminez qu'il est préférable de ne pas autoriser les utilisateurs à faire digression dans ce noeud, vous pouvez configurer le noeud racine pour ne pas autoriser les digressions dans ce dernier.

Pour complètement désactiver les digressions dans un noeud racine, procédez comme suit :

  1. Cliquez pour ouvrir le noeud racine que vous souhaitez éditer.
  2. Cliquez sur Customize, puis sur l'onglet Digressions.
  3. Réglez la case Autoriser les digressions dans ce nœud sur Désactivé.
  4. Cliquez sur Appliquer.

Si vous décidez d'empêcher les digressions dans plusieurs noeuds racine, mais que vous ne souhaitez pas éditer chacun d'eux individuellement, vous pouvez ajouter les noeuds à un dossier. Dans la page Personnaliser du dossier, vous pouvez régler le commutateur Autoriser les digressions dans ce nœud sur Désactivé pour appliquer la configuration à tous les nœuds. Pour plus d'informations, voir Organisation du dialogue avec des dossiers.

Remarques relatives à la conception

Evitez la prolifération des noeuds de rétromigration : de nombreux concepteurs de dialogue incluent un noeud avec une condition true ou anything_else à la fin de chaque branche de dialogue comme moyen d'empêcher les utilisateurs de rester coincés dans la branche. Cette conception renvoie un message générique si l'entrée utilisateur ne correspond à rien de ce que vous aviez anticipé et incluait un noeud de dialogue spécifique à traiter. Toutefois, les utilisateurs ne peuvent pas faire digression à partir des flux de dialogue qui utilisent cette approche.

Evaluez les branches qui utilisent cette approche pour déterminer s'il ne serait pas préférable d'autoriser les digressions à partir des branches. Si l'entrée de l'utilisateur ne correspond à rien de ce que vous aviez prévu, elle peut trouver une correspondance avec un flux de dialogue entièrement différent dans votre arbre. Au lieu de répondre avec un message générique, vous pouvez effectivement mettre le reste du dialogue à contribution pour essayer de traiter l'entrée utilisateur. Et le noeud Anything else de niveau racine peut toujours répondre à l'entrée qui ne peut être traitée par aucun des autres noeuds racine.

Réexaminer les sauts sur un nœud de fermeture: De nombreuses boîtes de dialogue sont conçues pour poser une question de fermeture standard, par exemple, les utilisateurs Did I answer your question today? ne peuvent pas se départir des nœuds configurés pour passer à un autre nœud. Par conséquent, si vous configurez tous vos noeuds de branche finaux pour qu'ils accèdent directement à un noeud fermant commun, les digressions ne peuvent pas se produire. Pensez à assurer le suivi de la satisfaction des utilisateurs via des métriques ou d'autres moyens.

Tester les chaînes de digression possibles: Si un utilisateur fait une digression à partir du nœud actuel vers un autre nœud qui autorise les digrations, il peut faire une digression à partir de cet autre nœud et répéter ce schéma. Si le noeud de départ dans la chaîne de digression est configuré pour revenir après la digression, l'utilisateur finit par être ramené au noeud de dialogue en cours. En fait, tous les noeuds suivants de la chaîne qui sont configurés pour ne pas revenir ne sont pas considérés comme des cibles de digression. Testez des scénarios qui font digression plusieurs fois afin de déterminer si les noeuds individuels fonctionnent comme prévu.

Les conditions d'étape ne sont pas réévaluées au retour de la digression: Comme la condition d'étape est déjà évaluée avant la digression, elle n'est pas réévaluée au retour de la digression. Si votre flux conversationnel exige que la condition de l'étape soit évaluée à nouveau, ajoutez le repromptage à l'étape où la digression a commencé. Si vous ne voulez pas être redemandé à la même étape et pour éviter les retours de digression, procédez comme suit :

  1. Allez dans Home > Actions > Créé par vous.
  2. Sélectionnez l'action dans laquelle vous souhaitez empêcher les retours de parenthèse.
  3. Cliquez sur Paramètres d'action.
  4. Mettez la bascule sur On dans Changer de sujet de conversation.
  5. Sélectionnez Ne jamais revenir à l'action initiale après avoir effectué cette action.
  6. Cliquez sur Sauvegarder.

Le nœud actuel est prioritaire: Les nœuds situés en dehors du flux actuel ne sont considérés comme des cibles de digression que si le flux actuel ne peut pas répondre à l'entrée de l'utilisateur. Dans un nœud avec des fentes qui permettent des digressions, indiquez clairement aux utilisateurs quelles informations sont nécessaires et ajoutez des déclarations de confirmation qui s'affichent après que l'utilisateur a fourni une valeur.

N'importe quel attribut peut être rempli durant le processus de remplissage d'attribut. Par conséquent, un attribut peut capturer une entrée utilisateur de manière inattendue. Par exemple, vous pouvez avoir un noeud avec attributs qui collecte les informations nécessaires pour faire une réservation pour dîner. L'un des attributs collecte les informations de date. L'utilisateur peut demander à What's the weather meant to be tomorrow?. Vous pourriez avoir un nœud racine qui conditionne #forecast qui pourrait répondre à l'utilisateur. Cependant, comme la saisie de l'utilisateur comprend le mot tomorrow et que le nœud de réservation avec les créneaux horaires est en cours de traitement, votre assistant suppose que l'utilisateur fournit ou met à jour la date de réservation à la place. Le noeud en cours est toujours prioritaire. Si vous définissez une instruction de confirmation claire, par exemple, Ok, setting the reservation date to tomorrow,, l'utilisateur a plus de chances de réaliser qu'il y a eu un malentendu et d'y remédier.

Si l'utilisateur fournit une valeur qui n'est attendue par aucun des attributs, elle peut correspondre à un noeud racine non lié auquel l'utilisateur n'a jamais eu l'intention de se connecter.

Veillez à réaliser de nombreux tests avant de configurer le comportement de digression.

Quand utiliser les digressions au lieu des gestionnaires de créneaux: Pour les questions générales que les utilisateurs peuvent poser, utilisez un nœud racine qui autorise les digressions, traite l'entrée, puis revient au flux en cours. Pour les nœuds comportant des créneaux, essayez d'anticiper les types de questions connexes que les utilisateurs pourraient vouloir poser lorsqu'ils remplissent les créneaux, et répondez-y en ajoutant des gestionnaires au nœud.

Par exemple, si le nœud avec les fentes recueille les informations nécessaires pour remplir une déclaration de sinistre, vous pouvez ajouter des gestionnaires qui répondent aux questions courantes sur l'assurance. En revanche, pour des questions sur la manière d'obtenir de l'aide, sur l'emplacement de vos magasins ou sur l'histoire de votre entreprise, utilisez un nœud de niveau racine.