Combinées aux intents, les scènes constituent l'autre élément principal de votre modèle de conversation. Elles représentent des états individuels de votre conversation. Leur objectif principal est d'organiser votre conversation en fragments logiques, d'exécuter des tâches et de renvoyer des invites aux utilisateurs.
Voici quelques caractéristiques des scènes:
- Exécution en boucle : les scènes s'exécutent dans une boucle jusqu'à ce qu'elles répondent aux critères de transition que vous avez définis. Cela vous permet de créer des flux logiques de contrôle beaucoup plus efficacement dans une seule scène.
- Séparation des dialogues : en combinaison avec des intents, les scènes vous permettent de regrouper les boîtes de dialogue en blocs logiques, ce qui vous permet de créer facilement des paires requête utilisateur et réponse d'action.
- Portée de la correspondance d'intent : comme une seule scène peut être active à la fois, vous pouvez limiter la correspondance d'intent aux scènes de votre choix et les faire correspondre uniquement lorsque ces scènes sont actives.
- Remplissage d'emplacements : vous pouvez utiliser le remplissage d'emplacements dans une scène pour collecter plusieurs entrées utilisateur saisies, sans avoir à créer plusieurs intents.
- Conditions dans l'image : vous pouvez vérifier l'espace de stockage des emplacements, des sessions, des utilisateurs et de la maison pour exécuter une logique conditionnelle simple sans déclencher de webhook.
Vous pouvez définir des scènes faisant partie de votre modèle conversationnel en tant que scène personnalisée. La logique de conversation de l'Assistant inclut également des scènes système qui fournissent des fonctionnalités standards pour votre conversation.
Scènes personnalisées
Une scène personnalisée est un élément de base de la logique de conversation qui fait partie du modèle de conversation de votre action. Les scènes personnalisées comportent des étapes qui définissent quand et comment elles démarrent, appelées activation, le traitement conversationnel effectué (appelé cycle de vie d'exécution) et la fin de la scène, appelée transition:
- Activation : pour qu'une scène puisse s'exécuter, vous devez l'activer via une correspondance d'intent globale ou une transition de scène.
- Exécution : lorsqu'une scène est active, elle s'exécute selon un cycle de vie bien défini qui vous permet d'effectuer diverses tâches telles que le remplissage d'emplacements, la vérification conditionnelle, la génération d'invites et le déclenchement d'événements de webhook.
- Transition : Lorsqu'une scène répond aux critères que vous définissez, tels que la mise en correspondance d'un intent ou le remplissage d'emplacements, vous pouvez passer à une autre scène pour exécuter encore plus de logique. Vous pouvez également passer à la scène système End conversation (Terminer la conversation), ce qui met fin à la conversation avec l'utilisateur.
Activation
Pour qu'une scène puisse s'exécuter, elle doit être active. Une seule scène peut être active à la fois. Vous pouvez activer des scènes de différentes manières:
- Appel : lorsque l'entrée utilisateur correspond au modèle de langage d'un intent global, vous pouvez activer une scène pour traiter l'appel.
- Transition de scène statique : lorsqu'une scène répond aux critères de transition, vous pouvez définir une transition vers une autre scène.
- Transition de scène dynamique : dans un gestionnaire de webhook, vous pouvez passer à une autre scène de manière programmatique.
Cycle de vie de l'exécution
Lorsqu'une scène est active, elle s'exécute selon un cycle de vie bien défini qui se répète en boucle jusqu'à ce qu'elle réponde aux critères de transition que vous avez définis. Le cycle de vie d'une scène est divisé en étapes facultatives qui s'exécutent dans l'ordre suivant:
On enter (À l'entrée) : cette étape ne s'exécute qu'une seule fois lorsqu'une scène est activée. Vous pouvez déclencher un webhook ou inviter l'utilisateur à effectuer une configuration unique de votre scène.
Conditions : les conditions vous permettent d'évaluer certains critères avant d'avancer dans les étapes du cycle de vie, de déclencher un webhook ou d'envoyer des invites. Cette étape peut définir des critères de transition pour quitter la boucle d'exécution.
Remplissage d'emplacements : une scène peut automatiquement inviter les utilisateurs jusqu'à ce qu'elle collecte tous les emplacements requis (données typées). Une scène invite un seul emplacement à chaque fois via sa boucle d'exécution. S'il manque des emplacements, le cycle de vie de la scène revient à l'étape de remplissage d'emplacements et vous invite à passer au prochain emplacement requis. Cette étape peut définir des critères de transition pour quitter la boucle d'exécution.
Invites : l'Assistant envoie la file d'attente d'invites à l'utilisateur et l'efface. La file d'attente d'invites est la collection fusionnée d'invites agrégées depuis la dernière fois que cette étape a effacé la file d'attente.
Entrée : l'Assistant utilise et renvoie les entrées utilisateur à votre scène afin que vous puissiez les traiter, ce qui peut inclure la mise en correspondance des intents (intents globaux ou utilisateurs dans une scène), le remplissage continu des emplacements (si elle n'est pas terminée), ou l'absence de correspondance ou l'absence d'erreurs de saisie. Cette étape peut définir des critères de transition pour quitter la boucle d'exécution. Si la transition n'est pas effectuée, la boucle d'exécution revient à l'étape des conditions.
Les sections suivantes décrivent chaque étape du cycle de vie plus en détail.
À l'entrée
L'entrée est la seule étape qui ne s'exécute pas dans la boucle d'exécution d'une scène. Il effectue une initialisation unique de votre scène dans l'ordre suivant:
- Si l'environnement d'exécution de l'Assistant peut remplir tous les emplacements d'un intent précédemment mis en correspondance, il le fait maintenant pour préparer la scène pour l'étape de remplissage d'emplacements. Par exemple, certaines entrées utilisateur peuvent correspondre à un intent et fournir un emplacement. Cette correspondance d'intent active une scène et peut remplir un emplacement dans une scène si les noms des emplacements correspondent.
- Si un webhook est activé, il déclenche un événement de manière synchrone et attend que votre service Web renvoie une réponse.
- Lorsque l'environnement d'exécution reçoit une réponse webhook, il résout toutes les références de paramètres dans les invites et sélectionne une invite candidate en fonction de la surface de l'utilisateur, puis sélectionne une variante à envoyer ultérieurement à l'utilisateur.
- Si la réponse du webhook contient une invite, il l'ajoute à la file d'attente d'invites. Si une invite statique existe également, l'invite de webhook est d'abord fusionnée dans la file d'attente d'invites, suivie de l'invite statique.
- Si la réponse du webhook contient une transition, elle le fait maintenant. Si ce n'est pas le cas, la scène passe à l'étape de remplissage de cases.
Conditions
Les conditions vous permettent de vérifier si une condition est remplie dans les données de session, d'utilisateur ou d'emplacement. Par exemple, vous pouvez vérifier si tous les emplacements sont remplis et le définir comme critère de transition vers une autre scène afin de traiter les emplacements.
- L'environnement d'exécution de l'Assistant évalue chaque condition dans l'ordre dans lequel elles sont spécifiées. La première condition dont le résultat de l'évaluation est
true
exécute le gestionnaire associé et arrête l'évaluation des conditions. - Une condition
else if scene.slots.status = "FINAL"
est automatiquement ajoutée à la liste des conditions si vous effectuez un remplissage d'emplacements. Cette condition facultative vérifie que le remplissage des emplacements est terminé et peut déclencher un webhook ou ajouter des invites à la file d'attente des invites.
Après l'évaluation de la condition, si la scène ne définit pas de transition, elle continue à remplir les emplacements.
Remplissage de cases
Cette étape permet d'ajouter une invite pour un seul emplacement non rempli et requis. Si vous ne définissez aucun emplacement dans la scène, cette étape n'a aucun effet.
- L'environnement d'exécution de l'Assistant sélectionne le premier emplacement non rempli et ajoute l'invite correspondante à la file d'attente d'invites. Comme l'exécution de la scène est en boucle, les emplacements supplémentaires non remplis sont gérés ultérieurement lorsque la boucle d'exécution revient à cette étape.
- L'emplacement actuel et actif peut comporter des invites de gestion des erreurs qui remplacent celles définies dans l'étape d'entrée de la scène.
- Lorsque l'utilisateur remplit un emplacement, vous pouvez le valider dans un service Web en déclenchant un webhook.
Invites
L'environnement d'exécution de l'Assistant envoie la file d'attente d'invites à l'utilisateur, l'efface et utilise l'entrée utilisateur.
Entrée
L'environnement d'exécution de l'Assistant tente de faire correspondre l'entrée à un intent ou un emplacement:
- Dans le cas d'une correspondance d'intent utilisateur, la scène exécute le gestionnaire d'intent associé (intent utilisateur ou système). Le gestionnaire d'intent d'une scène est prioritaire par rapport aux intents globaux. Si vous n'avez pas défini de transition, l'exécution de la scène revient à l'étape des conditions.
- Dans le cas d'une correspondance d'emplacement, la scène revient à l'étape de remplissage d'emplacements.
Dans le cas d'une correspondance d'intent système (par exemple, pas d'entrée ou pas de correspondance), vous pouvez ajouter des invites à la file d'attente d'invites, déclencher un webhook ou une transition. En cas de plusieurs invites sans correspondance définies, l'environnement d'exécution de l'Assistant choisit la plus pertinente, dans l'ordre suivant: remplissage d'emplacements, scène, puis invites sans correspondance globales. Aucune correspondance consécutive ne génère un événement correspondant:
no_match_1
no_match_2
no_match_final
Chaque niveau d'absence de correspondance (remplissage de cases, scène et global) peut déclencher des événements de webhook. Par défaut, la troisième et dernière "Aucune correspondance" met fin à la conversation.
Transition
Les transitions peuvent se produire selon les étapes suivantes:
- Conditions : vous pouvez passer à une autre scène en fonction des conditions que vous définissez. Il est courant de vérifier que le remplissage de cases est terminé.
- Entrée (correspondance d'intent utilisateur) : si un intent correspond, il peut déclencher une transition vers une autre scène.
- Entrée (mise en correspondance des intents système) : vous pouvez déclencher des webhooks lors de tout événement de correspondance d'intent système. En l'absence de correspondance et d'événement d'entrée, la scène passe par défaut à la scène End conversation (Terminer la conversation) après trois occurrences.
Scènes système
Les scènes système vous permettent d'utiliser la logique de conversation intégrée fournie par l'Assistant, ce qui vous permet d'ajouter des flux de conversation standards à votre expérience utilisateur. Par exemple, la scène du système d'association de comptes permet à l'Assistant de prendre le relais temporairement pour effectuer le flux d'association de comptes, en renvoyant les informations dont vous avez besoin pour associer les comptes de l'utilisateur. Les scènes système ne suivent pas le cycle de vie standard.
La liste suivante décrit les scènes système compatibles et explique comment les utiliser:
- Terminer la conversation : ferme le micro et met fin à la conversation avec l'utilisateur. L'Assistant reprend le contrôle de l'expérience utilisateur une fois la scène exécutée.
- Association de comptes : guide l'utilisateur à travers un flux d'association de comptes et fournit à vos actions les informations requises pour associer le compte de l'utilisateur sur vos serveurs backend à son compte Google. Pour en savoir plus sur l'utilisation de cette scène, consultez la documentation sur l'association de comptes.
- Mises à jour quotidiennes : guide l'utilisateur à travers un flux de confirmation pour ajouter vos actions à ses mises à jour quotidiennes. Consultez la documentation des mises à jour quotidiennes pour en savoir plus sur l'utilisation de cette scène.
- Notifications : guide l'utilisateur à travers un flux de confirmation pour recevoir des notifications de vos actions. Pour en savoir plus sur l'utilisation de cette scène, consultez la documentation sur les notifications push.