In diesem Leitfaden werden die verschiedenen Möglichkeiten erläutert, mit denen Google Chat-Apps Nachrichten senden können:
- Senden Sie Text- und Kartennachrichten in Echtzeit, indem Sie auf eine Nutzerinteraktion reagieren.
- Senden Sie Text- und Kartennachrichten asynchron, indem Sie die Methode
create
für die RessourceMessage
aufrufen. - Eine Konversation starten oder beantworten.
- Senden und benennen Sie eine Nachricht.
Die Ressource Message
stellt eine Textnachricht oder eine Kartennachricht in Google Chat dar. Sie können eine Nachricht in der Google Chat API mit create
, get
, update
oder delete
durch Aufrufen der entsprechenden Methoden steuern. Weitere Informationen zu Text- und Kartennachrichten finden Sie in der Übersicht zu Google Chat-Nachrichten.
Anstatt die Methode create
für die Ressource Message
der Google Chat API aufzurufen, um eine Text- oder Kartennachricht asynchron zu senden, können Google Chat-Apps auch Nachrichten erstellen, um in Echtzeit auf Nutzerinteraktionen zu reagieren. Antworten auf Nutzerinteraktionen erfordern keine Authentifizierung und unterstützen andere Arten von Nachrichten, einschließlich interaktiver Dialogfelder und Linkvorschauen. Weitere Informationen finden Sie unter Interaktionen mit der Google Chat-App empfangen und beantworten.
Voraussetzungen
Node.js
- Ein Google Workspace-Konto mit Zugriff auf Google Chat.
- Eine veröffentlichte Chat-App. Folgen Sie dieser quickstart, um eine Chat-App zu erstellen.
- Autorisierung, die für die Chat-App zum Senden asynchroner Nachrichten konfiguriert ist. Zum Senden von Nachrichten in Echtzeit ist keine Autorisierungskonfiguration erforderlich.
- Das Senden einer Textnachricht unterstützt die beiden folgenden Autorisierungsmethoden:
- Nutzerauthentifizierung mit dem Autorisierungsbereich
chat.messages.create
oderchat.messages
. - App-Authentifizierung mit dem Autorisierungsbereich
chat.bot
.
- Nutzerauthentifizierung mit dem Autorisierungsbereich
- Zum Senden einer Kartennachricht ist eine App-Authentifizierung mit dem Autorisierungsbereich
chat.bot
erforderlich.
- Das Senden einer Textnachricht unterstützt die beiden folgenden Autorisierungsmethoden:
Python
- Python 3.6 oder höher
- Das Paketverwaltungstool pip
Die neuesten Google-Clientbibliotheken für Python. Führen Sie den folgenden Befehl über die Befehlszeile aus, um sie zu installieren oder zu aktualisieren:
pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client
Eine veröffentlichte Chat-App. Informationen zum Erstellen und Veröffentlichen einer Chat-App finden Sie unter Google Chat-App erstellen.
Autorisierung, die für die Chat-App zum Senden asynchroner Nachrichten konfiguriert ist. Zum Senden von Nachrichten in Echtzeit ist keine Autorisierungskonfiguration erforderlich.
- Das Senden einer Textnachricht unterstützt die beiden folgenden Autorisierungsmethoden:
- Nutzerauthentifizierung mit dem Autorisierungsbereich
chat.messages.create
oderchat.messages
. - App-Authentifizierung mit dem Autorisierungsbereich
chat.bot
.
- Nutzerauthentifizierung mit dem Autorisierungsbereich
- Zum Senden einer Kartennachricht ist eine App-Authentifizierung mit dem Autorisierungsbereich
chat.bot
erforderlich.
- Das Senden einer Textnachricht unterstützt die beiden folgenden Autorisierungsmethoden:
Apps Script
- Ein Google Workspace-Konto mit Zugriff auf Google Chat.
- Eine veröffentlichte Chat-App. Folgen Sie dieser quickstart, um eine Chat-App zu erstellen.
SMS senden
In diesem Abschnitt werden die beiden folgenden Möglichkeiten zum Senden von Textnachrichten beschrieben:
- Sie senden eine Textnachricht in Echtzeit, indem Sie auf eine Nutzerinteraktion reagieren.
- Senden Sie eine SMS, indem Sie die Google Chat API asynchron aufrufen.
SMS in Echtzeit senden
In diesem Beispiel erstellt und sendet die Chat-Anwendung eine SMS, sobald sie einem Gruppenbereich hinzugefügt wird. Informationen zu Best Practices für das Onboarding von Nutzern finden Sie unter Hilfreiches Onboarding für Nutzer und Gruppenbereiche.
Wenn eine SMS gesendet werden soll, wenn ein Nutzer Ihre Chat-App einem Gruppenbereich hinzufügt, reagiert die Chat-App auf ein Interaktionsereignis ADDED_TO_SPACE
. Verwenden Sie den folgenden Code, um auf ADDED_TO_SPACE
-Interaktionsereignisse mit einer Textnachricht zu antworten:
Node.js
/**
* Sends an onboarding message when the Chat app is added to a space.
*
* @param {Object} event The event object from Chat API.
* @return {Object} Response from the Chat app. An onboarding message that
* introduces the app and helps people get started with it.
*/
exports.onMessage = function onMessage(req, res) {
if (req.method === 'GET' || !req.body.message) {
res.send(
'Hello! This function is meant to be used in a Google Chat space.');
}
// Send an onboarding message when added to a Chat space
if(req.body.type === 'ADDED_TO_SPACE') {
res.json({
'text': 'Hi, Cymbal at your service. I help you manage your calendar
from Google Chat. Take a look at your schedule today by typing
`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To
learn what else I can do, type `/help`.'
});
}
};
Apps Script
/**
* Sends an onboarding message when the Chat app is added to a space.
*
* @param {Object} event The event object from Chat API.
* @return {Object} Response from the Chat app. An onboarding message that
* introduces the app and helps people get started with it.
*/
function onAddToSpace(event) {
return {
'text': 'Hi, Cymbal at your service. I help you manage your calendar
from Google Chat. Take a look at your schedule today by typing
`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To learn
what else I can do, type `/help`.'
}
}
Das Codebeispiel gibt die folgende Textnachricht zurück:
SMS asynchron senden
Im folgenden Abschnitt wird erläutert, wie eine SMS asynchron mit App- und Nutzerauthentifizierung gesendet wird.
Um eine Textnachricht zu senden, übergeben Sie in Ihrer Anfrage Folgendes:
- Geben Sie für die App-Authentifizierung den Autorisierungsbereich
chat.bot
an. Geben Sie für die Nutzerauthentifizierung den Autorisierungsbereichchat.messages.create
an. - Rufen Sie die Methode
create
für die RessourceMessage
auf.
SMS mit App-Authentifizierung senden
So senden Sie eine SMS mit der App-Authentifizierung:
Python
- Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen
chat_create_text_message_app.py
. Fügen Sie den folgenden Code in
chat_create_text_message_app.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( 'credentials.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={'text': 'Hello, world!'} ).execute() print(result)
Ersetzen Sie im Code
SPACE
durch den Namen eines Gruppenbereichs, den Sie über die Methodespaces.list()
in der Chat API oder aus der URL eines Gruppenbereichs abrufen können.Erstellen Sie das Beispiel in Ihrem Arbeitsverzeichnis und führen Sie es aus:
python3 chat_create_text_message_app.py
Die Chat API gibt eine Instanz von Message
zurück, die Details zur gesendeten Nachricht enthält.
SMS mit Nutzerauthentifizierung senden
So senden Sie eine Textnachricht mit der Nutzerauthentifizierung:
Python
- Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen
chat_create_text_message_user.py
. Fügen Sie den folgenden Code in
chat_create_text_message_user.py
ein:import os.path from google.auth.transport.requests import Request from google.oauth2.credentials import Credentials from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.errors import HttpError # Define your app's authorization scopes. # When modifying these scopes, delete the file token.json, if it exists. SCOPES = ["https://www.googleapis.com/auth/chat.messages.create"] def main(): ''' Authenticates with Chat API via user credentials, then creates a text message in a Chat space. ''' # Start with no credentials. creds = None # Authenticate with Google Workspace # and get user authorization. flow = InstalledAppFlow.from_client_secrets_file( 'client_secrets.json', SCOPES) creds = flow.run_local_server() # Build a service endpoint for Chat API. chat = build('chat', 'v1', credentials=creds) # Use the service endpoint to call Chat API. 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={'text': 'Hello, world!'} ).execute() # Prints details about the created membership. print(result) if __name__ == '__main__': main()
Ersetzen Sie im Code
SPACE
durch den Namen eines Gruppenbereichs, den Sie in der Chat API mit der Methodespaces.list()
oder aus der URL eines Gruppenbereichs abrufen können.Erstellen Sie das Beispiel in Ihrem Arbeitsverzeichnis und führen Sie es aus:
python3 chat_create_text_message_user.py
Die Chat API gibt eine Instanz von Message
zurück, die Details zur gesendeten Nachricht enthält.
Kartennachrichten senden
In diesem Abschnitt werden zwei Möglichkeiten zum Senden von Kartennachrichten beschrieben:
- Sie können in Echtzeit eine Kartennachricht senden, indem Sie auf eine Nutzerinteraktion reagieren.
- Senden Sie eine Kartennachricht, indem Sie die Google Chat API asynchron aufrufen.
Eine Kartennachricht in Echtzeit senden
Chat-Apps können Kartennachrichten erstellen, um auf eine Nutzerinteraktion zu antworten, z. B. wenn ein Nutzer der Chat-App eine Nachricht sendet oder die Chat-App einem Gruppenbereich hinzufügt. Weitere Informationen zum Reagieren auf Nutzerinteraktionen finden Sie unter Interaktionsereignisse für Chat-Apps empfangen und beantworten.
In diesem Beispiel sendet ein Nutzer eine Nachricht an eine Chat-App und die Chat-App antwortet mit einer Kartennachricht, die den Namen und das Avatarbild des Nutzers enthält:
Node.js
Python
Apps Script
Eine Kartennachricht asynchron senden
Um eine Kartennachricht zu senden, übergeben Sie in der Anfrage Folgendes:
- Geben Sie für die App-Authentifizierung den Autorisierungsbereich
chat.bot
an. Sie können mit der Nutzerauthentifizierung keine Kartennachricht senden. - Rufen Sie die Methode
create
für die RessourceMessage
auf.
Hier ein Beispiel für eine Kartennachricht:
So senden Sie eine Kartennachricht mit App-Authentifizierung:
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( 'credentials.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 the Chat 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 den Namen eines Gruppenbereichs, den Sie über die Methodespaces.list
in der Chat API oder aus der URL eines Gruppenbereichs abrufen können.Erstellen Sie das Beispiel in Ihrem Arbeitsverzeichnis und führen Sie es aus:
python3 chat_create_card_message.py
Unterhaltung starten oder beantworten
Wenn Sie einen Nachrichten-Thread starten möchten, senden Sie eine Nachricht und lassen Sie thread.name
leer. Google Chat füllt ihn beim Erstellen des Threads. Optional können Sie den Namen des Threads über das Feld thread.threadKey
anpassen.
Wenn Sie auf einen Nachrichten-Thread antworten möchten, senden Sie eine Nachricht, in der das Feld threadKey
oder name
des Threads angegeben ist. Wenn der Thread von einer Person oder einer anderen Chat-App erstellt wurde, müssen Sie das Feld thread.name
verwenden.
Wenn kein übereinstimmender Thread gefunden wird, können Sie mit dem Feld messageReplyOption
angeben, ob eine Nachricht einen neuen Thread starten oder nicht posten soll.
So starten oder beantworten Sie einen Thread, wobei das Feld threadKey
als nameOfThread
definiert ist:
Python
- Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen
chat_create_message_thread.py
. Fügen Sie den folgenden Code in
chat_create_message_thread.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( 'credentials.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', # Whether to start a thread or reply to an existing one. # # Required when threading is enabled in a space unless starting a # thread. Ignored in other space types. Threading is enabled when # space.spaceThreadingState is THREADED_MESSAGES. # # REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD replies to an existing thread # if one exists, otherwise it starts a new one. messageReplyOption='REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD', # The message body. body={ # The message to create. 'text': 'Start or reply to another message in a thread!', # The thread to start or reply to. 'thread': { 'threadKey': 'nameOfThread' } } ).execute() print(result)
Ersetzen Sie im Code
SPACE
durch den Namen eines Gruppenbereichs, den Sie über die Methodespaces.list
in der Chat API oder aus der URL eines Gruppenbereichs abrufen können.Erstellen Sie das Beispiel in Ihrem Arbeitsverzeichnis und führen Sie es aus:
python3 chat_create_message_thread.py
Die Chat API gibt eine Instanz von Message
zurück, die Details zur gesendeten Nachricht enthält.
Nachrichten senden und benennen
In diesem Abschnitt wird erläutert, wie Sie eine Nachricht mit einem benutzerdefinierten Namen senden. Mit Nachrichtennamen können Sie Nachrichten abrufen, aktualisieren oder löschen.
Durch Zuweisen eines benutzerdefinierten Namens kann eine Chat-App die Nachricht außerdem zurückrufen, ohne die Nachricht name
aus dem Antworttext zu speichern, der beim Senden der Nachricht zurückgegeben wird.
Durch die Zuweisung eines benutzerdefinierten Namens wird das generierte Feld name
, also der Ressourcenname der Nachricht, nicht ersetzt. Stattdessen wird der benutzerdefinierte Name als Feld clientAssignedMessageId
festgelegt, auf das Sie bei der Verarbeitung späterer Vorgänge wie dem Aktualisieren oder Löschen der Nachricht verweisen können.
Für benutzerdefinierte Namen gelten die folgenden Anforderungen:
- Beginnen Sie mit
client-
. Beispielsweise istclient-custom-name
ein gültiger benutzerdefinierter Name,custom-name
jedoch nicht. - Er darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.
- Er darf nicht länger als 63 Zeichen sein.
- Wenn Sie beim Senden einer Nachricht einen benutzerdefinierten Namen angeben, wird ein Fehler zurückgegeben. Andere Methoden wie
update
unddelete
funktionieren jedoch wie erwartet.
So senden und benennen Sie eine Nachricht:
Python
- Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen
chat_create_named_message.py
. Fügen Sie den folgenden Code in
chat_create_named_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( 'credentials.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Create a Chat message with a custom name. 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', # Custom name for the message used to facilitate later operations. messageId='client-custom-name', # The message to create. body={'text': 'Hello, world!'} ).execute() print(result)
Ersetzen Sie im Code
SPACE
durch den Namen eines Gruppenbereichs, den Sie über die Methodespaces.list
in der Chat API oder aus der URL eines Gruppenbereichs abrufen können.Erstellen Sie das Beispiel in Ihrem Arbeitsverzeichnis und führen Sie es aus:
python3 chat_create_named_message.py
Die Chat API gibt eine Instanz von Message
zurück, die Details zur gesendeten Nachricht enthält.
Fehlerbehebung
Wenn eine Google Chat-App oder -Karte einen Fehler zurückgibt, wird in der Chat-Oberfläche die Meldung „Ein Fehler ist aufgetreten“ oder „Anfrage kann nicht verarbeitet werden“ angezeigt. Manchmal wird in der Chat-Benutzeroberfläche keine Fehlermeldung angezeigt, die Chat-App oder -Karte aber zu einem unerwarteten Ergebnis führt, z. B. wird keine Kartennachricht angezeigt.
Obwohl eine Fehlermeldung möglicherweise nicht in der Chat-Benutzeroberfläche angezeigt wird, stehen beschreibende Fehlermeldungen und Protokolldaten zur Verfügung, mit denen Sie Fehler beheben können, wenn die Fehlerprotokollierung für Chat-Apps aktiviert ist. Weitere Informationen finden Sie im Hilfeartikel Fehler in Google Chat beheben.
Weitere Informationen
- Nachrichten formatieren
- Details zu Nachrichten abrufen
- Nachrichten in einem Gruppenbereich auflisten
- Nachrichten aktualisieren
- Nachrichten löschen
- Nutzer in Google Chat-Nachrichten identifizieren
- Nachrichten mit eingehenden Webhooks an Google Chat senden