In diesem Leitfaden wird beschrieben, wie Sie die Informationen empfangen und lesen, die Nutzer eingeben Kartennachrichten und Dialogfelder: Nutzer können Daten eingeben, die von Chat-Apps empfangen, gelesen und beantwortet werden an. Zu den Widgets, mit denen Nutzer Informationen eingeben können, gehören:
TextInput
zur Freitexteingabe, die auch Vorschläge unterstützt.SelectionInput
für Listenelemente und Menüs wie Kontrollkästchen, Optionsfelder und Dropdown-Menüs.DateTimePicker
für Datums- und Uhrzeiteinträge.
Mit dem Card Builder können Sie JSON-Kartennachrichten für Chat-Apps erstellen und als Vorschau ansehen:
Card Builder öffnenDurch den Empfang von Dateneingaben von Nutzern können Chat-Apps beispielsweise Folgendes tun: Folgendes:
- Aktualisieren Sie Kundenserviceanfragen.
- Aufträge erstellen
- Mit Webdiensten authentifizieren.
Vorbereitung
Node.js
Eine Google Chat App mit aktivierten interaktiven Funktionen. So erstellen Sie ein Chat-App mit einem HTTP-Dienst verwenden können, führen Sie diese Kurzanleitung aus.
Apps Script
Eine Google Chat App mit aktivierten interaktiven Funktionen. So erstellen Sie ein interaktive Chat-App in Apps Script verwenden möchten, führen Sie diese Kurzanleitung aus.
Python
Eine Google Chat App mit aktivierten interaktiven Funktionen. So erstellen Sie ein Chat-App mit einem HTTP-Dienst verwenden können, führen Sie diese Kurzanleitung aus.
So funktioniert der Empfang von Daten
In einer Chat-App werden dem Nutzer Informationen als
Dialogfeld oder Kartennachricht. In diesem Beispiel wird der Nutzer in einem Dialogfeld aufgefordert,
Informationen zu einem Kontakt mithilfe der
TextInput
und
SelectionInput
Widgets:
Anschließend empfängt die Chat-App die Daten, die Nutzer, die im Dialogfeld im JSON-Format eingegeben wurden, und ein interaction event (Interaktionsereignis). Dabei gilt:
EventType
istCARD_CLICKED
.DialogEventType
istSUBMIT_DIALOG
(nur für Dialogfelder).
Um Daten über die von Nutzern eingegebenen Daten zu erhalten, verwenden Sie die Methode
Event.common.formInputs
in der Ereignisnutzlast. Das Feld formInputs
ist eine Zuordnung, in der die Schlüssel
String-IDs, die den einzelnen Widgets zugewiesen sind, und Werte stehen für die Nutzereingabe
für jedes Widget. Verschiedene Objekte stellen unterschiedliche Eingabedatentypen dar. Für
Beispiel:
Event.common.formInputs.stringInputs
Stringeingaben darstellen.
Ihre App kann unter der folgenden Adresse auf den ersten vom Nutzer eingegebenen Wert zugreifen:
event.common.formInputs.NAME.stringInputs.value[0]
,
wobei NAME
das Feld name
eines
TextInput
-Widget.
Daten von Karten erhalten
Wenn ein Nutzer Daten in eine Kartennachricht eingibt, Die Chat-App empfängt eine Chat-App wie im folgenden Beispiel gezeigt:
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
}
}
Daten aus Dialogfeldern empfangen
Wenn ein Nutzer Daten in einem Dialogfeld sendet, wird Ihre Chat-App erhält ein anderes Chat-App-Interaktionsereignis, z. B. im folgenden Beispiel:
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
}
}
Auf Daten reagieren, die in einer Kartennachricht oder einem Dialog erfasst wurden
Nach dem Empfang der Daten aus einer Kartennachricht oder einem Dialogfenster
Die Chat-App antwortet entweder durch eine Empfangsbestätigung oder per
und einen Fehler zurückgegeben. Beides geschieht durch die Rückgabe eines
ActionResponse
:
- Um den erfolgreichen Erhalt zu bestätigen, antworten Sie mit einem
ActionResponse
mit"actionStatus": "OK"
. - Um einen Fehler zurückzugeben, antworten Sie mit einem
ActionResponse
mit"actionStatus": "ERROR MESSAGE"
.
Beispiel
Im folgenden Beispiel wird geprüft, ob ein name
-Wert vorhanden ist. Fehlt diese Angabe, wird der Parameter
App gibt einen Fehler zurück. Falls vorhanden, bestätigt die App den Erhalt der Formulardaten
und schließt das Dialogfeld.
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
In diesem Beispiel wird eine Kartennachricht gesendet, JSON-Karte Sie können auch die Apps Script-Kartendienst
/**
* 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!'
}
}
}
Fehlerbehebung
Wenn eine Google Chat-App oder card gibt einen Fehler zurück. Der Parameter In der Chatoberfläche wird die Meldung „Ein Fehler ist aufgetreten“ angezeigt. oder „Ihre Anfrage kann nicht verarbeitet werden.“ Manchmal kann die Chat-UI Es wird zwar keine Fehlermeldung angezeigt, aber die Chat-App oder die Karte zu einem unerwarteten Ergebnis führt. z. B. wird eine Kartennachricht angezeigt werden.
Auch wenn in der Chat-Benutzeroberfläche möglicherweise keine Fehlermeldung angezeigt wird, beschreibende Fehlermeldungen und Protokolldaten stehen zur Fehlerbehebung zur Verfügung. wenn die Fehlerprotokollierung für Chat-Apps aktiviert ist. Hilfe bei der Anzeige: Debugging und Beheben von Fehlern finden Sie unter Google Chat-Fehler beheben