Nachricht über die Google Chat API senden

In diesem Leitfaden wird erläutert, wie Sie die Methode create() für die Ressource Message der Google Chat API verwenden, um Folgendes zu tun:

  • Nachrichten mit Text, Karten und interaktiven Widgets senden
  • Nachrichten privat an einen bestimmten Google Chat-Nutzer senden.
  • Einen Nachrichten-Thread starten oder darauf antworten.
  • Geben Sie einer Nachricht einen Namen, damit Sie sie in anderen Chat API-Anfragen angeben können.

Die maximale Nachrichtengröße (einschließlich Text oder Karten) beträgt 32.000 Byte. Wenn Sie eine Nachricht senden möchten, die diese Größe überschreitet, muss Ihre Chat-App stattdessen mehrere Nachrichten senden.

Chat-Apps können nicht nur die Chat API aufrufen, um Nachrichten zu erstellen, sondern auch Nachrichten erstellen und senden, um auf Nutzerinteraktionen zu antworten. Beispielsweise können sie eine Willkommensnachricht posten, nachdem ein Nutzer die Chat-App einem Gruppenbereich hinzugefügt hat. Wenn Chat-Apps auf Interaktionen reagieren, können sie andere Arten von Messaging-Funktionen verwenden, darunter interaktive Dialoge und Oberflächen für die Linkvorschau. Um einem Nutzer zu antworten, gibt die Chat-App die Nachricht synchron zurück, ohne die Chat API aufzurufen. Informationen zum Senden von Nachrichten als Antwort auf Interaktionen finden Sie unter Interaktionen mit Ihrer Google Chat-App empfangen und beantworten.

Wie in Google Chat Nachrichten angezeigt und zugeordnet werden, die mit der Chat API erstellt wurden

Sie können die Methode create() mit der App-Authentifizierung und der Nutzerauthentifizierung aufrufen. In Google Chat wird der Absender der Nachricht je nach Art der verwendeten Authentifizierung unterschiedlich zugeordnet.

Wenn Sie sich als Chat-App authentifizieren, sendet die Chat-App die Nachricht.

Aufruf der Methode „create()“ mit App-Authentifizierung.
Abbildung 1: Bei der App-Authentifizierung sendet die Chat-App die Nachricht. Um darauf hinzuweisen, dass der Absender keine Person ist, wird in Google Chat neben dem Namen App angezeigt.

Wenn Sie sich als Nutzer authentifizieren, sendet die Chat-App die Nachricht im Namen des Nutzers. In Google Chat wird die Chat-App auch der Nachricht zugeordnet, indem ihr Name angezeigt wird.

Aufruf der Methode „create()“ mit Nutzerauthentifizierung.
Abbildung 2: Bei der Nutzerauthentifizierung sendet der Nutzer die Nachricht und in Google Chat wird der Name der Chat-App neben dem Namen des Nutzers angezeigt.

Der Authentifizierungstyp bestimmt auch, welche Messaging-Funktionen und -Schnittstellen Sie in die Nachricht aufnehmen können. Mit der App-Authentifizierung können Chat-Apps Nachrichten mit formatiertem Text, kartenbasierten Oberflächen und interaktiven Widgets senden. Mit der Nutzerauthentifizierung können Sie Textnachrichten senden oder Nachrichten mit Karten erstellen, wie unter Interaktive Karten erstellen und aktualisieren beschrieben.

Weitere Informationen zu den Messaging-Funktionen der Chat API finden Sie in der Übersicht über Google Chat-Nachrichten.

In diesem Leitfaden wird erläutert, wie Sie mit beiden Authentifizierungstypen eine Nachricht mit der Chat API senden.

Vorbereitung

Node.js

Python

Java

Apps Script

Nachricht als Chat-App senden

In diesem Abschnitt wird beschrieben, wie Sie Nachrichten mit Text, Karten und interaktiven Zubehör-Widgets mithilfe der App-Authentifizierung senden.

Nachricht mit App-Authentifizierung gesendet
Abbildung 4: Eine Chat-App sendet eine Nachricht mit Text, einer Karte und einer Zubehörschaltfläche.

Wenn Sie die Methode CreateMessage() mit App-Authentifizierung aufrufen möchten, müssen Sie in der Anfrage die folgenden Felder angeben:

  • Der Autorisierungsbereich chat.bot.
  • Die Space-Ressource, in der Sie die Nachricht posten möchten. Die Chat-App muss Mitglied des Gruppenbereichs sein.
  • Die zu erstellende Message-Ressource. Um den Inhalt der Nachricht zu definieren, können Sie RTF (text), eine oder mehrere Kartenschnittstellen (cardsV2) oder beides einfügen.

Optional können Sie Folgendes angeben:

Der folgende Code zeigt ein Beispiel dafür, wie eine Chat-App eine Nachricht senden kann, die als Chat-App gepostet wird und Text, eine Karte und einen anklickbaren Button am Ende der Nachricht enthält:

Node.js

chat/client-libraries/cloud/create-message-app-cred.js
import {createClientWithAppCredentials} from './authentication-utils.js';

// This sample shows how to create message with app credential
async function main() {
  // Create a client
  const chatClient = createClientWithAppCredentials();

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here.
    parent: 'spaces/SPACE_NAME',
    message: {
      text:
        '👋🌎 Hello world! I created this message by calling ' +
        "the Chat API's `messages.create()` method.",
      cardsV2: [
        {
          card: {
            header: {
              title: 'About this message',
              imageUrl:
                'https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/info/default/24px.svg',
            },
            sections: [
              {
                header: 'Contents',
                widgets: [
                  {
                    textParagraph: {
                      text:
                        '🔡 <b>Text</b> which can include ' +
                        'hyperlinks 🔗, emojis 😄🎉, and @mentions 🗣️.',
                    },
                  },
                  {
                    textParagraph: {
                      text:
                        '🖼️ A <b>card</b> to display visual elements' +
                        'and request information such as text 🔤, ' +
                        'dates and times 📅, and selections ☑️.',
                    },
                  },
                  {
                    textParagraph: {
                      text:
                        '👉🔘 An <b>accessory widget</b> which adds ' +
                        'a button to the bottom of a message.',
                    },
                  },
                ],
              },
              {
                header: "What's next",
                collapsible: true,
                widgets: [
                  {
                    textParagraph: {
                      text: "❤️ <a href='https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages.reactions/create'>Add a reaction</a>.",
                    },
                  },
                  {
                    textParagraph: {
                      text:
                        "🔄 <a href='https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages/patch'>Update</a> " +
                        "or ❌ <a href='https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages/delete'>delete</a> " +
                        'the message.',
                    },
                  },
                ],
              },
            ],
          },
        },
      ],
      accessoryWidgets: [
        {
          buttonList: {
            buttons: [
              {
                text: 'View documentation',
                icon: {materialIcon: {name: 'link'}},
                onClick: {
                  openLink: {
                    url: 'https://developers.google.com/workspace/chat/create-messages',
                  },
                },
              },
            ],
          },
        },
      ],
    },
  };

  // Make the request
  const response = await chatClient.createMessage(request);

  // Handle the response
  console.log(response);
}

await main();

Python

chat/client-libraries/cloud/create_message_app_cred.py
from authentication_utils import create_client_with_app_credentials
from google.apps import chat_v1 as google_chat

# This sample shows how to create message with app credential
def create_message_with_app_cred():
    # Create a client
    client = create_client_with_app_credentials()

    # Initialize request argument(s)
    request = google_chat.CreateMessageRequest(
        # Replace SPACE_NAME here.
        parent = "spaces/SPACE_NAME",
        message = {
            "text": '👋🌎 Hello world! I created this message by calling ' +
                    'the Chat API\'s `messages.create()` method.',
            "cards_v2" : [{ "card": {
                "header": {
                    "title": 'About this message',
                    "image_url": 'https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/info/default/24px.svg'
                },
                "sections": [{
                    "header": "Contents",
                    "widgets": [{ "text_paragraph": {
                            "text": '🔡 <b>Text</b> which can include ' +
                                    'hyperlinks 🔗, emojis 😄🎉, and @mentions 🗣️.'
                        }}, { "text_paragraph": {
                            "text": '🖼️ A <b>card</b> to display visual elements' +
                                    'and request information such as text 🔤, ' +
                                    'dates and times 📅, and selections ☑️.'
                        }}, { "text_paragraph": {
                            "text": '👉🔘 An <b>accessory widget</b> which adds ' +
                                    'a button to the bottom of a message.'
                        }}
                    ]}, {
                        "header": "What's next",
                        "collapsible": True,
                        "widgets": [{ "text_paragraph": {
                                "text": "❤️ <a href='https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages.reactions/create'>Add a reaction</a>."
                            }}, { "text_paragraph": {
                                "text": "🔄 <a href='https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages/patch'>Update</a> " +
                                        "or ❌ <a href='https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages/delete'>delete</a> " +
                                        "the message."
                            }
                        }]
                    }
                ]
            }}],
            "accessory_widgets": [{ "button_list": { "buttons": [{
                "text": 'View documentation',
                "icon": { "material_icon": { "name": 'link' }},
                "on_click": { "open_link": {
                    "url": 'https://developers.google.com/workspace/chat/create-messages'
                }}
            }]}}]
        }
    )

    # Make the request
    response = client.create_message(request)

    # Handle the response
    print(response)

create_message_with_app_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/CreateMessageAppCred.java
import com.google.apps.card.v1.Button;
import com.google.apps.card.v1.ButtonList;
import com.google.apps.card.v1.Card;
import com.google.apps.card.v1.Icon;
import com.google.apps.card.v1.MaterialIcon;
import com.google.apps.card.v1.OnClick;
import com.google.apps.card.v1.OpenLink;
import com.google.apps.card.v1.TextParagraph;
import com.google.apps.card.v1.Widget;
import com.google.apps.card.v1.Card.CardHeader;
import com.google.apps.card.v1.Card.Section;
import com.google.chat.v1.AccessoryWidget;
import com.google.chat.v1.CardWithId;
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.CreateMessageRequest;
import com.google.chat.v1.Message;

// This sample shows how to create message with app credential.
public class CreateMessageAppCred {

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithAppCredentials()) {
      CreateMessageRequest.Builder request = CreateMessageRequest.newBuilder()
        // Replace SPACE_NAME here.
        .setParent("spaces/SPACE_NAME")
        .setMessage(Message.newBuilder()
          .setText( "👋🌎 Hello world! I created this message by calling " +
                    "the Chat API\'s `messages.create()` method.")
          .addCardsV2(CardWithId.newBuilder().setCard(Card.newBuilder()
            .setHeader(CardHeader.newBuilder()
              .setTitle("About this message")
              .setImageUrl("https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/info/default/24px.svg"))
            .addSections(Section.newBuilder()
              .setHeader("Contents")
              .addWidgets(Widget.newBuilder().setTextParagraph(TextParagraph.newBuilder().setText(
                "🔡 <b>Text</b> which can include " +
                "hyperlinks 🔗, emojis 😄🎉, and @mentions 🗣️.")))
              .addWidgets(Widget.newBuilder().setTextParagraph(TextParagraph.newBuilder().setText(
                "🖼️ A <b>card</b> to display visual elements " +
                "and request information such as text 🔤, " +
                "dates and times 📅, and selections ☑️.")))
              .addWidgets(Widget.newBuilder().setTextParagraph(TextParagraph.newBuilder().setText(
                "👉🔘 An <b>accessory widget</b> which adds " +
                "a button to the bottom of a message."))))
            .addSections(Section.newBuilder()
              .setHeader("What's next")
              .setCollapsible(true)
              .addWidgets(Widget.newBuilder().setTextParagraph(TextParagraph.newBuilder().setText(
                "❤️ <a href='https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages.reactions/create'>Add a reaction</a>.")))
              .addWidgets(Widget.newBuilder().setTextParagraph(TextParagraph.newBuilder().setText(
                "🔄 <a href='https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages/patch'>Update</a> " +
                "or ❌ <a href='https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages/delete'>delete</a> " +
                "the message."))))))
          .addAccessoryWidgets(AccessoryWidget.newBuilder()
            .setButtonList(ButtonList.newBuilder()
              .addButtons(Button.newBuilder()
                .setText("View documentation")
                .setIcon(Icon.newBuilder()
                  .setMaterialIcon(MaterialIcon.newBuilder().setName("link")))
                .setOnClick(OnClick.newBuilder()
                  .setOpenLink(OpenLink.newBuilder()
                    .setUrl("https://developers.google.com/workspace/chat/create-messages")))))));
      Message response = chatServiceClient.createMessage(request.build());

      System.out.println(JsonFormat.printer().print(response));
    }
  }
}

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to create message with app credential
 *
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.bot'
 * used by service accounts.
 */
function createMessageAppCred() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here.
  const parent = "spaces/SPACE_NAME";
  const message = {
    text:
      "👋🌎 Hello world! I created this message by calling " +
      "the Chat API's `messages.create()` method.",
    cardsV2: [
      {
        card: {
          header: {
            title: "About this message",
            imageUrl:
              "https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/info/default/24px.svg",
          },
          sections: [
            {
              header: "Contents",
              widgets: [
                {
                  textParagraph: {
                    text:
                      "🔡 <b>Text</b> which can include " +
                      "hyperlinks 🔗, emojis 😄🎉, and @mentions 🗣️.",
                  },
                },
                {
                  textParagraph: {
                    text:
                      "🖼️ A <b>card</b> to display visual elements" +
                      "and request information such as text 🔤, " +
                      "dates and times 📅, and selections ☑️.",
                  },
                },
                {
                  textParagraph: {
                    text:
                      "👉🔘 An <b>accessory widget</b> which adds " +
                      "a button to the bottom of a message.",
                  },
                },
              ],
            },
            {
              header: "What's next",
              collapsible: true,
              widgets: [
                {
                  textParagraph: {
                    text: "❤️ <a href='https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages.reactions/create'>Add a reaction</a>.",
                  },
                },
                {
                  textParagraph: {
                    text:
                      "🔄 <a href='https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages/patch'>Update</a> " +
                      "or ❌ <a href='https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages/delete'>delete</a> " +
                      "the message.",
                  },
                },
              ],
            },
          ],
        },
      },
    ],
    accessoryWidgets: [
      {
        buttonList: {
          buttons: [
            {
              text: "View documentation",
              icon: { materialIcon: { name: "link" } },
              onClick: {
                openLink: {
                  url: "https://developers.google.com/workspace/chat/create-messages",
                },
              },
            },
          ],
        },
      },
    ],
  };
  const parameters = {};

  // Make the request
  const response = Chat.Spaces.Messages.create(
    message,
    parent,
    parameters,
    getHeaderWithAppCredentials(),
  );

  // Handle the response
  console.log(response);
}

Ersetzen Sie zum Ausführen dieses Beispiels SPACE_NAME durch die ID aus dem Feld name des Space. Sie können die ID abrufen, indem Sie die Methode ListSpaces() aufrufen oder die URL des Space verwenden.

Interaktive Widgets am Ende einer Nachricht hinzufügen

Im ersten Codebeispiel dieses Leitfadens wird in der Nachricht der Chat-App unten ein anklickbarer Button angezeigt, der als Zubehör-Widget bezeichnet wird. Zubehör-Widgets werden nach dem Text oder den Karten in einer Nachricht angezeigt. Mit diesen Widgets können Sie Nutzer auf verschiedene Arten dazu auffordern, mit Ihrer Nachricht zu interagieren, z. B.:

  • Bewerten Sie die Richtigkeit oder Zufriedenheit mit einer Nachricht.
  • Melden Sie ein Problem mit der Nachricht oder der Chat-App.
  • Öffnen Sie einen Link zu weiteren Informationen, z. B. zur Dokumentation.
  • Ähnliche Nachrichten aus der Chat-App für einen bestimmten Zeitraum schließen oder zurückstellen.

Wenn Sie Zubehör-Widgets hinzufügen möchten, fügen Sie das Feld accessoryWidgets[] in den Text Ihrer Anfrage ein und geben Sie ein oder mehrere Widgets an, die Sie hinzufügen möchten.

Die folgende Abbildung zeigt eine Chat-App, die eine Textnachricht mit Zubehör-Widgets ergänzt, damit Nutzer ihre Erfahrungen mit der Chat-App bewerten können.

Zubehör-Widget.
Abbildung 5: Eine Chat-App-Nachricht mit Text und Zubehör-Widgets.

Im Folgenden sehen Sie den Text der Anfrage, mit der eine Textnachricht mit zwei Zubehörschaltflächen erstellt wird. Wenn ein Nutzer auf eine Schaltfläche klickt, wird die Interaktion von der entsprechenden Funktion (z. B. doUpvote) verarbeitet:

{
  text: "Rate your experience with this Chat app.",
  accessoryWidgets: [{ buttonList: { buttons: [{
    icon: { material_icon: {
      name: "thumb_up"
    }},
    color: { red: 0, blue: 255, green: 0 },
    onClick: { action: {
      function: "doUpvote"
    }}
  }, {
    icon: { material_icon: {
      name: "thumb_down"
    }},
    color: { red: 0, blue: 255, green: 0 },
    onClick: { action: {
      function: "doDownvote"
    }}
  }]}}]
}

Private Nachricht senden

Chat-Apps können Nachrichten privat senden, sodass die Nachricht nur für einen bestimmten Nutzer im Gruppenbereich sichtbar ist. Wenn eine Chat-App eine private Nachricht sendet, wird die Nachricht mit einem Label versehen, das den Nutzer darüber informiert, dass die Nachricht nur für ihn sichtbar ist.

Wenn Sie eine private Nachricht über die Chat API senden möchten, geben Sie im Text Ihrer Anfrage das Feld privateMessageViewer an. Wenn Sie den Nutzer angeben möchten, legen Sie den Wert auf die Ressource User fest, die den Chat-Nutzer darstellt. Sie können auch das Feld name der Ressource User verwenden, wie im folgenden Beispiel gezeigt:

{
  text: "Hello private world!",
  privateMessageViewer: {
    name: "users/USER_ID"
  }
}

Wenn Sie dieses Beispiel verwenden möchten, ersetzen Sie USER_ID durch eine eindeutige ID für den Nutzer, z. B. 12345678987654321 oder hao@cymbalgroup.com. Weitere Informationen zum Angeben von Nutzern finden Sie unter Google Chat-Nutzer identifizieren und angeben.

Wenn Sie eine Nachricht privat senden möchten, müssen Sie Folgendes in Ihrer Anfrage weglassen:

Erzwungene Benachrichtigungen oder lautlose Nachrichten senden

Wenn eine Chat-App eine Nachricht sendet, kann sie eine der folgenden Optionen verwenden, um Nutzer zu benachrichtigen:

  • Benachrichtigung erzwingen: Google Chat sendet immer eine Push-Benachrichtigung an die Empfänger, unabhängig von deren Benachrichtigungseinstellungen oder dem Status „Bitte nicht stören“. In Google Chat wird die Nachricht in der Liste der Empfänger oder auf der Startseite fett formatiert und nach oben verschoben. Außerdem wird ein Badge angezeigt.
  • Lautlose Nachricht senden: Google Chat unterdrückt Push-Benachrichtigungen für Empfänger. In Google Chat wird die Nachricht in der Teilnehmerliste oder der Übersicht der Empfänger nicht fett formatiert oder nach oben verschoben und es wird kein Badge angezeigt. Wenn die lautlose Nachricht die letzte Nachricht in einer Unterhaltung ist, wird ihr Inhalt nicht im Snippet auf der Startseite angezeigt.

Unabhängig davon, ob es sich um eine erzwungene oder lautlose Nachricht handelt, enthalten diese Nachrichten einen visuellen Indikator, der die Empfänger über das spezielle Benachrichtigungsverhalten informiert.

Erzwungene Benachrichtigungen und lautlose Nachrichten sind nur für Chat-Apps verfügbar, die die App-Authentifizierung verwenden.

Für erzwungene Benachrichtigungen und lautlose Nachrichten gelten die folgenden Einschränkungen:

  • Externe Nutzer: Erzwungene Benachrichtigungen und lautlose Nachrichten gelten nicht für externe Nutzer (Gäste) in einem Gruppenbereich. Externe Nutzer erhalten Benachrichtigungen gemäß ihren eigenen Einstellungen.
  • Erwähnungen: Bei lautlosen Nachrichten werden keine Erwähnungen von Nutzern unterstützt. Wenn Sie eine Erwähnung in eine lautlose Nachricht einfügen, wird sie als Nur-Text behandelt.
  • Threads: Sie können mit einer lautlosen Nachricht keinen Thread starten oder darauf antworten.
  • Typ des Gruppenbereichs: Erzwungene Benachrichtigungen und lautlose Nachrichten werden in Direktnachrichten oder Gruppenbereichen, die Personen ohne Google Workspace-Konto gehören, nicht unterstützt.
  • E‑Mail-Benachrichtigungen: Lautlose Nachrichten lösen keine E‑Mail-Benachrichtigungen aus. Nachrichten mit erzwungener Benachrichtigung lösen nur dann E-Mail-Benachrichtigungen aus, wenn sie auch eine Erwähnung eines bestimmten Nutzers enthalten.

Wenn Sie eine Benachrichtigung erzwingen oder eine Nachricht ohne Benachrichtigung senden möchten, fügen Sie das Feld createMessageNotificationOptions in Ihre Anfrage ein und legen Sie für notificationType einen der folgenden Werte fest:

Wert Verhalten
NOTIFICATION_TYPE_FORCE_NOTIFY Erzwingt eine Benachrichtigung.
NOTIFICATION_TYPE_SILENT Sendet die Nachricht lautlos.

Das folgende Beispiel zeigt den JSON-Text einer Anfrage zum Senden einer Nachricht mit einer erzwungenen Benachrichtigung:

{
  "text": "Critical update: the server is down!",
  "createMessageNotificationOptions": {
    "notificationType": "NOTIFICATION_TYPE_FORCE_NOTIFY"
  }
}

Nachricht im Namen eines Nutzers senden

In diesem Abschnitt wird erläutert, wie Sie Nachrichten im Namen eines Nutzers mithilfe der Nutzerauthentifizierung senden. Mit der Nutzerauthentifizierung können Sie im Namen eines Nutzers Textnachrichten senden oder Nachrichten mit Karten erstellen. Weitere Informationen zum Senden von Karten im Namen eines Nutzers finden Sie unter Interaktive Karten erstellen und aktualisieren.

Nachricht mit Nutzerauthentifizierung gesendet
Abbildung 3: Eine Chat-App sendet eine Textnachricht im Namen eines Nutzers.

Wenn Sie die Methode CreateMessage() mit Nutzerauthentifizierung aufrufen möchten, müssen Sie die folgenden Felder in der Anfrage angeben:

  • Ein Autorisierungsbereich, der die Nutzerauthentifizierung für diese Methode unterstützt. Im folgenden Beispiel wird der Bereich chat.messages.create verwendet.
  • Die Space-Ressource, in der Sie die Nachricht posten möchten. Der authentifizierte Nutzer muss Mitglied des Gruppenbereichs sein.
  • Die zu erstellende Message-Ressource. Um den Inhalt der Nachricht zu definieren, müssen Sie das Feld text angeben.

Optional können Sie Folgendes angeben:

Der folgende Code zeigt ein Beispiel dafür, wie eine Chat-App im Namen eines authentifizierten Nutzers eine Textnachricht in einem bestimmten Gruppenbereich senden kann:

Node.js

chat/client-libraries/cloud/create-message-user-cred.js
import {createClientWithUserCredentials} from './authentication-utils.js';

const USER_AUTH_OAUTH_SCOPES = [
  'https://www.googleapis.com/auth/chat.messages.create',
];

// This sample shows how to create message with user credential
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(
    USER_AUTH_OAUTH_SCOPES,
  );

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here.
    parent: 'spaces/SPACE_NAME',
    message: {
      text:
        '👋🌎 Hello world!' +
        'Text messages can contain things like:\n\n' +
        '* Hyperlinks 🔗\n' +
        '* Emojis 😄🎉\n' +
        '* Mentions of other Chat users `@` \n\n' +
        'For details, see the ' +
        '<https://developers.google.com/workspace/chat/format-messages' +
        '|Chat API developer documentation>.',
    },
  };

  // Make the request
  const response = await chatClient.createMessage(request);

  // Handle the response
  console.log(response);
}

await main();

Python

chat/client-libraries/cloud/create_message_user_cred.py
from authentication_utils import create_client_with_user_credentials
from google.apps import chat_v1 as google_chat

SCOPES = ["https://www.googleapis.com/auth/chat.messages.create"]

def create_message_with_user_cred():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.CreateMessageRequest(
        # Replace SPACE_NAME here.
        parent = "spaces/SPACE_NAME",
        message = {
            "text": '👋🌎 Hello world!' +
                    'Text messages can contain things like:\n\n' +
                    '* Hyperlinks 🔗\n' +
                    '* Emojis 😄🎉\n' +
                    '* Mentions of other Chat users `@` \n\n' +
                    'For details, see the ' +
                    '<https://developers.google.com/workspace/chat/format-messages' +
                    '|Chat API developer documentation>.'
        }
    )

    # Make the request
    response = client.create_message(request)

    # Handle the response
    print(response)

create_message_with_user_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/CreateMessageUserCred.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.CreateMessageRequest;
import com.google.chat.v1.Message;

// This sample shows how to create message with user credential.
public class CreateMessageUserCred {

  private static final String SCOPE =
    "https://www.googleapis.com/auth/chat.messages.create";

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      CreateMessageRequest.Builder request = CreateMessageRequest.newBuilder()
        // Replace SPACE_NAME here.
        .setParent("spaces/SPACE_NAME")
        .setMessage(Message.newBuilder()
          .setText( "👋🌎 Hello world!" +
                    "Text messages can contain things like:\n\n" +
                    "* Hyperlinks 🔗\n" +
                    "* Emojis 😄🎉\n" +
                    "* Mentions of other Chat users `@` \n\n" +
                    "For details, see the " +
                    "<https://developers.google.com/workspace/chat/format-messages" +
                    "|Chat API developer documentation>."));
      Message response = chatServiceClient.createMessage(request.build());

      System.out.println(JsonFormat.printer().print(response));
    }
  }
}

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to create message with user credential
 *
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.messages.create'
 * referenced in the manifest file (appsscript.json).
 */
function createMessageUserCred() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here.
  const parent = "spaces/SPACE_NAME";
  const message = {
    text:
      "👋🌎 Hello world!" +
      "Text messages can contain things like:\n\n" +
      "* Hyperlinks 🔗\n" +
      "* Emojis 😄🎉\n" +
      "* Mentions of other Chat users `@` \n\n" +
      "For details, see the " +
      "<https://developers.google.com/workspace/chat/format-messages" +
      "|Chat API developer documentation>.",
  };

  // Make the request
  const response = Chat.Spaces.Messages.create(message, parent);

  // Handle the response
  console.log(response);
}

Ersetzen Sie zum Ausführen dieses Beispiels SPACE_NAME durch die ID aus dem Feld name des Space. Sie können die ID abrufen, indem Sie die Methode ListSpaces() aufrufen oder die URL des Space verwenden.

Thread starten oder in einem Thread antworten

In Gruppenbereichen, in denen Threads verwendet werden, können Sie festlegen, ob eine neue Nachricht einen Thread startet oder auf einen vorhandenen Thread antwortet.

Standardmäßig wird für Nachrichten, die Sie mit der Chat API erstellen, ein neuer Thread gestartet. Damit Sie den Thread später leichter identifizieren und darauf antworten können, können Sie in Ihrer Anfrage einen Thread-Schlüssel angeben:

  • Geben Sie im Text der Anfrage das Feld thread.threadKey an.
  • Geben Sie den Abfrageparameter messageReplyOption an, um festzulegen, was passiert, wenn der Schlüssel bereits vorhanden ist.

So erstellen Sie eine Nachricht, die auf einen vorhandenen Thread antwortet:

  • Geben Sie im Text der Anfrage das Feld thread an. Wenn diese Option festgelegt ist, können Sie die von Ihnen erstellte threadKey angeben. Andernfalls müssen Sie die name des Threads verwenden.
  • Geben Sie den Suchparameter messageReplyOption an.

Der folgende Code zeigt ein Beispiel dafür, wie eine Chat-App im Namen eines authentifizierten Nutzers eine Textnachricht senden kann, die einen bestimmten Thread startet oder darauf antwortet. Der Thread wird durch den Schlüssel eines bestimmten Gruppenbereichs identifiziert:

Node.js

chat/client-libraries/cloud/create-message-user-cred-thread-key.js
import {protos} from '@google-apps/chat';
import {createClientWithUserCredentials} from './authentication-utils.js';

const USER_AUTH_OAUTH_SCOPES = [
  'https://www.googleapis.com/auth/chat.messages.create',
];

// This sample shows how to create message with user credential with thread key
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(
    USER_AUTH_OAUTH_SCOPES,
  );

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here.
    parent: 'spaces/SPACE_NAME',
    // Creates the message as a reply to the thread specified by thread_key
    // If it fails, the message starts a new thread instead
    messageReplyOption:
      protos.google.chat.v1.CreateMessageRequest.MessageReplyOption
        .REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD,
    message: {
      text: 'Hello with user credential!',
      thread: {
        // Thread key specifies a thread and is unique to the chat app
        // that sets it
        threadKey: 'THREAD_KEY',
      },
    },
  };

  // Make the request
  const response = await chatClient.createMessage(request);

  // Handle the response
  console.log(response);
}

await main();

Python

chat/client-libraries/cloud/create_message_user_cred_thread_key.py
from authentication_utils import create_client_with_user_credentials
from google.apps import chat_v1 as google_chat

import google.apps.chat_v1.CreateMessageRequest.MessageReplyOption

SCOPES = ["https://www.googleapis.com/auth/chat.messages.create"]

# This sample shows how to create message with user credential with thread key
def create_message_with_user_cred_thread_key():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.CreateMessageRequest(
        # Replace SPACE_NAME here
        parent = "spaces/SPACE_NAME",
        # Creates the message as a reply to the thread specified by thread_key.
        # If it fails, the message starts a new thread instead.
        message_reply_option = MessageReplyOption.REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD,
        message = {
            "text": "Hello with user credential!",
            "thread": {
                # Thread key specifies a thread and is unique to the chat app
                # that sets it.
                "thread_key": "THREAD_KEY"
            }
        }
    )

    # Make the request
    response = client.create_message(request)

    # Handle the response
    print(response)

create_message_with_user_cred_thread_key()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/CreateMessageUserCredThreadKey.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.CreateMessageRequest;
import com.google.chat.v1.CreateMessageRequest.MessageReplyOption;
import com.google.chat.v1.Message;
import com.google.chat.v1.Thread;

// This sample shows how to create message with a thread key with user
// credential.
public class CreateMessageUserCredThreadKey {

  private static final String SCOPE =
    "https://www.googleapis.com/auth/chat.messages.create";

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      CreateMessageRequest.Builder request = CreateMessageRequest.newBuilder()
        // Replace SPACE_NAME here.
        .setParent("spaces/SPACE_NAME")
        // Creates the message as a reply to the thread specified by thread_key.
        // If it fails, the message starts a new thread instead.
        .setMessageReplyOption(
          MessageReplyOption.REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD)
        .setMessage(Message.newBuilder()
          .setText("Hello with user credentials!")
          // Thread key specifies a thread and is unique to the chat app
          // that sets it.
          .setThread(Thread.newBuilder().setThreadKey("THREAD_KEY")));
      Message response = chatServiceClient.createMessage(request.build());

      System.out.println(JsonFormat.printer().print(response));
    }
  }
}

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to create message with user credential with thread key
 *
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.messages.create'
 * referenced in the manifest file (appsscript.json).
 */
function createMessageUserCredThreadKey() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here.
  const parent = "spaces/SPACE_NAME";
  // Creates the message as a reply to the thread specified by thread_key
  // If it fails, the message starts a new thread instead
  const messageReplyOption = "REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD";
  const message = {
    text: "Hello with user credential!",
    thread: {
      // Thread key specifies a thread and is unique to the chat app
      // that sets it
      threadKey: "THREAD_KEY",
    },
  };

  // Make the request
  const response = Chat.Spaces.Messages.create(message, parent, {
    messageReplyOption: messageReplyOption,
  });

  // Handle the response
  console.log(response);
}

Ersetzen Sie Folgendes, um dieses Beispiel auszuführen:

  • THREAD_KEY: ein vorhandener Threadschlüssel im Gruppenbereich oder ein eindeutiger Name für den Thread, um einen neuen Thread zu erstellen.
  • SPACE_NAME: die ID aus dem Feld name des Space. Sie können die ID abrufen, indem Sie die Methode ListSpaces() aufrufen oder die URL des Space verwenden.

Nachricht benennen

Wenn Sie eine Nachricht in zukünftigen API-Aufrufen abrufen oder angeben möchten, können Sie sie benennen, indem Sie das Feld messageId in Ihrer Anfrage festlegen. Wenn Sie Ihre Nachricht benennen, können Sie die Nachricht angeben, ohne die vom System zugewiesene ID aus dem Ressourcennamen der Nachricht (im Feld name dargestellt) speichern zu müssen.

Wenn Sie beispielsweise eine Nachricht mit der Methode get() abrufen möchten, geben Sie mit dem Ressourcennamen an, welche Nachricht abgerufen werden soll. Der Ressourcenname hat das Format spaces/{space}/messages/{message}, wobei {message} die vom System zugewiesene ID oder den benutzerdefinierten Namen darstellt, den Sie beim Erstellen der Nachricht festgelegt haben.

Wenn Sie einer Nachricht einen Namen geben möchten, geben Sie beim Erstellen der Nachricht eine benutzerdefinierte ID im Feld messageId an. Das Feld messageId legt den Wert für das Feld clientAssignedMessageId der Ressource Message fest.

Sie können eine Mitteilung nur beim Erstellen benennen. Sie können eine benutzerdefinierte ID für vorhandene Mitteilungen nicht benennen oder ändern. Die benutzerdefinierte ID muss die folgenden Anforderungen erfüllen:

  • Beginnt mit client-. Beispiel: client-custom-name ist eine gültige benutzerdefinierte ID, custom-name jedoch nicht.
  • Enthält bis zu 63 Zeichen und nur Kleinbuchstaben, Ziffern und Bindestriche.
  • Ist innerhalb eines Space eindeutig. Eine Chat-App kann nicht dieselbe benutzerdefinierte ID für verschiedene Nachrichten verwenden.

Der folgende Code zeigt ein Beispiel dafür, wie eine Chat-App im Namen eines authentifizierten Nutzers eine Textnachricht mit einer ID an einen bestimmten Gruppenbereich senden kann:

Node.js

chat/client-libraries/cloud/create-message-user-cred-message-id.js
import {createClientWithUserCredentials} from './authentication-utils.js';

const USER_AUTH_OAUTH_SCOPES = [
  'https://www.googleapis.com/auth/chat.messages.create',
];

// This sample shows how to create a message with user credentials and a custom
// message id
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(
    USER_AUTH_OAUTH_SCOPES,
  );

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here.
    parent: 'spaces/SPACE_NAME',
    // Message id lets chat apps get, update or delete a message without needing
    // to store the system assigned ID in the message's resource name
    messageId: 'client-MESSAGE-ID',
    message: {text: 'Hello with user credential!'},
  };

  // Make the request
  const response = await chatClient.createMessage(request);

  // Handle the response
  console.log(response);
}

await main();

Python

chat/client-libraries/cloud/create_message_user_cred_message_id.py
from authentication_utils import create_client_with_user_credentials
from google.apps import chat_v1 as google_chat

SCOPES = ["https://www.googleapis.com/auth/chat.messages.create"]

# This sample shows how to create message with user credential with message id
def create_message_with_user_cred_message_id():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.CreateMessageRequest(
        # Replace SPACE_NAME here
        parent = "spaces/SPACE_NAME",
        # Message id let chat apps get, update or delete a message without needing
        # to store the system assigned ID in the message's resource name.
        message_id = "client-MESSAGE-ID",
        message = {
            "text": "Hello with user credential!"
        }
    )

    # Make the request
    response = client.create_message(request)

    # Handle the response
    print(response)

create_message_with_user_cred_message_id()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/CreateMessageUserCredMessageId.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.CreateMessageRequest;
import com.google.chat.v1.Message;

// This sample shows how to create message with message id specified with user
// credential.
public class CreateMessageUserCredMessageId {

  private static final String SCOPE =
    "https://www.googleapis.com/auth/chat.messages.create";

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      CreateMessageRequest.Builder request = CreateMessageRequest.newBuilder()
        // Replace SPACE_NAME here.
        .setParent("spaces/SPACE_NAME")
        .setMessage(Message.newBuilder()
          .setText("Hello with user credentials!"))
        // Message ID lets chat apps get, update or delete a message without
        // needing to store the system assigned ID in the message's resource
        // name.
        .setMessageId("client-MESSAGE-ID");
      Message response = chatServiceClient.createMessage(request.build());

      System.out.println(JsonFormat.printer().print(response));
    }
  }
}

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to create message with user credential with message id
 *
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.messages.create'
 * referenced in the manifest file (appsscript.json).
 */
function createMessageUserCredMessageId() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here.
  const parent = "spaces/SPACE_NAME";
  // Message id lets chat apps get, update or delete a message without needing
  // to store the system assigned ID in the message's resource name
  const messageId = "client-MESSAGE-ID";
  const message = { text: "Hello with user credential!" };

  // Make the request
  const response = Chat.Spaces.Messages.create(message, parent, {
    messageId: messageId,
  });

  // Handle the response
  console.log(response);
}

Ersetzen Sie Folgendes, um dieses Beispiel auszuführen:

  • SPACE_NAME: die ID aus dem Feld name des Space. Sie können die ID abrufen, indem Sie die Methode ListSpaces() aufrufen oder die URL des Space verwenden.
  • MESSAGE-ID: ein Name für die Nachricht, der mit custom- beginnt. Der Name muss sich von allen anderen Nachrichtennamen unterscheiden, die von der Chat-App im angegebenen Gruppenbereich erstellt wurden.

Nachricht zitieren

Sie können eine andere Nachricht zitieren, indem Sie CreateMessage() (rpc, rest) aufrufen und quotedMessageMetadata (rpc, rest) in der Anfrage festlegen.

Sie können Nachrichten innerhalb eines Threads oder im Hauptchat zitieren, aber keine Nachrichten aus einem anderen Thread.

Der folgende Code zeigt, wie Sie eine Nachricht erstellen, die eine andere Nachricht zitiert:

Node.js

import {createClientWithUserCredentials} from './authentication-utils.js';

const USER_AUTH_OAUTH_SCOPES = ['https://www.googleapis.com/auth/chat.messages.create'];

// This sample shows how to create a message that quotes another message.
async function main() {

  // Create a client
  const chatClient = await createClientWithUserCredentials(USER_AUTH_OAUTH_SCOPES);

  // Initialize request argument(s)
  const request = {

    // TODO(developer): Replace SPACE_NAME .
    parent: 'spaces/SPACE_NAME',

    message: {
      text: 'I am responding to a quoted message!',

      // quotedMessageMetadata lets Chat apps respond to a message by quoting it.
      quotedMessageMetadata: {

        // TODO(developer): Replace QUOTED_MESSAGE_NAME
        // and QUOTED_MESSAGE_LAST_UPDATE_TIME.
        name: 'QUOTED_MESSAGE_NAME',
        lastUpdateTime: 'QUOTED_MESSAGE_LAST_UPDATE_TIME'
      }
    }
  };

  // Make the request
  const response = await chatClient.createMessage(request);

  // Handle the response
  console.log(response);
}

main().catch(console.error);

Python

from authentication_utils import create_client_with_user_credentials
from google.apps import chat_v1 as google_chat
from google.protobuf.timestamp_pb2 import Timestamp

SCOPES = ['https://www.googleapis.com/auth/chat.messages.create']

# This sample shows how to create a message that quotes another message.
def create_message_quote_message():
    '''Creates a message that quotes another message.'''

    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Create a timestamp from the RFC-3339 string.
    # TODO(developer): Replace QUOTED_MESSAGE_LAST_UPDATE_TIME.
    last_update_time = Timestamp()
    last_update_time.FromJsonString('QUOTED_MESSAGE_LAST_UPDATE_TIME')

    # Initialize request argument(s)
    request = google_chat.CreateMessageRequest(

        # TODO(developer): Replace SPACE_NAME.
        parent='spaces/SPACE_NAME',

        # Create the message.
        message = google_chat.Message(
            text='I am responding to a quoted message!',

            # quotedMessageMetadata lets Chat apps respond to a message by quoting it.
            quoted_message_metadata=google_chat.QuotedMessageMetadata(

                name='QUOTED_MESSAGE_NAME',
                last_update_time=last_update_time
            )
        )
    )

    # Make the request
    response = client.create_message(request)

    # Handle the response
    print(response)

create_message_quote_message()

Java

import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.CreateMessageRequest;
import com.google.chat.v1.Message;
import com.google.chat.v1.QuotedMessageMetadata;
import com.google.protobuf.util.Timestamps;
import com.google.workspace.api.chat.samples.utils.AuthenticationUtils;
import java.text.ParseException;

// This sample shows how to create a message that quotes another message.
public class CreateMessageQuoteMessage {
  public static void main(String[] args) throws Exception, ParseException {
    // Create a client.
    ChatServiceClient chatClient = AuthenticationUtils.createClientWithUserCredentials();

    // Initialize request argument(s).
    // TODO(developer): Replace SPACE_NAME, QUOTED_MESSAGE_NAME,
    // and QUOTED_MESSAGE_LAST_UPDATE_TIME here.
    String parent = "spaces/SPACE_NAME";
    String quotedMessageName = "QUOTED_MESSAGE_NAME";
    String lastUpdateTime = "QUOTED_MESSAGE_LAST_UPDATE_TIME";

    QuotedMessageMetadata quotedMessageMetadata =
        QuotedMessageMetadata.newBuilder()
            .setName(quotedMessageName)
            .setLastUpdateTime(Timestamps.parse(lastUpdateTime))
            .build();

    Message message = Message.newBuilder()
        .setText("I am responding to a quoted message!")
        .setQuotedMessageMetadata(quotedMessageMetadata)
        .build();

    CreateMessageRequest request =
        CreateMessageRequest.newBuilder()
            .setParent(parent)
            .setMessage(message)
            .build();

    // Make the request.
    Message response = chatClient.createMessage(request);

    // Handle the response.
    System.out.println(response);
  }
}

Apps Script

/**
 * Creates a message that quotes another message.
 *
 * Relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.messages.create'
 * referenced in the manifest file (appsscript.json).
 */
function createMessageQuoteMessage() {

  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here.
  const parent = 'spaces/SPACE_NAME';

  const message = {

    // The text content of the message.
    text: 'I am responding to a quoted message!',

    // quotedMessageMetadata lets Chat apps respond to a message by quoting it.
    //
    // TODO(developer): Replace QUOTED_MESSAGE_NAME
    // and QUOTED_MESSAGE_LAST_UPDATE_TIME .
    quotedMessageMetadata: {
      name: 'QUOTED_MESSAGE_NAME',
      lastUpdateTime: 'QUOTED_MESSAGE_LAST_UPDATE_TIME',
    }
  };

  // Make the request
  const response = Chat.Spaces.Messages.create(message, parent);

  // Handle the response
  console.log(response);
}

Ersetzen Sie Folgendes, um dieses Beispiel auszuführen:

  • SPACE_NAME: die ID aus dem Feld name des Space. Sie können die ID über die Methode ListSpaces() (rpc, rest) oder über die URL des Gruppenbereichs abrufen.
  • QUOTED_MESSAGE_NAME: die Nachrichtenressource name (rpc, rest) der zu zitierenden Nachricht im Format spaces/{space}/messages/{message}.
  • QUOTED_MESSAGE_LAST_UPDATE_TIME: der Zeitpunkt der letzten Aktualisierung der Nachricht, die Sie zitieren möchten. Wenn die Nachricht nie bearbeitet wurde, entspricht sie createTime (rpc, rest). Wenn die Nachricht bearbeitet wurde, entspricht sie lastUpdateTime (rpc, rest).

Fehlerbehebung

Wenn eine Google Chat-App oder Karte einen Fehler zurückgibt, wird in der Chat-Oberfläche die Meldung „Ein Fehler ist aufgetreten“ angezeigt. oder „Ihre Anfrage kann nicht verarbeitet werden.“ Manchmal wird auf der Chat-Benutzeroberfläche keine Fehlermeldung angezeigt, aber die Chat-App oder -Karte liefert ein unerwartetes Ergebnis. Beispielsweise wird eine Kartennachricht möglicherweise nicht angezeigt.

Auch wenn in der Chat-Benutzeroberfläche möglicherweise keine Fehlermeldung angezeigt wird, sind beschreibende Fehlermeldungen und Protokolldaten verfügbar, mit denen Sie Fehler beheben können, wenn das Fehler-Logging für Chat-Apps aktiviert ist. Informationen zum Ansehen, Debuggen und Beheben von Fehlern finden Sie unter Google Chat-Fehler beheben.