Questa guida descrive come ricevere e leggere le informazioni inserite dagli utenti messaggi nella scheda e finestre di dialogo. Gli utenti possono inserire i dati che le app di chat ricevono, leggono e rispondono a. I widget che consentono agli utenti di inserire informazioni includono quanto segue:
TextInput
per l'inserimento di testo in formato libero che supporta anche i suggerimenti.SelectionInput
per voci di elenco e menu, come caselle di controllo, pulsanti di opzione e menu a discesa.DateTimePicker
per le voci di data e ora.
Utilizza Card Builder per progettare e visualizzare l'anteprima di messaggi delle schede JSON per le app di chat:
Apri il generatore di schedeLa ricezione di dati inseriti dagli utenti consente alle app di Chat, ad esempio le seguenti:
- Aggiorna le richieste di assistenza clienti.
- Creare ordini di lavoro.
- Esegui l'autenticazione con i servizi web.
Prerequisiti
Node.js
Un'app di Google Chat abilitata per le funzionalità interattive. Per creare un un'app di chat interattiva utilizzando un servizio HTTP, completa questa guida rapida.
Apps Script
Un'app di Google Chat abilitata per le funzionalità interattive. Per creare un app di Chat interattiva in Apps Script, completa questa guida rapida.
Python
Un'app di Google Chat abilitata per le funzionalità interattive. Per creare un un'app di chat interattiva utilizzando un servizio HTTP, completa questa guida rapida.
Come funziona la ricezione dei dati
Un'app di Chat presenta informazioni all'utente sotto forma di
una finestra di dialogo o un messaggio della scheda. In questo esempio, una finestra di dialogo chiede all'utente di inserire
informazioni su un contatto utilizzando
TextInput
e
SelectionInput
widget:
Al termine, l'app Chat riceve i dati utenti inseriti nella finestra di dialogo in formato JSON e un evento di interazione in cui:
EventType
èCARD_CLICKED
.DialogEventType
èSUBMIT_DIALOG
(solo per le finestre di dialogo).
Per ottenere dati su ciò che gli utenti hanno inserito, utilizza la
Event.common.formInputs
nel payload dell'evento. Il campo formInputs
è una mappa in cui si trovano le chiavi
gli ID stringa assegnati a ogni widget e i relativi valori rappresentano l'input dell'utente per
per ciascun widget. Oggetti diversi rappresentano tipi di dati di input diversi. Per
un esempio,
Event.common.formInputs.stringInputs
rappresentano gli input di stringa.
La tua app può accedere al primo valore inserito dall'utente all'indirizzo
event.common.formInputs.NAME.stringInputs.value[0]
,
dove NAME
è il campo name
di un
Widget TextInput
.
Ricevi dati dalle schede
Quando un utente inserisce dati in un messaggio di una scheda, L'app Chat riceve un'app Chat come nell'esempio seguente:
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
}
}
Ricevi dati dalle finestre di dialogo
Quando un utente invia dati in una finestra di dialogo, l'app Chat riceve un altro evento di interazione con l'app di Chat, come nell'esempio seguente:
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
}
}
Rispondere ai dati raccolti da un messaggio o da una finestra di dialogo della scheda
Dopo aver ricevuto i dati da un messaggio o da una finestra di dialogo, la
L'app Chat risponde confermando la ricezione o entro
e restituire un errore, entrambi effettuati restituendo un
ActionResponse
:
- Per confermare l'avvenuta ricezione, rispondi con un
ActionResponse
con"actionStatus": "OK"
. - Per restituire un errore, rispondi con un
ActionResponse
con"actionStatus": "ERROR MESSAGE"
.
Esempio
L'esempio seguente verifica la presenza di un valore name
. Se non è presente,
restituisce un errore. Se presente, l'app conferma la ricezione dei dati del modulo
e chiude la finestra di dialogo.
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
Questo esempio invia un messaggio di una scheda restituendo JSON card. Puoi utilizzare anche Servizio di schede 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!'
}
}
}
Risoluzione dei problemi
Quando un'app Google Chat o card restituisce un errore, L'interfaccia di Chat mostra il messaggio "Si è verificato un problema". o "Impossibile elaborare la richiesta". A volte, l'UI di Chat non mostra alcun messaggio di errore, ma l'app Chat o la scheda restituisce un risultato inaspettato; Ad esempio, il messaggio di una scheda potrebbe non vengono visualizzate.
Anche se un messaggio di errore potrebbe non essere visualizzato nella UI di Chat, messaggi di errore descrittivi e dati di log che ti aiuteranno a correggere gli errori quando il logging degli errori per le app di chat è attivo. Per assistenza con la visualizzazione, il debug e la correzione degli errori, consulta Risolvere i problemi e correggere gli errori di Google Chat.
Argomenti correlati
- Visualizza esempi di app di Chat che elaborano le informazioni degli utenti.
- Apri finestre di dialogo interattive