Na tej stronie dowiesz się, jak dodawać widżety i elementy interfejsu do kart, aby użytkownicy mogli wchodzić w interakcje z Twoją aplikacją w Google Chat, np. klikać przyciski lub przesyłać informacje.
Aplikacje Google Chat mogą używać tych interfejsów Google Chat do tworzenia interaktywnych kart:
- Wiadomości zawierające co najmniej 1 kartę.
- Strony główne, czyli karty wyświetlane na karcie Strona główna w wiadomościach bezpośrednich z aplikacją Google Chat.
- Okna dialogowe, czyli karty, które otwierają się w nowym oknie z wiadomości i stron głównych.
Gdy użytkownicy wchodzą w interakcję z kartami, aplikacje w Google Chat mogą używać otrzymanych danych do przetwarzania i odpowiedniego reagowania. Szczegółowe informacje znajdziesz w artykule Zbieranie i przetwarzanie informacji od użytkowników Google Chat.
Użyj narzędzia do tworzenia kart, aby projektować i wyświetlać podgląd wiadomości oraz interfejsów użytkownika aplikacji Google Chat:
Otwórz narzędzie do tworzenia kartWymagania wstępne
Aplikacja Google Chat skonfigurowana do odbierania zdarzeń interakcji i odpowiadania na nie. Aby utworzyć interaktywną aplikację do obsługi czatu, wykonaj jeden z tych przewodników Szybki start, w zależności od architektury aplikacji, której chcesz użyć:
- Usługa HTTP z Google Cloud Functions
- Google Apps Script
- Google Cloud Dialogflow CX
- Google Cloud Pub/Sub
Dodawanie przycisku
ButtonList
Widżet wyświetla zestaw przycisków. Przyciski mogą wyświetlać tekst, ikonę lub tekst i ikonę. Każdy element
Button
obsługuje
OnClick
działanie
wykonywane, gdy użytkownicy klikną przycisk. Na przykład:
- Otwórz hiperlink za pomocą elementu
OpenLink
, aby przekazać użytkownikom dodatkowe informacje. - Uruchom
action
, która uruchamia funkcję niestandardową, np. wywołuje interfejs API.
Przyciski obsługują tekst alternatywny, co ułatwia korzystanie z nich osobom z niepełnosprawnościami.
Dodawanie przycisku, który uruchamia funkcję niestandardową
Poniżej znajduje się karta składająca się z widżetu ButtonList
z 2 przyciskami.
Jeden przycisk otwiera dokumentację dewelopera Google Chat w nowej karcie. Drugi przycisk uruchamia funkcję niestandardową o nazwie goToView()
i przekazuje parametr viewType="BIRD EYE VIEW"
.
Dodawanie przycisku w stylu Material Design
Poniżej znajdziesz zestaw przycisków w różnych stylach przycisków Material Design.
Aby zastosować styl Material Design, nie uwzględniaj atrybutu „color”.
Dodawanie przycisku z niestandardowym kolorem i dezaktywowanego przycisku
Możesz uniemożliwić użytkownikom kliknięcie przycisku, ustawiając wartość "disabled": "true"
.
Poniżej znajduje się karta składająca się z widżetu ButtonList
z 2 przyciskami. Jeden przycisk korzysta z pola Color
, aby dostosować kolor tła przycisku. Drugi przycisk jest dezaktywowany za pomocą pola Disabled
, co uniemożliwia użytkownikowi kliknięcie przycisku i wykonanie funkcji.
Dodawanie przycisku z ikoną
Poniżej znajduje się karta składająca się z widżetu ButtonList
z 2 widżetami ikon Button
. Jeden przycisk używa pola
knownIcon
do wyświetlania wbudowanej ikony e-maila Google Chat. Drugi przycisk używa pola iconUrl
do wyświetlania widżetu ikony niestandardowej.
Dodawanie przycisku z ikoną i tekstem
Poniżej znajduje się karta z widżetem ButtonList
, który wyświetla użytkownikowi prośbę o wysłanie e-maila. Pierwszy przycisk zawiera ikonę e-maila, a drugi – tekst. Użytkownik może kliknąć ikonę lub przycisk tekstowy, aby uruchomić funkcję sendEmail
.
Dostosowywanie przycisku sekcji zwijanej
Dostosuj przycisk sterowania, który zwija i rozwija sekcje w karcie. Wybierz jedną z ikon lub obrazów, aby wizualnie przedstawić zawartość sekcji, co ułatwi użytkownikom zrozumienie informacji i interakcję z nimi.
Dodawanie rozszerzonego menu
Element Overflow menu
można stosować na kartach Google Chat, aby oferować dodatkowe opcje i działania. Umożliwia to dodanie większej liczby opcji bez zaśmiecania interfejsu karty, co zapewnia przejrzysty i uporządkowany wygląd.
Dodawanie listy elementów
Widżet ChipList
to wszechstronny i atrakcyjny wizualnie sposób wyświetlania informacji.
Używaj list z elementami, aby przedstawiać tagi, kategorie lub inne istotne dane, co ułatwi użytkownikom poruszanie się po treściach i wchodzenie z nimi w interakcję.
Zbieranie informacji od użytkowników
Z tej sekcji dowiesz się, jak dodawać widżety, które zbierają informacje, np. tekst lub wybrane opcje.
Aby dowiedzieć się, jak przetwarzać dane wprowadzane przez użytkowników, przeczytaj artykuł Zbieranie i przetwarzanie informacji od użytkowników Google Chat.
Zbieranie tekstu
TextInput
Widżet udostępnia pole, w którym użytkownicy mogą wpisywać tekst. Widżet obsługuje sugestie, które pomagają użytkownikom wprowadzać jednolite dane, oraz działania po zmianie, które są Actions
wykonywane, gdy w polu wprowadzania tekstu nastąpi zmiana, np. gdy użytkownik doda lub usunie tekst.
Jeśli musisz zbierać od użytkowników abstrakcyjne lub nieznane dane, użyj tego widżetuTextInput
. Aby zbierać określone dane od użytkowników, użyj widżetu
SelectionInput
.
Poniżej znajdziesz kartę z widżetem TextInput
:
Zbieranie dat i godzin
DateTimePicker
Widżet umożliwia użytkownikom wprowadzanie daty, godziny lub obu tych wartości. Użytkownicy mogą też używać selektora do wybierania dat i godzin. Jeśli użytkownicy wpiszą nieprawidłową datę lub godzinę, selektor wyświetli błąd z prośbą o poprawne wprowadzenie informacji.
Poniżej znajduje się karta składająca się z 3 rodzajów widżetów:DateTimePicker
Umożliwianie użytkownikom wybierania elementów
SelectionInput
Widżet udostępnia zestaw elementów do wyboru, takich jak pola wyboru, przyciski opcji, przełączniki lub menu. Za pomocą tego widżetu możesz zbierać od użytkowników zdefiniowane i znormalizowane dane. Aby zbierać od użytkowników niezdefiniowane dane, użyj widżetu TextInput
.
Widżet SelectionInput
obsługuje sugestie, które pomagają użytkownikom wprowadzać jednolite dane, oraz działania po zmianie, które są Actions
wykonywane, gdy w polu wprowadzania wyboru nastąpi zmiana, np. gdy użytkownik wybierze lub odznaczy element.
Aplikacje do obsługi czatu mogą odbierać i przetwarzać wartość wybranych produktów. Więcej informacji o pracy z danymi wejściowymi formularza znajdziesz w artykule Przetwarzanie informacji wprowadzonych przez użytkowników.
Ta sekcja zawiera przykłady kart, które korzystają z widżetu SelectionInput
.
W przykładach użyto różnych typów danych wejściowych sekcji:
Dodawanie pola wyboru
Poniżej znajduje się karta, na której użytkownik jest proszony o określenie, czy kontakt jest służbowy, osobisty czy oba, z widżetem SelectionInput
, który korzysta z pól wyboru:
Dodawanie przycisku opcji
Poniżej znajduje się karta z prośbą o określenie, czy kontakt jest służbowy czy prywatny, oraz widżet SelectionInput
z przyciskami opcji:
Dodawanie przełącznika
Poniżej znajduje się karta z prośbą o określenie, czy kontakt jest służbowy, osobisty czy oba, z widżetem SelectionInput
, który używa przełączników:
Dodawanie menu
Poniżej wyświetla się karta z prośbą o określenie, czy kontakt jest służbowy czy prywatny, z widżetem SelectionInput
, który korzysta z menu.
Dodawanie menu wielokrotnego wyboru
Poniżej znajduje się karta z prośbą o wybranie kontaktów z menu wielokrotnego wyboru:
Elementy menu wielokrotnego wyboru możesz wypełniać danymi z tych źródeł w Google Workspace:
- Użytkownicy Google Workspace: możesz wypełnić listę tylko użytkownikami z tej samej organizacji Google Workspace.
- Pokoje czatu: użytkownik wpisujący elementy w menu wielokrotnego wyboru może wyświetlać i wybierać tylko pokoje, do których należy w organizacji Google Workspace.
Aby używać źródeł danych Google Workspace, musisz określić pole
platformDataSource
. W przeciwieństwie do innych typów danych wejściowych wyboru pomijasz obiekty SelectionItem
, ponieważ te elementy wyboru są dynamicznie pobierane z Google Workspace.
Poniższy kod przedstawia menu wielokrotnego wyboru użytkowników Google Workspace.
Aby wypełnić listę użytkowników, dane wejściowe wyboru ustawiają wartość commonDataSource
na USER
:
JSON
{
"selectionInput": {
"name": "contacts",
"type": "MULTI_SELECT",
"label": "Selected contacts",
"multiSelectMaxSelectedItems": 5,
"multiSelectMinQueryLength": 1,
"platformDataSource": {
"commonDataSource": "USER"
}
}
}
Poniższy kod pokazuje menu wielokrotnego wyboru przestrzeni na czacie. Aby wypełnić miejsca, w polu wyboru należy określić pole hostAppDataSource
. W menu wielokrotnego wyboru ustawia się też wartość defaultToCurrentSpace
na true
, co sprawia, że bieżący pokój jest domyślnie wybierany w menu:
JSON
{
"selectionInput": {
"name": "spaces",
"type": "MULTI_SELECT",
"label": "Selected contacts",
"multiSelectMaxSelectedItems": 3,
"multiSelectMinQueryLength": 1,
"platformDataSource": {
"hostAppDataSource": {
"chatDataSource": {
"spaceDataSource": {
"defaultToCurrentSpace": true
}
}
}
}
}
}
Menu wielokrotnego wyboru mogą też zawierać elementy pochodzące ze źródła danych zewnętrznego lub firmy zewnętrznej. Możesz na przykład użyć menu wielokrotnego wyboru, aby pomóc użytkownikowi wybrać z listy potencjalnych klientów z systemu zarządzania relacjami z klientami (CRM).
Aby użyć zewnętrznego źródła danych, w polu externalDataSource
podaj funkcję, która zwraca elementy ze źródła danych.
Aby zmniejszyć liczbę żądań wysyłanych do zewnętrznego źródła danych, możesz uwzględnić sugerowane elementy, które pojawiają się w menu wielokrotnego wyboru, zanim użytkownicy zaczną wpisywać tekst w menu. Możesz na przykład wypełnić listę ostatnio wyszukiwanych kontaktów użytkownika. Aby wypełnić sugerowane produkty z zewnętrznego źródła danych, określ obiekty SelectionItem
.
Poniższy kod pokazuje menu wielokrotnego wyboru elementów z zewnętrznego zestawu kontaktów użytkownika. Menu domyślnie wyświetla 1 kontakt i uruchamia funkcję getContacts
, aby pobrać i wypełnić elementy z zewnętrznego źródła danych:
Node.js
Python
Java
Google Apps Script
W przypadku zewnętrznych źródeł danych możesz też automatycznie uzupełniać elementy, które użytkownicy zaczynają wpisywać w menu wielokrotnego wyboru. Jeśli na przykład użytkownik zacznie wpisywać Atl
w menu, które zawiera miasta w Stanach Zjednoczonych, aplikacja Google Chat może automatycznie zasugerować Atlanta
, zanim użytkownik skończy wpisywać. Możesz automatycznie uzupełnić maksymalnie 100 produktów.
Aby autouzupełniać elementy, utwórz funkcję, która wysyła zapytania do zewnętrznego źródła danych i zwraca elementy, gdy użytkownik wpisuje tekst w menu wielokrotnego wyboru. Funkcja musi wykonać te czynności:
- Przekaż obiekt zdarzenia, który reprezentuje interakcję użytkownika z menu.
- Sprawdź, czy wartość zdarzenia interakcji
invokedFunction
jest zgodna z funkcją z polaexternalDataSource
. - Gdy funkcje są zgodne, zwracaj sugerowane produkty ze źródła danych zewnętrznych. Aby sugerować elementy na podstawie tego, co wpisuje użytkownik, pobierz wartość klucza
autocomplete_widget_query
. Ta wartość reprezentuje to, co użytkownik wpisuje w menu.
Poniższy kod automatycznie uzupełnia elementy z zewnętrznego źródła danych. W poprzednim przykładzie aplikacja Chat sugeruje elementy na podstawie tego, kiedy zostanie wywołana funkcja getContacts
:
Node.js
Python
Java
Google Apps Script
Sprawdzanie danych wprowadzonych na kartach
Na tej stronie dowiesz się, jak weryfikować dane wprowadzane do action
i widżetów karty.
Możesz na przykład sprawdzić, czy w polu tekstowym użytkownik wpisał tekst lub czy zawiera ono określoną liczbę znaków.
Ustawianie wymaganych widżetów dla działań
W ramach karty action
dodaj do listy requiredWidgets
nazwy widżetów, których działanie potrzebuje.
Jeśli w momencie wywołania tej czynności którykolwiek z wymienionych tu widżetów nie ma wartości, przesyłanie działania formularza zostanie anulowane.
Jeśli dla działania ustawiono wartość "all_widgets_are_required": "true"
, wszystkie widżety na karcie są wymagane przez to działanie.
Ustawianie działania all_widgets_are_required
w przypadku wielokrotnego wyboru
JSON
{
"sections": [
{
"header": "Select contacts",
"widgets": [
{
"selectionInput": {
"type": "MULTI_SELECT",
"label": "Selected contacts",
"name": "contacts",
"multiSelectMaxSelectedItems": 3,
"multiSelectMinQueryLength": 1,
"onChangeAction": {
"all_widgets_are_required": true
},
"items": [
{
"value": "contact-1",
"startIconUri": "https://www.gstatic.com/images/branding/product/2x/contacts_48dp.png",
"text": "Contact 1",
"bottomText": "Contact one description",
"selected": false
},
{
"value": "contact-2",
"startIconUri": "https://www.gstatic.com/images/branding/product/2x/contacts_48dp.png",
"text": "Contact 2",
"bottomText": "Contact two description",
"selected": false
},
{
"value": "contact-3",
"startIconUri": "https://www.gstatic.com/images/branding/product/2x/contacts_48dp.png",
"text": "Contact 3",
"bottomText": "Contact three description",
"selected": false
},
{
"value": "contact-4",
"startIconUri": "https://www.gstatic.com/images/branding/product/2x/contacts_48dp.png",
"text": "Contact 4",
"bottomText": "Contact four description",
"selected": false
},
{
"value": "contact-5",
"startIconUri": "https://www.gstatic.com/images/branding/product/2x/contacts_48dp.png",
"text": "Contact 5",
"bottomText": "Contact five description",
"selected": false
}
]
}
}
]
}
]
}
Ustawianie działania all_widgets_are_required
w selektorze daty i godziny
JSON
{
"sections": [
{
"widgets": [
{
"textParagraph": {
"text": "A datetime picker widget with both date and time:"
}
},
{
"divider": {}
},
{
"dateTimePicker": {
"name": "date_time_picker_date_and_time",
"label": "meeting",
"type": "DATE_AND_TIME"
}
},
{
"textParagraph": {
"text": "A datetime picker widget with just date:"
}
},
{
"divider": {}
},
{
"dateTimePicker": {
"name": "date_time_picker_date_only",
"label": "Choose a date",
"type": "DATE_ONLY",
"onChangeAction":{
"all_widgets_are_required": true
}
}
},
{
"textParagraph": {
"text": "A datetime picker widget with just time:"
}
},
{
"divider": {}
},
{
"dateTimePicker": {
"name": "date_time_picker_time_only",
"label": "Select a time",
"type": "TIME_ONLY"
}
}
]
}
]
}
Ustawianie działania all_widgets_are_required
w menu
JSON
{
"sections": [
{
"header": "Section Header",
"collapsible": true,
"uncollapsibleWidgetsCount": 1,
"widgets": [
{
"selectionInput": {
"name": "location",
"label": "Select Color",
"type": "DROPDOWN",
"onChangeAction": {
"all_widgets_are_required": true
},
"items": [
{
"text": "Red",
"value": "red",
"selected": false
},
{
"text": "Green",
"value": "green",
"selected": false
},
{
"text": "White",
"value": "white",
"selected": false
},
{
"text": "Blue",
"value": "blue",
"selected": false
},
{
"text": "Black",
"value": "black",
"selected": false
}
]
}
}
]
}
]
}
Ustawianie weryfikacji widżetu wprowadzania tekstu
W polu weryfikacji widżetu textInput
może określić limit znaków i typ danych wejściowych dla tego widżetu wprowadzania tekstu.
Ustawianie limitu znaków w widżecie wprowadzania tekstu
JSON
{
"sections": [
{
"header": "Tell us about yourself",
"collapsible": true,
"uncollapsibleWidgetsCount": 2,
"widgets": [
{
"textInput": {
"name": "favoriteColor",
"label": "Favorite color",
"type": "SINGLE_LINE",
"validation": {"character_limit":15},
"onChangeAction":{
"all_widgets_are_required": true
}
}
}
]
}
]
}
Ustawianie typu danych wejściowych widżetu wprowadzania tekstu
JSON
{
"sections": [
{
"header": "Validate text inputs by input types",
"collapsible": true,
"uncollapsibleWidgetsCount": 2,
"widgets": [
{
"textInput": {
"name": "mailing_address",
"label": "Please enter a valid email address",
"type": "SINGLE_LINE",
"validation": {
"input_type": "EMAIL"
},
"onChangeAction": {
"all_widgets_are_required": true
}
}
},
{
"textInput": {
"name": "validate_integer",
"label": "Please enter a number",
"type": "SINGLE_LINE",
"validation": {
"input_type": "INTEGER"
}
}
},
{
"textInput": {
"name": "validate_float",
"label": "Please enter a number with a decimal",
"type": "SINGLE_LINE",
"validation": {
"input_type": "FLOAT"
}
}
}
]
}
]
}
Rozwiązywanie problemów
Gdy aplikacja Google Chat lub karta zwraca błąd, w interfejsie Google Chat pojawia się komunikat „Coś poszło nie tak”. lub „Nie udało się przetworzyć Twojej prośby”. Czasami interfejs Google Chat nie wyświetla żadnego komunikatu o błędzie, ale aplikacja lub karta Google Chat daje nieoczekiwany wynik, np. wiadomość na karcie może się nie pojawić.
Chociaż w interfejsie czatu może nie wyświetlać się komunikat o błędzie, opisowe komunikaty o błędach i dane logowania są dostępne, aby pomóc w naprawieniu błędów, gdy rejestrowanie błędów w aplikacjach na czat jest włączone. Pomoc dotyczącą wyświetlania, debugowania i naprawiania błędów znajdziesz w artykule Rozwiązywanie problemów z Google Chat.