Les invites définissent la manière dont votre action affiche les réponses aux utilisateurs et la manière dont votre action les invite à continuer. Lorsque vous créez votre action, vous pouvez ajouter des invites à des appels et à différents endroits de la scène. Les requêtes peuvent être aussi simples qu'une réponse textuelle ou vocale, ou être plus complexes et inclure du contenu enrichi tel que des cartes, des images et des tableaux.
Types de réponses
Pour chaque requête, vous avez le choix entre plusieurs types de réponses engageantes que l'Assistant doit présenter aux utilisateurs:
- Réponses simples: les réponses simples prennent la forme d'une bulle de chat et utilisent la synthèse vocale ou le langage de balisage de synthèse vocale (SSML) pour le son. Les réponses simples sont les seules réponses compatibles avec tous les types d'appareils.
- Réponses enrichies: les réponses enrichies contiennent des éléments visuels ou fonctionnels qui améliorent les interactions des utilisateurs avec vos actions. Les réponses enrichies vous permettent également d'afficher des données tabulaires ou de lire des contenus audio plus longs.
- Réponses de sélection visuelle: les réponses de sélection visuelle fournissent une interface visuelle permettant aux utilisateurs de choisir entre plusieurs options qui se différencient le plus facilement par leur titre ou par une image.
- Réponses multimédias: les réponses multimédias permettent à vos actions de lire des contenus audio plus longs qu'avec SSML et fournissent un composant visuel avec des commandes multimédias.
- Interactive Canvas: Interactive Canvas affiche les réponses sous la forme de vues Web en plein écran et fonctionne comme une application Web interactive que l'Assistant envoie en tant que réponse à l'utilisateur dans une conversation. Canvas utilise un format de requête légèrement différent pour offrir une plus grande flexibilité par rapport aux normes Web telles que HTML, CSS et JavaScript.
Chacun de ces types de réponses utilise le même format d'invite de base et a accès aux mêmes fonctionnalités générales décrites ci-dessous.
Format d'une requête
Dans votre projet Actions, vous définissez des requêtes au format YAML ou JSON. Chaque invite peut contenir jusqu'à deux réponses simples et définir éventuellement une réponse enrichie. Les réponses sont définies comme suit:
first_simple
: réponse textuelle ou vocale initiale à envoyer à l'utilisateur.content
: contenu de réponse enrichi supplémentaire à envoyer après des réponses simples.last_simple
Réponse textuelle ou vocale finale à envoyer à l'utilisateur.canvas
: renvoie à une application Web qui s'intègre à Interactive Canvas.
Par défaut, les invites sont ajoutées les unes aux autres dans l'ordre ci-dessus dans une file d'attente d'invites. Avant que l'utilisateur ne puisse répondre, l'Assistant lui présente toutes les invites dans la file d'attente d'invites.
En outre, vous offrez une certaine flexibilité à l'invite grâce aux fonctionnalités suivantes:
- Candidats: les candidats vous permettent de définir des réponses en fonction des caractéristiques de l'appareil d'un utilisateur. Par exemple, vous pouvez faire en sorte que l'Assistant affiche des réponses enrichies uniquement lorsqu'un utilisateur interagit avec votre action sur un appareil compatible avec l'affichage.
- Variantes: les variantes sont des variantes d'un même message. Par exemple, vous pouvez demander à l'Assistant de choisir entre cinq variantes de message de bienvenue différentes chaque fois qu'un utilisateur appelle votre action.
- Suggestions: les suggestions fournissent aux utilisateurs des appareils compatibles l'affichage avec des chips de suggestion lorsque l'Assistant affiche l'invite.
Une invite par défaut utilise une suggestion, une variante et une réponse first_simple
.
Candidats
Dans une invite, l'objet candidates
vous permet de définir des réponses en fonction des fonctionnalités de l'appareil d'un utilisateur. Par exemple, vous pouvez faire en sorte que l'Assistant affiche des réponses enrichies uniquement lorsqu'un utilisateur interagit avec votre action sur un appareil compatible avec l'affichage. Pour définir les types d'appareils sur lesquels l'Assistant peut renvoyer une suggestion, utilisez la propriété selector
de l'objet candidates
.
Dans l'exemple ci-dessous, la propriété selector
contient les informations sur les fonctionnalités de l'appareil. Les invites définies dans le premier candidat sont envoyées aux utilisateurs sur un appareil pouvant afficher des réponses enrichies. Le deuxième candidat contient des invites destinées aux utilisateurs qui ne peuvent recevoir que des réponses textuelles et vocales.
YAML
candidates: - selector: surface_capabilities: capabilities: - RICH_RESPONSE first_simple: variants: - speech: Here's a simple message. content: card: title: Image card title text: Some details about the image image: url: 'https://www.example.com/image/' - first_simple: variants: - speech: Text explains what the image might have shown in more detail.
JSON
{ "candidates": [{ "selector": { "surface_capabilities": { "capabilities": ["RICH_RESPONSE"] } }, "first_simple": { "variants": [{ "speech": "Here's a simple message." }] }, "content": { "card": { "title": "Image card title", "text": "Some details about the image", "image": { "url": "https://www.example.com/image/" } } } }, { "first_simple": { "variants": [{ "speech": "Text explains what the image might have shown in more detail." }] } }] }
Vous pouvez indiquer une ou plusieurs exigences en termes de capacités à un candidat donné. La liste suivante décrit chacune des exigences de capacité disponibles:
SPEECH
: l'appareil peut communiquer avec l'utilisateur via la synthèse vocale ou SSML.RICH_RESPONSE
: l'appareil peut afficher des réponses enrichies telles que des fiches, des listes et des tableaux.LONG_FORM_AUDIO
: l'appareil peut lire des contenus audio en version longue, comme de la musique et des podcasts.INTERACTIVE_CANVAS
: l'appareil peut afficher une réponse Interactive Canvas.WEB_LINK
: l'appareil peut utiliser des liens Web dans les réponses enrichies pour ouvrir un navigateur Web.HOME_STORAGE
: l'appareil peut stocker des données dans l'espace de stockage de la maison et y accéder.
Variantes
Les variantes permettent de définir plusieurs versions d'une réponse. Lorsque l'Assistant envoie l'invite à un utilisateur, l'une des variantes est choisie au hasard. Une bonne pratique de conception de conversation consiste à fournir aux utilisateurs d'autres réponses lorsqu'ils discutent avec votre action.
Par exemple, fournissez différentes variantes de message de bienvenue afin que les utilisateurs n'entendent pas la même réponse à chaque fois qu'ils appellent votre action:
YAML
candidates: - first_simple: variants: - speech: Hello. - speech: Hi there. - speech: Welcome.
JSON
{ "candidates": [{ "first_simple": { "variants": [{ "speech": "Hello." },{ "speech": "Hi there." },{ "speech": "Welcome." }] } }] }
Suggestions
![Exemple de chips de suggestion sur un écran connecté](https://developers-dot-devsite-v2-prod.appspot.com/static/assistant/conversational/images/smart-display/chips.png?authuser=6&hl=fr)
Les suggestions fournissent aux utilisateurs d'appareils compatibles l'affichage de chips de suggestion lorsque l'Assistant affiche l'invite. Utilisez des chips de suggestion pour indiquer les réponses des utilisateurs afin de poursuivre ou de faire pivoter la conversation. Lorsque l'utilisateur appuie dessus, un chip de suggestion renvoie le texte affiché dans la conversation telle quelle, comme si l'utilisateur l'avait saisi.
Une requête peut contenir jusqu'à huit suggestions, chacune d'une longueur maximale de 25 caractères en texte brut.
Pour ajouter une suggestion, fournissez un objet Suggestion
contenant chaque suggestion dans un champ title
distinct. Chaque titre doit être unique parmi l'ensemble de chips de suggestion. Dans Actions Builder, cet objet est représenté en YAML et JSON par suggestions
.
Par exemple, vous pouvez indiquer "Oui" et "Non" à côté d'une question:
YAML
candidates: - first_simple: variants: - speech: 'Welcome, do you want to play a game?' suggestions: - title: 'Yes' - title: 'No'
JSON
{ "candidates": [{ "first_simple": { "variants": [{ "speech": "Welcome, do you want to play a game?" }] }, "suggestions": [{ "title": "Yes" }, { "title": "No" }] }] }