Ce guide explique comment recevoir et lire les informations saisies par les utilisateurs messages des fiches et boîtes de dialogue. Les utilisateurs peuvent saisir des données que les applications Chat reçoivent, lisent et répondent auxquelles vous souhaitez vous connecter. Voici quelques widgets qui permettent aux utilisateurs de saisir des informations:
TextInput
pour saisir du texte au format libre qui accepte également les suggestions.SelectionInput
pour les éléments de liste et les menus, tels que les cases à cocher, les cases d'option et les menus déroulants.DateTimePicker
pour les entrées de date et d'heure.
Utilisez le générateur de cartes pour concevoir et prévisualiser des messages de cartes JSON pour les applications Chat:
Ouvrir Card BuilderLa réception des données saisies par les utilisateurs permet aux applications Chat d'effectuer différentes opérations : les éléments suivants:
- Mettre à jour les demandes du service client
- Créer des bons de travail
- S'authentifier auprès de services Web
Prérequis
Node.js
Une application Google Chat avec des fonctionnalités interactives. Pour créer un une application Chat interactive utilisant un service HTTP, suivez ce guide de démarrage rapide.
Apps Script
Une application Google Chat avec des fonctionnalités interactives. Pour créer un application Chat interactive dans Apps Script, suivez ce guide de démarrage rapide.
Python
Une application Google Chat avec des fonctionnalités interactives. Pour créer un une application Chat interactive utilisant un service HTTP, suivez ce guide de démarrage rapide.
Fonctionnement de la réception de données
Une application Chat présente des informations à l'utilisateur sous la forme
une boîte de dialogue ou un message de fiche. Dans cet exemple, une boîte de dialogue demande à l'utilisateur de saisir
les informations d'un contact à l'aide du
TextInput
et
SelectionInput
widgets:
Une fois l'opération terminée, l'application Chat reçoit les données les utilisateurs sont entrés dans la boîte de dialogue au format JSON et un événement d'interaction où:
EventType
estCARD_CLICKED
.DialogEventType
estSUBMIT_DIALOG
(pour les boîtes de dialogue uniquement).
Pour obtenir des données sur ce que les utilisateurs ont saisi, utilisez le
Event.common.formInputs
dans la charge utile de l'événement. Le champ formInputs
est un mappage dans lequel les clés sont
les identifiants de chaîne attribués à chaque widget et les valeurs représentent les entrées utilisateur pour
chaque widget. Différents objets représentent différents types de données d'entrée. Pour
exemple :
Event.common.formInputs.stringInputs
représentent des entrées de chaîne.
Votre application peut accéder à la première valeur saisie par l'utilisateur à
event.common.formInputs.NAME.stringInputs.value[0]
,
où NAME
est le champ name
d'une
Widget TextInput
Recevoir des données à partir de cartes
<ph type="x-smartling-placeholder">
Lorsqu'un utilisateur saisit des données dans un message sous forme de fiche, votre L'application Chat reçoit une application Chat d'interaction, comme dans l'exemple suivant:
JSON
{
"type": enum (EventType),
"eventTime": string,
"threadKey": string,
"message": {
object (Message)
},
"user": {
object (User)
},
"space": {
object (Space)
},
"action": {
object (FormAction)
},
"configCompleteRedirectUrl": string,
"common": {
// Represents user data entered in a card.
"formInputs": {
// Represents user data entered for a specific field in a card.
"NAME": {
// Represents string data entered in a card, like text input fields
// and check boxes.
"stringInputs": {
// An array of strings entered by the user in a card.
"value": [
string
]
}
}
},
"parameters": {
string: string,
...
},
"invokedFunction": string
}
}
Recevoir des données à partir des boîtes de dialogue
Lorsqu'un utilisateur envoie des données dans une boîte de dialogue, votre application Chat reçoit un autre événement d'interaction avec l'application Chat, tel que l'exemple suivant:
JSON
{
"type": enum (EventType),
"eventTime": string,
"threadKey": string,
"message": {
object (Message)
},
"user": {
object (User)
},
"space": {
object (Space)
},
"action": {
object (FormAction)
},
"configCompleteRedirectUrl": string,
// Indicates that this event is dialog-related.
"isDialogEvent": true,
// Indicates that a user clicked a button, and all data
// they entered in the dialog is included in Event.common.formInputs.
"dialogEventType": "SUBMIT_DIALOG",
"common": {
"userLocale": string,
"hostApp": enum (HostApp),
"platform": enum (Platform),
"timeZone": {
object (TimeZone)
},
// Represents user data entered in a dialog.
"formInputs": {
// Represents user data entered for a specific field in a dialog.
"NAME": {
// Represents string data entered in a dialog, like text input fields
// and check boxes.
"stringInputs": {
// An array of strings entered by the user in a dialog.
"value": [
string
]
}
}
},
"parameters": {
string: string,
...
},
"invokedFunction": string
}
}
Répondre aux données collectées à partir d'un message avec carte ou d'une boîte de dialogue
Après avoir reçu les données d'un message avec fiche ou d'une boîte de dialogue,
L'application de chat répond soit par un accusé de réception, soit par
renvoie une erreur. Ces deux opérations se font en renvoyant une
ActionResponse
:
- Pour accuser réception de votre message, répondez avec un
ActionResponse
contenant"actionStatus": "OK"
. - Pour renvoyer une erreur, répondez avec une
ActionResponse
contenant"actionStatus": "ERROR MESSAGE"
.
Exemple
L'exemple suivant vérifie la présence d'une valeur name
. Si ce champ n'est pas renseigné,
l'application renvoie une erreur. Le cas échéant, l'application accuse réception des données du formulaire
et ferme la boîte de dialogue.
Node.js
/**
* Checks for a form input error, the absence of
* a "name" value, and returns an error if absent.
* Otherwise, confirms successful receipt of a dialog.
*
* Confirms successful receipt of a dialog.
*
* @param {Object} event the event object from Chat API.
*
* @return {object} open a Dialog in Google Chat.
*/
function receiveDialog(event) {
// Checks to make sure the user entered a name
// in a dialog. If no name value detected, returns
// an error message.
if (event.common.formInputs.WIDGET_NAME.stringInputs.value[0] == "") {
res.json({
"actionResponse": {
"type": "DIALOG",
"dialogAction": {
"actionStatus": "Don't forget to name your new contact!"
}
}
});
// Otherwise the app indicates that it received
// form data from the dialog. Any value other than "OK"
// gets returned as an error. "OK" is interpreted as
// code 200, and the dialog closes.
} else {
res.json({
"actionResponse": {
"type": "DIALOG",
"dialogAction": {
"actionStatus": "OK"
}
}
});
}
}
Apps Script
Cet exemple envoie un message de carte en renvoyant fichier JSON de la carte. Vous pouvez également utiliser Service de fiches Apps Script.
/**
* Checks for a form input error, the absence of
* a "name" value, and returns an error if absent.
* Otherwise, confirms successful receipt of a dialog.
*
* Confirms successful receipt of a dialog.
*
* @param {Object} event the event object from Chat API.
*
* @return {object} open a Dialog in Google Chat.
*/
function receiveDialog(event) {
// Checks to make sure the user entered a name
// in a dialog. If no name value detected, returns
// an error message.
if (event.common.formInputs.WIDGET_NAME[""].stringInputs.value[0] == "") {
return {
"actionResponse": {
"type": "DIALOG",
"dialogAction": {
"actionStatus": "Don't forget to name your new contact!"
}
}
};
// Otherwise the app indicates that it received
// form data from the dialog. Any value other than "OK"
// gets returned as an error. "OK" is interpreted as
// code 200, and the dialog closes.
} else {
return {
"actionResponse": {
"type": "DIALOG",
"dialogAction": {
"actionStatus": "OK"
}
}
};
}
}
Python
def receive_dialog(event: Mapping[str, Any]) -> Mapping[str, Any]:
"""Checks for a form input error, the absence of a "name" value, and returns
an error if absent. Otherwise, confirms successful receipt of a dialog.
Args:
event (Mapping[str, Any]): the event object from Chat API.
Returns:
Mapping[str, Any]: the response.
"""
if common := event.get('common'):
if form_inputs := common.get('formInputs'):
if contact_name := form_inputs.get('WIDGET_NAME'):
if string_inputs := contact_name.get('stringInputs'):
if name := string_inputs.get('value')[0]:
return {
'actionResponse': {
'type': 'DIALOG',
'dialogAction': {
'actionStatus': 'OK'
}
}
}
else:
return {
'actionResponse': {
'type': 'DIALOG',
'dialogAction': {
'actionStatus': 'Don\'t forget to name your new contact!'
}
}
}
Résoudre les problèmes
Lorsqu'une application ou card renvoie une erreur, la L'interface Chat affiche le message "Une erreur s'est produite". ou "Impossible de traiter votre demande." Parfois, l'interface utilisateur de Chat n'affiche aucun message d'erreur, mais que l'application ou la carte produit un résultat inattendu. Par exemple, un message de fiche peut ne pas s'affichent.
Même s'il est possible qu'aucun message d'erreur ne s'affiche dans l'interface utilisateur de Chat, Des messages d'erreur descriptifs et des données de journaux sont disponibles pour vous aider à corriger les erreurs. Lorsque la journalisation des erreurs est activée pour les applications Chat. Pour obtenir de l'aide, le débogage et la correction des erreurs, consultez Résoudre les problèmes liés à Google Chat
Articles associés
- Consultez des exemples d'applications Chat qui traitent les informations fournies par les utilisateurs.
- Ouvrir des boîtes de dialogue interactives