Wenn Sie eine Google Chat-App erstellt und veröffentlicht haben, die Google Chat API-Interaktionsereignisse verwendet, z. B. eine App, die auf dem Google Chat-App-Schnellstart basiert, erfahren Sie auf dieser Seite, wie Sie sie in ein Google Workspace-Add‑on umwandeln, das Google Chat erweitert.
Durch die Umstellung kann Ihre Google Chat-App das Google Workspace-Add‑on-Framework verwenden. Dadurch ergeben sich neue Möglichkeiten für die Integration und Funktionen in Google Chat und in Google Workspace. Anstatt zwei Verteilungen – eine Google Chat-App und ein Google Workspace-Add‑on – können Sie ein einzelnes Google Workspace-Add‑on über den Google Workspace Marketplace verteilen, das Chat-Apps zusammen mit anderen Google Workspace-Hostanwendungen wie Gmail, Kalender und Docs erweitert.
Beschränkungen
Bevor Sie mit der Konvertierung beginnen, sollten Sie sich die Einschränkungen von Google Workspace-Add‑ons, die Google Chat erweitern ansehen, um sicherzustellen, dass Ihre Google Chat-App konvertiert werden kann, ohne dass wichtige Funktionen verloren gehen.
Schritt 1: Vorhandenen Google Chat-App-Code kopieren
Für die Umstellung sind Codeänderungen erforderlich. Damit Ihre aktive Google Chat App nicht beeinträchtigt wird, sollten Sie eine Kopie Ihres Codes erstellen und daran arbeiten.
Apps Script
- Öffnen Sie Ihr vorhandenes Google Apps Script-Projekt für die Google Chat App.
- Klicken Sie links auf Übersicht .
- Klicken Sie rechts auf Kopie erstellen .
- Klicken Sie links auf Projekteinstellungen .
- Klicken Sie unter Google Cloud-Projekt auf Projekt wechseln.
- Geben Sie dieselbe Projektnummer ein, die mit Ihrem vorhandenen Google Chat-App-Projekt verknüpft ist.
- Klicken Sie auf Projekt festlegen.
HTTP
Erstellen Sie eine Fork oder Kopie Ihrer vorhandenen Codebasis und stellen Sie sie als neuen Dienst bereit, der von Ihrer aktiven Google Chat-App getrennt ist.
Wenn Ihre App in Google Cloud bereitgestellt wird und auf Funktionen angewiesen ist, die mit dem Google Cloud-Projekt verknüpft sind (z. B. die Standardidentität von App Engine), sollte der neue Code für einen Dienst bereitgestellt werden, der mit dem vorhandenen Google Chat-App-Projekt verknüpft ist.
Schritt 2: Kopierten Code ändern
Google Workspace-Add‑ons, die Google Chat erweitern, verwenden andere Anfrage- und Antwortstrukturen als Google Chat-Apps, die mit Chat API-Interaktionsereignissen erstellt wurden. Sie müssen Ihren Code aktualisieren, damit das Google Workspace-Add-on EventObject anstelle der Event der Google Chat API für Anfragen und Antworten verwendet wird.
Verwenden Sie die Anleitung zur Codekonvertierung, um Ihren Code zu ändern.
Schritt 3: Google Workspace-Add‑on-Konfiguration für Testnutzer aktivieren
Konfigurieren Sie die Google Workspace-Add‑on-Einstellungen für Ihre Google Chat-App in der Google Cloud Console:
Rufen Sie in der Google Cloud Console die Konfigurationsseite für die Google Chat API auf.
Klicken Sie unter Interaktive Funktionen auf In Add-on umwandeln.
Aktivieren Sie Einstellungen für die Add-on-Konfiguration aktivieren.
Fügen Sie im Bereich Sichtbarkeit die E‑Mail-Adressen Ihrer Testnutzer hinzu.
Aktualisieren Sie bei Bedarf die Verbindungseinstellungen mit der Bereitstellungsendpunkt-URL oder der Apps Script-Bereitstellungs-ID des kopierten und geänderten Google Chat-App-Codes aus Schritt 2.
Klicken Sie auf Speichern und testen.
Schritt 4: Konvertierte App testen
Testen Sie die Funktionen des Google Workspace-Add-ons gründlich mit den in Schritt 3 konfigurierten Testnutzerkonten. Prüfen Sie alle Funktionen und Interaktionen.
Schritt 5: Umstellung für alle Nutzer abschließen
Nachdem Sie überprüft haben, ob das konvertierte Google Workspace-Add-on richtig funktioniert, können Sie es allen Nutzern zur Verfügung stellen.
Rufen Sie in der Google Cloud Console die Konfigurationsseite für die Google Chat API auf.
Klicken Sie unter Interaktive Funktionen auf In Add-on umwandeln. Eine Seitenleiste wird geöffnet.
Klicken Sie in der Seitenleiste auf In Add-on umwandeln.
Geben Sie Ihre Projekt-ID ein und klicken Sie auf Konvertieren.
Ihre Google Chat-App ist jetzt ein Google Workspace-Add‑on, das Google Chat erweitert.
Optional: Nicht verwendete Google Cloud-Ressourcen bereinigen oder freigeben
Nachdem Sie Ihre Google Chat-App in ein Google Workspace-Add-on umgewandelt haben, können Sie die Ressourcen, die von der Google Chat-App verwendet werden und nicht mehr in Gebrauch sind, deaktivieren, um zu vermeiden, dass Ihrem Google Cloud-Konto dafür Gebühren berechnet werden.
Leitfaden zur Codekonvertierung
In diesem Abschnitt wird die Zuordnung zwischen dem Event-Format der Google Chat API-Interaktion und dem EventObject-Format des Google Workspace-Add-ons beschrieben.
Zuordnung anfordern
In der folgenden Tabelle sehen Sie, wie Felder in der Google Chat API Event den entsprechenden Feldern im Google Workspace-Add-on EventObject zugeordnet werden.
Feld „Google Chat API-Interaktion“ Event |
Feld „Google Workspace-Add-on“ EventObject |
Hinweise |
|---|---|---|
action.actionMethodName |
– | Bei Karteninteraktionen kann der Methodenname als Parameter in commonEventObject.parameters übergeben werden. Weitere Informationen finden Sie unter Ersten Dialog öffnen. |
action.parameters |
commonEventObject.parameters |
|
appCommandMetadata |
chat.appCommandPayload.appCommandMetadata |
|
common |
commonEventObject |
|
configCompleteRedirectUrl |
|
Je nach Ereignistyp in verschiedenen Nutzlasten verfügbar. |
dialogEventType |
|
Je nach Ereignistyp in verschiedenen Nutzlasten verfügbar. |
eventTime |
chat.eventTime |
|
isDialogEvent |
|
Je nach Ereignistyp in verschiedenen Nutzlasten verfügbar. |
message |
|
Je nach Ereignistyp in verschiedenen Nutzlasten verfügbar. |
space |
|
|
thread |
|
Je nach Ereignistyp in verschiedenen Nutzlasten verfügbar. |
threadKey |
|
Je nach Ereignistyp in verschiedenen Nutzlasten verfügbar. |
token |
– | Die Bestätigung erfolgt anders. Weitere Informationen finden Sie unter Bestätigung für HTTP-Apps anfordern. |
type |
– | Der Ereignistyp kann aus dem Trigger abgeleitet werden. |
user |
chat.user |
Anforderungszuordnung nach Anwendungsfall
Die folgende Tabelle zeigt die Unterschiede bei den Anfrage-Nutzlasten für häufige Anwendungsfälle zwischen Google Chat-Apps, die mit Chat API-Interaktionsereignissen erstellt wurden, und Google Workspace-Add-ons, die Google Chat erweitern.
| Anwendungsfall | Chat API-Interaktion Event Nutzlast |
Nutzlast für Google Workspace-Add-on EventObject |
|---|---|---|
| App zum Gruppenbereich hinzugefügt | { "type": "ADDED_TO_SPACE", "space": { ... } } |
{ "chat": { "addedToSpacePayload": { "space": { ... } } } } |
| App aus Gruppenbereich entfernen | { "type": "REMOVED_FROM_SPACE", "space": { ... } } |
{ "chat": { "removedFromSpacePayload": { "space": { ... } } } } |
| Nutzer erwähnt eine App mit @ | { "type": "MESSAGE", "message": { ... }, "space": { ... }, "configCompleteRedirectUrl": "..." } |
{ "chat": { "messagePayload": { "message": { ... }, "space": { ... }, "configCompleteRedirectUri": "..." } } } |
| Nutzer erwähnt eine App mit „@“, um sie dem Gruppenbereich hinzuzufügen | Sie müssen eine Anfrage von Google Chat bearbeiten:{ "type": "ADDED_TO_SPACE", "space": { ... }, "message": { ... } } |
Sie müssen zwei Anfragen von Google Chat bearbeiten. Erste Anfrage: { "chat": { "addedToSpacePayload": { "space": { ... }, "interactionAdd": true } } } Zweite Anfrage: { "chat": { "messagePayload": { "message": { ... }, "space": { ... } } } } |
| Slash-Befehl | { "type": "MESSAGE", "message": { "slashCommand": { ... } }, "space": { ... } } |
{ "chat": { "appCommandPayload": { "message": { ... }, "space": { ... }, "appCommandMetadata": { ... } } } } |
| Slash-Befehl zum Hinzufügen einer App zum Gruppenbereich | Sie müssen eine Anfrage von Google Chat bearbeiten:{ "type": "ADDED_TO_SPACE", "space": { ... }, "message": { "slashCommand": { ... } } } |
Sie müssen zwei Anfragen von Google Chat bearbeiten. Erste Anfrage: { "chat": { "addedToSpacePayload": { "space": { ... }, "interactionAdd": true } } } Zweite Anfrage: { "chat": { "appCommandPayload": { "message": { ... }, "space": { ... }, "appCommandMetadata": { ... } } } } |
| Nutzer klickt auf eine Schaltfläche auf einer Karte oder in einem Dialogfeld | { "type": "CARD_CLICKED", "common": { ... }, "space": { ... }, "message": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } Bei Dialogereignissen enthält { "type": "CARD_CLICKED", "common": { "formInputs": { "contactName": { "": { "stringInputs": { "value": ["Kai 0"] }} } } }, "space": { ... }, "message": { ... }, "isDialogEvent": true, "dialogEventType": "..." } |
{ "commonEventObject": { ... }, "chat": { "buttonClickedPayload": { "message": { ... }, "space": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } } } Bei Dialogereignissen enthält { "commonEventObject": { "formInputs": { "contactName": { "stringInputs": { "value": ["Kai 0"] } } } }, "chat": { "buttonClickedPayload": { "message": { ... }, "space": { ... }, "isDialogEvent": "true", "dialogEventType": "..." } } } |
| Nutzer gibt Informationen auf einer App-Startseite ein | { "type": "SUBMIT_FORM", "common": { ... }, "space": { ... }, "message": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } |
{ "commonEventObject": { ... }, "chat": { "buttonClickedPayload": { "message": { ... }, "space": { ... }, "isDialogEvent": "...", "dialogEventType": "SUBMIT_DIALOG" } } } |
| Der Nutzer ruft einen App-Befehl mit einem Schnellbefehl auf. | { "type": "APP_COMMAND", "space": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } |
{ "chat": { "appCommandPayload": { "message": { ... }, "space": { ... }, "appCommandMetadata": { ... } } } } |
| Linkvorschau | { "type": "MESSAGE", "message": { "matchedUrl": "..." }, "space": { ... } } |
{ "chat": { "messagePayload": { "message": { "matchedUrl": "..." }, "space": { ... } } } } |
| Nutzer aktualisiert ein Widget in einer Kartenmitteilung oder einem Dialogfeld | { "type": "WIDGET_UPDATED", "space": { ... }, "common": { ... } } |
{ "commonEventObject": { ... }, "chat": { "widgetUpdatedPayload": { "space": { ... } } } } |
Antwortzuordnung nach Anwendungsfall
Google Workspace-Add‑ons, die Google Chat erweitern, geben Aktionen anstelle eines Message-Objekts zurück. In der folgenden Tabelle werden die Message-Antworttypen der Google Chat API den entsprechenden Google Workspace-Add‑on-Aktionen zugeordnet.
| Anwendungsfall | Google Chat API Message-Antwort |
Antwort auf die Google Workspace-Add-on-Chat-Aktion |
|---|---|---|
| Nachricht im aufgerufenen Gruppenbereich erstellen | { "actionResponse": { "type": "NEW_MESSAGE" }, "text": "..." }
|
{ "hostAppDataAction": { "chatDataAction": { "createMessageAction": { "message": { "text": "..." } } } } } |
| Nachricht aktualisieren | { "actionResponse": { "type": "UPDATE_MESSAGE" }, "text": "..." } |
{ "hostAppDataAction": { "chatDataAction": { "updateMessageAction": { "message": { "text": "..." } } } } } |
| Linkvorschau | { "actionResponse": { "type": "UPDATE_USER_MESSAGE_CARDS" }, "cardsV2": [{ ... }] } |
{ "hostAppDataAction": { "chatDataAction": { "updateInlinePreviewAction": { "cardsV2": [{ ... }] } } } } |
| Erstes Dialogfeld öffnen | { "actionResponse": { "type": "DIALOG", "dialogAction": { "dialog": { "body": { /* Card object */ } } } } } |
{ "action": { "navigations": [{ "pushCard": { /* Card object */ } }] } } Die Karte, die Sie pushen, kann Widgets mit onClick-Aktionen enthalten. Konfigurieren Sie für HTTP-Google Workspace-Add-ons diese Aktionen, um einen Funktionsendpunkt aufzurufen: { "onClick": { "action": { "function": "https://...", "parameters": [{ "key": "clickedButton", "value": "submit" }] } } } Weitere Informationen finden Sie unter Dialogfeld öffnen (Add-ons). |
| Dialogfeld schließen | { "actionResponse": { "type": "DIALOG", "dialogAction": { "actionStatus": { "userFacingMessage": "..." } } } } |
{ "action": { "navigations": [{ "endNavigation": "CLOSE_DIALOG" }], "notification": { "text": "..."} } } Weitere Informationen finden Sie unter Dialogfeld schließen (Add-ons). |
| Verbindung zu einem externen System herstellen (Konfiguration anfordern) | { "actionResponse": { "type": "REQUEST_CONFIG", "url": "..." } } Weitere Informationen finden Sie unter Verbindung zu einem externen System herstellen. |
{ "basic_authorization_prompt": { "authorization_url": "...", "resource": "..." } } Weitere Informationen finden Sie unter Google Workspace-Add‑on mit einem Drittanbieterdienst verbinden. |
| Elemente in interaktiven Widgets automatisch vervollständigen | { "actionResponse": { "type": "UPDATE_WIDGET", "updatedWidget": { "suggestions": { "items": ["..."] }, "widget": "widget_id" } } } Weitere Informationen finden Sie unter Mehrfachauswahlmenü hinzufügen. |
{ "action": { "modifyOperations": [{ "updateWidget": { "widgetId": "widget_id", "selectionInputWidgetSuggestions": { "suggestions": ["..."] } } }] } } |
Karteninteraktionen für Nachrichten verarbeiten, die vor der Conversion erstellt wurden
Wenn Sie eine HTTP-Google Chat-App in ein Google Workspace-Add‑on umwandeln, müssen Karteninteraktionen in Nachrichten, die vor der Umwandlung erstellt wurden, speziell behandelt werden. Google Workspace-Add‑ons verwenden eine vollständige HTTP-URL für die action.function einer Karte, während Google Chat-Apps, die mit Google Chat API-Interaktionsereignissen erstellt wurden, einen Funktionsnamen verwenden. In der folgenden Tabelle sind diese Unterschiede zusammengefasst.
| Google Chat-App, die mit Interaktionsereignissen der Google Chat API erstellt wurde | Google Workspace-Add‑on, das Google Chat erweitert | |
|---|---|---|
| Configuration | Sie konfigurieren einen einzelnen Endpunkt für alle Ereignisse in der Google Cloud Console. Bei der Implementierung von Karteninteraktionen enthält das action einer Karte nur den Namen der auszuführenden Funktion. Der gemeinsame HTTP-Endpunkt wird für Kartenklickereignisse aufgerufen.
{ "onClick": { "action": { "function": "submit" } } } |
Sie können optional Endpunkte pro Ereignis in der Google Cloud Console konfigurieren. Das gilt jedoch nicht für Ereignisse, die durch Klicken auf Karten ausgelöst werden. Bei der Implementierung von Karteninteraktionen muss das action einer Karte die vollständige URL des aufzurufenden HTTP-Endpunkts enthalten. Sie können für jede Schaltfläche einen eindeutigen HTTP-Endpunkt festlegen oder einen gemeinsamen Endpunkt verwenden und die Aktion als Parameter in action.parameters übergeben.
Weitere Informationen finden Sie unter Dialogfeld öffnen (Add-ons). { "onClick": { "action": { "function": "https://...", "parameters": [{ "key": "method", "value": "submit" }] } } } |
Damit Karteninteraktionen für Nachrichten, die vor der Umstellung erstellt wurden, funktionieren, konfigurieren Sie auf der Konfigurationsseite der Google Chat API eine URL für Karteninteraktionen.
Diese URL wird nur für Interaktionen mit Mitteilungen verwendet, die vor der Umstellung Ihrer App erstellt wurden. Wenn ein Nutzer mit einer dieser Mitteilungen interagiert, wird der ursprüngliche action.function-Wert als Parameter mit dem Namen __action_method_name__ übergeben.
Beispiel: Klick auf Infokarte
Wenn Sie die URL für Karteninteraktion als https://.../card-interaction-handler konfiguriert haben und ein Nutzer auf eine Karte in einer alten Nachricht klickt, die folgende Aktion auslöst:
{
"onClick": {
"action": {
"function": "submit"
}
}
}
Ein Ereignis wird im folgenden Format an die konfigurierte Card Interaction URL gesendet:
{
"commonEventObject": {
"parameters": {
"__action_method_name__": "submit"
}
},
"chat": {
"buttonClickedPayload": { ... }
}
}
Beispiel: Mehrfachauswahl-Menü
Wenn ein Nutzer mit einem Mehrfachauswahlmenü mit einer externen Datenquelle interagiert:
{
"selectionInput": {
"name": "contacts",
"type": "MULTI_SELECT",
"externalDataSource": {
"function": "getContacts"
}
}
}
Ein Ereignis wird im folgenden Format an die konfigurierte Card Interaction URL gesendet:
{
"commonEventObject": {
"parameters": {
"__action_method_name__": "getContacts",
}
},
"chat": {
"widgetUpdatedPayload": { ... }
}
}
Wenn Sie für Ihre HTTP-Trigger die Option Gemeinsame HTTP-Endpunkt-URL für alle Trigger verwenden aktivieren, wird die gemeinsame URL auch für Button Clicked-Ereignisse verwendet.
Anfragen für HTTP-Add‑ons für Google Workspace bestätigen, die Chat erweitern
Bei HTTP-basierten Google Chat-Apps muss die Logik zum Bestätigen, dass Anfragen von Google stammen, bei der Umstellung auf ein Google Workspace-Add‑on aktualisiert werden.
- Google Chat API-Interaktionsereignis – HTTP-Überprüfung von Google Chat-Apps: Anfragen von Google Chat überprüfen
- Google Workspace-Add‑on – HTTP-Bestätigung: Anfragen von Google bestätigen
Die wichtigsten Unterschiede bei der Anfragenbestätigung sind:
| App-Typ | Unterstützte Zielgruppe | E-Mail-Adresse des Dienstkontos |
|---|---|---|
| Google Chat-App, die mit Interaktionsereignissen der Google Chat API erstellt wurde | Projektnummer | chat@system.gserviceaccount.com |
| Google Workspace-Add‑on zur Erweiterung von Google Chat | Nur HTTP-Endpunkt | E-Mail-Adresse des Dienstkontos pro Projekt |
Die eindeutige E-Mail-Adresse des Dienstkontos für Ihr Google Workspace-Add‑on finden Sie in der Google Cloud Console auf der Seite zur Google Chat API-Konfiguration im Abschnitt In Google Workspace-Add‑ons umwandeln.
So bestätigen Sie Anfragen in Ihrem aktualisierten Google Workspace-Add‑on:
- Wenn Sie Cloud Run-Funktionen verwenden, weisen Sie dem Dienstkonto des Add-ons die Rolle
roles/cloudfunctions.invokerzu. Weitere Informationen finden Sie unter Zugriff mit IAM autorisieren. - Aktualisieren Sie den Token-Bestätigungscode, damit die Signatur des Inhabertokens mit der E-Mail-Adresse des Google Workspace-Add-on-Dienstkontos bestätigt wird. Weitere Informationen finden Sie unter Anfragen von Google validieren.