Zusätzlich zu SMS können Google Chat-Apps Kartennachrichten in Gruppenbereichen und für Nutzer erstellen. Karten unterstützen ein definiertes Layout, interaktive UI-Elemente wie Schaltflächen und Rich Media wie Bilder.
Mithilfe von Kartennachrichten haben Sie folgende Möglichkeiten:
- Detaillierte Informationen präsentieren
- Informationen von Nutzern erfassen
- Nutzer anleiten, den nächsten Schritt zu tun
In dieser Anleitung wird beschrieben, wie Sie Kartennachrichten synchron (eine Echtzeitantwort auf ein Google Chat-Ereignis wie das Empfangen einer Nachricht von einem Nutzer oder das Hinzufügen zu einem Gruppenbereich) synchron erstellen und asynchron an die Anwendung senden, indem sie die Anwendung über die Google Chat API an einen Gruppenbereich oder einen Nutzer senden.
Voraussetzungen
Sie benötigen Folgendes, um die Kartennachrichten in diesem Leitfaden zu erstellen:
Node.js
- Ein Google Workspace-Konto mit Zugriff auf Google Chat.
- Eine Chat-App. Folgen Sie dieser Kurzanleitung, um eine Chat-App zu erstellen.
Hinweis:Die Node.js-Codebeispiele in diesem Leitfaden sind als Google Cloud Functions-Funktion ausgeführt.
Python
- Ein Google Workspace-Konto mit Zugriff auf Google Chat.
- Eine Chat-App. Folgen Sie dieser Kurzanleitung, um eine Chat-App zu erstellen.
Hinweis:Die Python-Codebeispiele in dieser Anleitung sind für die Ausführung als Google Cloud Functions-Funktion mit Python 3.9 geschrieben.
Apps Script
- Ein Google Workspace-Konto mit Zugriff auf Google Chat.
- Eine Chat-App. Folgen Sie dieser Kurzanleitung, um eine Chat-App zu erstellen.
Aufbau einer Kartennachricht
Jede Karte, ob in Form eines Dialogfelds oder einer Nachricht, ist ein JSON-Objekt der Ressource spaces.messages
in der Google Chat API.
Das JSON-Kartenobjekt besteht aus folgenden Elementen:
- Ein Array namens
cardsV2[]
mit einem oder mehrerenCardWithId
-Objekten. - Ein
cardId
-Objekt, das zur Identifizierung der Karte und zum Umfang innerhalb einer bestimmten Nachricht verwendet wird. (Karten in verschiedenen Nachrichten können dieselbe ID haben.) Ein
card
-Objekt, das aus Folgendem besteht:- Ein
header
-Objekt, das z. B. einen Titel, einen Untertitel und ein Avatarbild angibt. - Ein oder mehrere
section
-Objekte, die jeweils mindestens ein Widget enthalten. - Ein oder mehrere
widget
-Objekte. Jedes Widget ist ein zusammengesetztes Objekt, das Text, Bilder, Schaltflächen und andere Objekttypen darstellen kann.
- Ein
Sehen Sie sich als Beispiel die Objekte header
, section
und widget
in der folgenden Kartennachricht an:
Der folgende Code stellt die JSON-Datei der Kartennachricht dar:
JSON
{
"cardsV2": [
{
"cardId": "unique-card-id",
"card": {
"header": {
"title": "Sasha",
"subtitle": "Software Engineer",
"imageUrl":
"https://developers.google.com/chat/images/quickstart-app-avatar.png",
"imageType": "CIRCLE",
"imageAltText": "Avatar for Sasha",
},
"sections": [
{
"header": "Contact Info",
"collapsible": true,
"uncollapsibleWidgetsCount": 1,
"widgets": [
{
"decoratedText": {
"startIcon": {
"knownIcon": "EMAIL",
},
"text": "sasha@example.com",
}
},
{
"decoratedText": {
"startIcon": {
"knownIcon": "PERSON",
},
"text": "<font color=\"#80e27e\">Online</font>",
},
},
{
"decoratedText": {
"startIcon": {
"knownIcon": "PHONE",
},
"text": "+1 (555) 555-1234",
}
},
{
"buttonList": {
"buttons": [
{
"text": "Share",
"onClick": {
"openLink": {
"url": "https://example.com/share",
}
}
},
{
"text": "Edit",
"onClick": {
"action": {
"function": "goToView",
"parameters": [
{
"key": "viewType",
"value": "EDIT",
}
],
}
}
},
],
}
},
],
},
],
},
}
],
}
Synchrone Kartennachricht erstellen
In diesem Beispiel erstellt ein Nutzer eine Chatnachricht in Chat und die App sendet eine einfache synchrone Kartennachricht mit dem Namen und Avatarbild des Absenders.
In den folgenden Codebeispielen werden die Node.js- und Python-Anwendungen in Google Cloud Functions gehostet. Das Apps Script-Beispiel wird in Google Apps Script gehostet.
Eine vollständige Anleitung zum Erstellen und Bereitstellen einer Chat-App finden Sie unter Chat-App erstellen.
Node.js
Python
Apps Script
Asynchrone Kartennachricht mit der Chat API erstellen
In diesem Beispiel wird asynchron eine Nachricht mit der Chat API erstellt und an einen Gruppenbereich gesendet, dem die Chat App hinzugefügt wird:

Python
- Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen
chat_create_card_message.py
. Fügen Sie den folgenden Code in
chat_create_card_message.py
ein:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Create a Chat message. result = chat.spaces().messages().create( # The space to create the message in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE', # The message to create. body= { 'cardsV2': [{ 'cardId': 'createCardMessage', 'card': { 'header': { 'title': 'A Card Message!', 'subtitle': 'Created with Chat REST API', 'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png', 'imageType': 'CIRCLE' }, 'sections': [ { 'widgets': [ { 'buttonList': { 'buttons': [ { 'text': 'Read the docs!', 'onClick': { 'openLink': { 'url': 'https://developers.google.com/chat' } } } ] } } ] } ] } }] } ).execute() print(result)
Ersetzen Sie im Code
SPACE
durch einen Namen für einen Gruppenbereich, den Sie über die Methodespaces.list()
in der Chat API oder über die URL eines Gruppenbereichs abrufen können.Erstellen Sie in Ihrem Arbeitsverzeichnis das Beispiel und führen Sie es aus:
python3 chat_create_card_message.py
Weitere Informationen zum Arbeiten mit Nachrichten in der Chat API finden Sie unter:
Dialogfeld öffnen
Dialogfelder sind kartenbasierte Schnittstellen mit Fenster, über die Chat-Apps mit Nutzern interagieren können. Apps können sequenzielle Dialogfelder öffnen, um Nutzern dabei zu helfen, mehrstufige Prozesse auszuführen. Apps können Dialogfelder als Reaktion auf einen Schaltflächenklick auf eine Kartennachricht oder als Reaktion auf einen Slash-Befehl öffnen.
Dialogfelder sind für viele Arten von Nutzerinteraktionen nützlich, darunter:
- Informationen von Nutzern erfassen
- Nutzer mit Webdiensten authentifizieren
- Einstellungen für die Chat-App konfigurieren
In diesem Beispiel öffnet eine Chat-App ein Dialogfeld, mit dem ein Nutzer einen neuen Kontakt für sein Adressbuch erstellen kann:
Informationen zum Implementieren von Dialogfeldern finden Sie unter Dialogfelder öffnen.
Kartenformatierung
Es gibt verschiedene Möglichkeiten, die Darstellung von Karten zu formatieren.
Formatierung von Kartentext
Bei Innenkarten unterstützen die meisten Textfelder grundlegende Textformatierungen mithilfe eines kleinen Teils der HTML-Tags.
Die unterstützten Tags und ihr Zweck werden in der folgenden Tabelle aufgeführt:
Format | Beispiel | Gerendertes Ergebnis |
---|---|---|
Fett | "This is <b>bold</b>." |
Das ist fett. |
Kursiv | "This is <i>italics</i>." |
Das ist kursiv. |
Unterstreichen | "This is <u>underline</u>." |
Dies ist Unterstrich. |
Durchstreichen | "This is <s>strikethrough</s>." |
Das ist |
Schriftfarbe | "This is <font color=\"#FF0000\">red font</text>." |
Das ist rote Schriftart. |
Hyperlink | "This is a <a href=\"https://www.google.com\">hyperlink</a>." |
Dies ist ein Hyperlink. |
Uhrzeit | "This is a time format: <time>2023-02-16 15:00</time>." |
Das hat folgendes Format: . |
Zeilenvorschub | "This is the first line. <br> This is a new line. |
Dies ist die erste Zeile. Dies ist eine neue Zeile. |
Der Text einer einfachen Nachricht wird mit einer anderen Markup-Syntax geparst, die für menschliche Nutzer optimiert ist. Weitere Informationen finden Sie unter SMS erstellen.
Integrierte Symbole
Die Widgets DecoratedText
und ButtonList
unterstützen das Element icon
, mit dem eines der integrierten Symbole angegeben wird, die in Google Chat verfügbar sind:
{ . . . "knownIcon": "TRAIN", . . . }
In der folgenden Tabelle sind die integrierten Symbole aufgeführt, die für Kartennachrichten verfügbar sind:
Flugmodus | KURZMARKE | ||
BUS | CAR | ||
UHRZEIT | BESTÄTIGUNG_NUMBER_ICON | ||
DESCRIPTION | Dollar | ||
VERANSTALTUNG | |||
Flüge | flug_fliegen | ||
HOTEL | HOTEL_ROOM_TYPE | ||
EINLADEN | MAP_PIN | ||
MITGLIEDSCHAFT | MEHRERE | ||
PERSON | SMARTPHONE | ||
RESTAURANT_ICON | SHOPPING_WARENKORB | ||
Stern | Geschäft | ||
TICKET | TRAINIEREN | ||
VIDEOKAMERA | VIDEO_PLAY |
Benutzerdefinierte Symbole
Mit den Widgets DecoratedText
und ButtonList
können Sie die integrierten Symbole verwenden oder eigene benutzerdefinierte Symbole definieren. Verwenden Sie das Element iconUrl
wie hier gezeigt, um ein benutzerdefiniertes Symbol anzugeben:
{ . . "iconUrl": "https://developers.google.com/chat/images/quickstart-app-avatar.png" . . }