Z tego przewodnika dowiesz się, jak otrzymywać i czytać informacje wpisywane przez użytkowników wiadomości z kart oraz okna dialogowe. Użytkownicy mogą wprowadzać dane, które aplikacje do obsługi czatu otrzymują, odczytują i odpowiadają do. Widżety, które umożliwiają użytkownikom wpisywanie informacji:
TextInput
który obsługuje też sugestie.SelectionInput
dla elementów listy i menu, takich jak pola wyboru, opcje i menu.DateTimePicker
dla wpisów z datą i godziną.
Za pomocą kreatora kart możesz zaprojektować i wyświetlić podgląd wiadomości kart JSON przeznaczonych do aplikacji Google Chat:
Otwórz kreator kartOdbieranie danych od użytkowników umożliwia aplikacjom Google Chat wykonywanie takich czynności jak: następujące:
- Zaktualizuj zgłoszenia do obsługi klienta.
- Tworzenie zamówień.
- Uwierzytelniaj za pomocą usług internetowych.
Wymagania wstępne
Node.js
Aplikacja Google Chat, w której można korzystać z funkcji interaktywnych. Aby utworzyć interaktywna aplikacja do obsługi czatu przy użyciu usługi HTTP zapoznaj się z tym krótkim wprowadzeniem.
Google Apps Script
Aplikacja Google Chat, w której można korzystać z funkcji interaktywnych. Aby utworzyć z interaktywną aplikacją Google Chat w Apps Script, zapoznaj się z tym krótkim wprowadzeniem.
Python
Aplikacja Google Chat, w której można korzystać z funkcji interaktywnych. Aby utworzyć interaktywna aplikacja do obsługi czatu przy użyciu usługi HTTP zapoznaj się z tym krótkim wprowadzeniem.
Jak działa odbieranie danych
Aplikacja do obsługi czatu przedstawia użytkownikowi informacje w formie
lub komunikat na karcie. W tym przykładzie użytkownik musi wpisać
informacje o kontakcie za pomocą
TextInput
oraz
SelectionInput
widżety:
Gdy skończysz, aplikacja Google Chat otrzyma dane, które wprowadzonych w oknie dialogowym w formacie JSON oraz zdarzenia interakcji, gdzie:
EventType
–CARD_CLICKED
.DialogEventType
toSUBMIT_DIALOG
(tylko w przypadku okien dialogowych).
Aby poznać dane wprowadzone przez użytkowników, użyj funkcji
Event.common.formInputs
w ładunku zdarzenia. Pole formInputs
to mapa, w której klucze
ciągi tekstowe przypisane do każdego widżetu, a wartości reprezentują dane wejściowe użytkownika dla
dla każdego widżetu. Różne obiekty reprezentują różne typy danych wejściowych. Dla:
przykład,
Event.common.formInputs.stringInputs
reprezentują dane wejściowe w postaci ciągu znaków.
Aplikacja ma dostęp do pierwszej wartości wpisanej przez użytkownika na stronie
event.common.formInputs.NAME.stringInputs.value[0]
,
gdzie NAME
jest polem name
elementu
Widżet TextInput
.
Odbieranie danych z kart
Gdy użytkownik wpisze dane w wiadomości na karcie, Aplikacja do obsługi czatu odbiera aplikację Google Chat zdarzenie interakcji, np. w tym przykładzie:
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
}
}
Odbieranie danych z okien dialogowych
Gdy użytkownik prześle dane w oknie, aplikacja Google Chat odbiera inne zdarzenie interakcji z aplikacją Google Chat, takie jak następujący przykład:
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
}
}
Reaguj na dane zebrane w komunikacie lub oknie dialogowym
Po otrzymaniu danych z komunikatu lub okna dialogowego w karcie
Aplikacja do obsługi czatu odpowiada, potwierdzając odbiór lub
zwraca błąd. Oba wykonywane są przez zwrócenie
ActionResponse
:
- Aby potwierdzić odbiór, wyślij odpowiedź o treści
ActionResponse
z parametrem"actionStatus": "OK"
. - Aby zwrócić błąd, w odpowiedzi podaj
ActionResponse
z parametrem"actionStatus": "ERROR MESSAGE"
.
Przykład
W tym przykładzie sprawdzamy, czy występuje wartość name
. Jeśli go nie podasz,
aplikacja zwraca błąd. Jeśli ta opcja jest dostępna, aplikacja potwierdza otrzymanie danych z formularza.
i zamyka okno.
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"
}
}
});
}
}
Google Apps Script
Ten przykładowy kod karty wysyła wiadomość przez zwrócenie card JSON. Możesz też użyć usługi Usługa karty 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!'
}
}
}
Rozwiązywanie problemów
Gdy aplikacja Google Chat lub card zwraca błąd, Interfejs czatu wyświetla komunikat „Coś poszło nie tak”. lub „Nie można przetworzyć żądania”. Czasami interfejs Google Chat nie wyświetla się żaden komunikat o błędzie, ale aplikacja Google Chat lub zwraca nieoczekiwany wynik; na przykład wiadomość w formie karty .
Komunikat o błędzie może nie wyświetlać się w interfejsie Google Chat, opisowe komunikaty o błędach i dane dziennika, które pomogą Ci w naprawianiu błędów gdy logowanie błędów aplikacji Google Chat jest włączone. Aby uzyskać pomoc w wyświetlaniu, debugowania i naprawiania błędów, zapoznaj się z artykułem Rozwiązywanie problemów z błędami w Google Chat
Powiązane artykuły
- Zobacz przykłady aplikacji Google Chat, które przetwarzają informacje od użytkowników.
- Otwieranie interaktywnych okien dialogowych