1. Hinweis
Was sind Google Chat-Apps mit Gemini?
Google Chat-Apps mit Gemini bieten folgende Funktionen:
- Sie können Ihre Dienste und Ressourcen in Google Chat einbinden, damit Nutzer Informationen abrufen und Aktionen ausführen können, ohne die Unterhaltung zu verlassen.
- Integration in das generative KI‑Modell Gemini, damit Daten wie Text oder Bilder zu bestimmten Zeiten erstellt oder gesucht werden können, um Ihre Workflows zu optimieren.
Warum Google Chat-Apps in Gemini integrieren?
Die typischen Anwendungsfälle von Modellen für generative KI wie Gemini fallen in die folgenden Kategorien:
- Erstellung und Optimierung von Inhalten Marketingtexte generieren, Beiträge für soziale Medien erstellen, realistische Bilder erstellen, Musik komponieren oder bei der Erstellung von Videoinhalten helfen.
- Datensuche: Wichtige Informationen aus einer unstrukturierten Wissensdatenbank extrahieren, lange Texte zusammenfassen, Inhalte klassifizieren oder Sprachen mit erhöhter Genauigkeit und Geschwindigkeit übersetzen
- Unterhaltung Natürliche, informative und kreative Unterhaltungen führen
Die Möglichkeit, diese Funktionen direkt in die vertraute Oberfläche von Google Chat zu integrieren, ist eine große Chance für alle, die die Nutzerfreundlichkeit und Produktivität ihrer Nutzer verbessern möchten.
Voraussetzungen
- Grundkenntnisse in Apps Script, Google Cloud und Node.js.
- Grundkenntnisse der Google Chat-Konzepte, einschließlich Ereignishandler, Slash-Befehle, Dialogfelder, Karten, Nachrichten, App-Authentifizierung und APIs.
Was Sie erstellen
In diesem Codelab erstellen Sie drei Google Chat-Apps mit Gemini, um die drei Anwendungsfälle abzudecken, die im vorherigen Abschnitt vorgestellt wurden.
App zur Problemverwaltung (Erstellung und Optimierung von Inhalten)
Diese App bietet folgende Funktionen:
- Verwaltet Probleme von der Erstellung bis zum Schließen mit grundlegenden Interaktionen, der App-Startseite und der App-Authentifizierung.
- Überwacht Nachrichten und bietet Hilfe zur Inklusion bei Ereignis- und Zubehör-Widgets.
Sie verwenden Gemini für Folgendes:
- Problemberichte basierend auf dem Nachrichtenverlauf und den Problemdetails erstellen
- Nicht inklusive Wörter in Nachrichten mit eingeschränkten Prompts klassifizieren
Die wichtigsten verwendeten Technologien sind Vertex AI, Gemini, Apps Script und Google Workspace-APIs (Admin, Chat, Docs, Events).



Wissens-App (Datensuche)
Diese App nutzt Gemini, um Fragen in natürlicher Sprache zu verstehen und zu beantworten und um Quellenverweise aus unstrukturierten Daten zurückzugeben.
Die wichtigsten verwendeten Technologien sind der Dialogflow CX-Datenspeicher-Agent, der Dialogflow CX-Webhook, Google Cloud Functions und Gemini.

Feedback-App (Unterhaltung)
Diese App nutzt Gemini, um Rezensionen mit Unterhaltungen in natürlicher Sprache zu erfassen und zu speichern.
Die wichtigsten verwendeten Technologien sind Dialogflow CX-Agent, Dialogflow CX-Tool, OpenAPI, Google Cloud Functions und Gemini.

Lerninhalte
- Google Chat-Apps über Vertex AI in Gemini einbinden
- Google Chat-Apps in Dialogflow CX-Agents einbinden
- So nutzen Sie die neuesten Funktionen von Google Chat: App-Startseite, Google Chat-Ereignisse und Zubehör-Widgets.
Voraussetzungen
- Sie haben die Kurzanleitung zum Erstellen einer Google Chat-App mit Apps Script durchgearbeitet. Dieses Codelab baut auf dem resultierenden Apps Script- und Google Cloud-Projekt auf.
2. Einrichten
Ressourcen initialisieren
In diesem Abschnitt greifen Sie über Ihren bevorzugten Webbrowser auf die folgenden Ressourcen zu und konfigurieren sie.
Apps Script-Projekt
Führen Sie in der Apps Script Console die folgenden Schritte aus:
- Klicken Sie auf Einstellungen und aktivieren Sie die Google Apps Script API.

- Wählen Sie Ihr Projekt aus.
- Klicken Sie auf Projekteinstellungen.
- Aktivieren Sie das Kästchen Manifestdatei „
appsscript.json“ im Editor anzeigen. - Benennen Sie das Projekt in
Chat Apps Geminium.

Google Cloud-Projekt
Gehen Sie in der Google Cloud Console so vor:
- Wählen Sie Ihr Projekt aus.
- Klicken Sie auf Menü ☰ > APIs & Dienste > OAuth-Zustimmungsbildschirm > App bearbeiten und legen Sie dann App-Name auf
Chat Apps Geminifest.
- Rufen Sie die Google Chat API-Konfiguration auf und legen Sie App-Name und Beschreibung auf
Chat Apps Geminifest.

Google Chat
Gehen Sie in Google Chat so vor:
- Starten Sie bei Bedarf einen Chat in der Google Chat App.
- Senden Sie eine Nachricht, z. B.
Hello, um zu prüfen, ob es funktioniert.

Quellcode und Ressourcen lokal herunterladen
- Laden Sie dieses GitHub-Repository herunter.
- Öffnen Sie in Ihrer bevorzugten Entwicklungsumgebung das Verzeichnis
apps-scriptund rufen Sie dann dasselbe Verzeichnis in Ihrem Terminal auf.

clasp installieren und konfigurieren
Wir verwenden clasp, um Versionen des Quellcodes einfach von der lokalen Umgebung in das Apps Script-Projekt zu bearbeiten und zu übertragen.
- Installieren Sie in Ihrer lokalen Umgebung die neuesten Versionen von
node,npmundclasp.
npm install -g @google/clasp
- Melden Sie sich mit Ihrem Konto an:
clasp login

Wenn der Vorgang erfolgreich war, wird in Ihrem Webbrowser ein Bestätigungsbildschirm angezeigt und die Datei .clasprc.json mit Ihren Clientanmeldedaten wird aktualisiert. Sie können den Speicherort im Terminal herausfinden.

3. App 1: Build
Konzepte ansehen
Vertex AI
Vertex AI bietet alles, was Sie zum Erstellen und Verwenden von generativer KI benötigen, einschließlich KI-Lösungen, Agent Builder, mehr als 130 Foundation Models und einer einheitlichen KI-Plattform.

Gemini
Gemini ist ein multimodales LLM von Google, auf das über Vertex AI zugegriffen werden kann. Sie hilft Menschen, ihr volles Potenzial zu entfalten, ihre Fantasie anzuregen, ihre Neugier zu wecken und ihre Produktivität zu steigern.
Erweiterter Chat-Dienst
Mit dem erweiterten Chat-Dienst können Sie die Google Chat API in Apps Script verwenden. So können Skripts Chatbereiche finden, erstellen und ändern, Mitgliedern Bereiche hinzufügen oder sie daraus entfernen und Nachrichten mit Text, Karten, Anhängen und Reaktionen lesen oder posten.
Architektur prüfen

Diese Google Chat-App wurde mit Apps Script erstellt. Das funktioniert so:
- Ein Nutzer sendet eine Nachricht an die App, entweder in einer Direktnachricht oder in einem Gruppenbereich.
- Die App, die in einem Apps Script-Projekt implementiert ist und mit einem Google Cloud-Projekt verknüpft ist, verarbeitet die Nachricht.
- Die App wird in die Google Docs- und Google Chat-APIs eingebunden.
- Die App verwendet den Properties-Dienst, um Daten in Skripteigenschaften zu speichern.
- Die App sendet eine synchrone Antwort, entweder in einer Direktnachricht oder im ursprünglichen Gruppenbereich.
Abläufe für Rezensionen
Problem erstellen

Probleme in einem dedizierten Bereich beheben

Problem über den dedizierten Bereich schließen

Quellcode prüfen
Das Apps Script-Projekt enthält die folgenden Scripts:
Configuration: Konstanten, die je nach Umgebung bearbeitet werden müssen.ChatApp: Verarbeitet Google Chat-Interaktionsereignisse, einschließlich Nachrichten, Kartentipps, Slash-Befehle und Dialogfelder.Storage: Hilfsfunktionen, die auf Properties Services basieren.ChatAppAuth: Hilfsfunktionen, die auf der Authentifizierung von Google Chat-Apps basieren.Docs: Hilfsfunktionen, die auf Google Docs basieren.VertexAi: Hilfsfunktionen, die auf Vertex AI basieren.
Die folgenden Teile werden aktiv verwendet, wenn Berichte mit Gemini und Chatbereichsverläufen erstellt werden:
appsscript.json
// Enables the Admin SDK Directory and Chat services, which you need to retrieve
// messages and usernames.
"enabledAdvancedServices": [
...
{
"userSymbol": "AdminDirectory",
"version": "directory_v1",
"serviceId": "admin"
},
{
"userSymbol": "Chat",
"version": "v1",
"serviceId": "chat"
}
...
]
// Includes the OAuth scopes to request the Admin SDK Directory, Google Chat,
// Google Docs, and Vertex AI APIs.
"oauthScopes": [
...
"https://www.googleapis.com/auth/admin.directory.user.readonly",
"https://www.googleapis.com/auth/chat.messages.readonly",
"https://www.googleapis.com/auth/documents",
"https://www.googleapis.com/auth/cloud-platform",
...
]
Configuration.js
// Relies on two constants: the first one is the Google Cloud project ID and the
// second one is the Vertex AI location to be used.
...
const PROJECT_ID = 'replace-with-gcp-project-id';
const VERTEX_AI_LOCATION_ID = 'us-central1';
...
ChatApp.js
// The slash command process function retrieves history, generates content, and passes
// it to the report generator.
function processSlashCommand(event) {
...
if (event.message.slashCommand.commandId == CLOSE_COMMAND_ID
&& event.message.space.type !== "DM") {
...
const history = exportSpaceHistory(spaceId);
const summary = summarizeSpace(history);
const docUrl = createReport(
issue.title, issue.description, resolution, history, summary
);
...
}
...
}
/**
* Fetches and concatenates the 100 first space messages by using the Google Chat API.
*
* Messages with slash commands are filtered (app command invocations).
*
* @return {string} concatenate space messages in the format "Sender's name: Message"
*/
function exportSpaceHistory(spaceName) {
const messages = Chat.Spaces.Messages.list(spaceName, { 'pageSize': 100 }).messages;
// Returns results after fetching message sender display names.
let users = new Map();
return messages
.filter(message => message.slashCommand === undefined)
.map(message =>
`${getUserDisplayName(users, message.sender.name)}: ${message.text}`
).join('\n');
}
/**
* Fetches a user's display name by using the Admin Directory API.
*
* A cache is used to only call the API once per user.
*
* @param {Map} cache the map containing users previously fetched
* @param {string} userId the user ID to fetch
* @return {string} the user's display name
*/
function getUserDisplayName(cache, userId) {
if (cache.has(userId)) {
return cache.get(userId);
}
let displayName = 'Unknown User';
try {
const user = AdminDirectory.Users.get(
userId.replace("users/", ""),
{ projection: 'BASIC', viewType: 'domain_public' });
displayName = user.name.displayName ? user.name.displayName : user.name.fullName;
} catch (e) {
// Ignores errors, uses 'Unknown User' by default.
}
cache.set(userId, displayName);
return displayName;
}
VertexAi.js
/**
* Summarizes a Google Chat space history with the Gemini Pro model using
* Vertex AI API.
*
* @param {string} history the history
* @return {string} the summary
*/
function summarizeSpace(history) {
const url = `https://${VERTEX_AI_LOCATION_ID}-aiplatform.googleapis.com/v1`
+ `/projects/${PROJECT_ID}/locations/${VERTEX_AI_LOCATION_ID}`
+ "/publishers/google/models/gemini-1.0-pro:generateContent";
const options = {
method: "POST",
headers: { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
contentType: "application/json",
payload: JSON.stringify({
contents: {
role: "user",
parts: {
text: "Summarize the following conversation between engineers resolving"
+ " an issue in a few sentences.\n\n" + history
}
},
safetySettings: {
category: "HARM_CATEGORY_SEXUALLY_EXPLICIT",
threshold: "BLOCK_LOW_AND_ABOVE"
},
generationConfig: {
temperature: 0.2,
topP: 0.8,
topK: 40
}
})
};
return JSON.parse(UrlFetchApp.fetch(url, options).getContentText())
.candidates[0].content.parts[0].text;
}
Docs.js
// The report generator function adds two sections: the first one is for the summary and the second one is for history.
function createReport(..., history, summary) {
...
body.appendParagraph("Summary").setHeading(DocumentApp.ParagraphHeading.HEADING1);
body.appendParagraph(summary);
body.appendParagraph("History").setHeading(DocumentApp.ParagraphHeading.HEADING1);
body.appendParagraph(history);
...
}
Google Cloud-Projekt aktualisieren
APIs aktivieren
- Aktivieren Sie in der Google Cloud Console die APIs für Google Docs, Google Admin SDK und Vertex AI:
- Klicken Sie auf Menü ☰ > APIs & Dienste > Aktivierte APIs & Dienste und prüfen Sie, ob die APIs aktiviert sind.
Dienstkonto initiieren
Gehen Sie in der Google Cloud Console so vor:
- Klicken Sie auf das Dreistrich-Menü ☰ > IAM & Verwaltung > Dienstkonten > + Dienstkonto erstellen.

- Legen Sie für Name des Dienstkontos den Wert
chat-appfest. - Legen Sie für Beschreibung des Dienstkontos den Wert
Chat app authfest. - Klicken Sie auf Erstellen und fortfahren.
- Klicken Sie auf Fertig. Sie werden zur Seite Dienstkonten weitergeleitet und können das von Ihnen erstellte Dienstkonto sehen.

- Wählen Sie das neu erstellte Dienstkonto aus.
- Wählen Sie den Tab Keys aus.
- Klicken Sie auf Schlüssel hinzufügen.
- Klicken Sie auf Neuen Schlüssel erstellen.
- Wählen Sie JSON aus.
- Klicken Sie auf Erstellen.

Das Dialogfeld wird geschlossen und das neu erstellte öffentliche/private Schlüsselpaar wird automatisch als JSON-Datei in Ihre lokale Umgebung heruntergeladen. Sie verwenden den Inhalt später, wenn Sie den Quellcode Ihres Apps Script-Projekts bearbeiten.
Google Chat API-Konfiguration aktualisieren
Gehen Sie in der Google Cloud Console so vor:
- Fügen Sie einen Slash-Befehl hinzu.
- Legen Sie als Name
/createfest. - Legen Sie als Befehls-ID
1fest. - Legen Sie Beschreibung auf
Create a new issuefest. - Klicken Sie das Kästchen Öffnet ein Dialogfeld an.
- Fügen Sie einen weiteren Slash-Befehl hinzu.
- Legen Sie als Name
/closefest. - Legen Sie als Befehls-ID
2fest. - Legen Sie Beschreibung auf
Close an issuefest. - Klicken Sie auf Speichern.

Apps Script-Projekt aktualisieren
- Wechseln Sie im lokalen Terminal in das Verzeichnis
issue-management/1-baseline. Sie enthält den Quellcode. Bevor Sie den Quellcode in Ihr Apps Script-Projekt übertragen, müssen Sie einige Dinge konfigurieren.
Quellcode konfigurieren
- Legen Sie die JSON-Konstante mit dem Namen
CHAT_CREDENTIALSin der DateiConfiguration.jsauf den Inhalt der Datei mit dem privaten Schlüssel fest, die Sie zuvor heruntergeladen haben.

- Klicken Sie in der Google Cloud Console auf Menü ☰ > IAM und Verwaltung > Einstellungen.
- Kopieren Sie die Projekt-ID.

- Legen Sie für die Stringkonstante
PROJECT_IDin der DateiConfiguration.jsdie Projekt-ID fest.

clasp konfigurieren
So initialisieren Sie die clasp-Einstellungen, um den Quellcode in das richtige Apps Script-Projekt zu übertragen:
- Wählen Sie in der Apps Script-Konsole Ihr Projekt aus.
- Wählen Sie Projekteinstellungen aus.
- Klicken Sie unter IDs auf Kopieren.

- Erstellen Sie im aktuellen Verzeichnis eine Datei mit dem Namen
.clasp.json. - Ersetzen Sie
<your-script-id>durch die kopierte ID. - Kopieren Sie das Ergebnis in die Datei
.clasp.json. - Speichern Sie die Datei
.clasp.json.
{
"scriptId": "<your-script-id>"
}
Quellcode übertragen
- Führen Sie dazu diesen Befehl aus:
$clasp push ? Manifest file has been updated. Do you want to push and overwrite? Yes └─ appsscript.json └─ ChatApp.js └─ ChatAppAuth.js └─ Configuration.js └─ Docs.js └─ Storage.js └─ VertexAi.js Pushed 7 files.
Ausprobieren
- Senden Sie in Google Chat eine Direktnachricht mit
Hello!an die App. Die App antwortet nicht, aber es wird eine Nachricht angezeigt, in der Sie aufgefordert werden, die Konfiguration vorzunehmen.

- Klicken Sie auf Konfigurieren.
- Wählen Sie Ihr Google-Konto aus.
- Authentifizieren Sie sich.
- Prüfen Sie die App und gewähren Sie den Zugriff.

Wenn der Vorgang erfolgreich war, sehen Sie auf der Webseite einen einfachen Bestätigungsbildschirm und eine tatsächliche Antwort der App auf Ihre ursprüngliche Nachricht.


- Senden Sie eine weitere Direktnachricht an die App, aber mit dem Slash-Befehl
/create.

- Legen Sie im Dialogfeld als Titel
Issue Title 1fest. - Legen Sie Beschreibung auf „Problem
Description 1“ fest. - Klicken Sie auf Erstellen.

Die App führt Folgendes aus:
- Schließt das Dialogfeld.
- Erstellt einen Space mit demselben Titel, der sich mit dem neu erstellten Problem befasst.
- Dem neu erstellten Gruppenbereich beitreten
- Es wird eine Nachricht mit der Beschreibung des Problems im neu erstellten Gruppenbereich gesendet.
- Sie erhalten eine Direktnachricht mit einem Link zum neu erstellten Gruppenbereich.

- Senden Sie im neu erstellten Gruppenbereich eine Nachricht mit dem Slash-Befehl
/closeund der Auflösung, z. B.Not reproducible.

Die App führt Folgendes aus:
- Erstellt ein Berichts-Dokument in Google Docs.
- Es wird eine Nachricht an den Gruppenbereich gesendet, der dem Problem gewidmet ist, mit einem Link zum neu erstellten Berichts-Dokument.

- Öffnen Sie das Berichts-Dokument. Sie enthält grundlegende Informationen, den Verlauf und eine Zusammenfassung.

4. Optional: App 1: App-Startseite hinzufügen
Konzepte ansehen
App-Startseite ist eine anpassbare Kartennachricht, die eine Chat-App an einen Nutzer sendet, wenn der Nutzer über eine Direktnachricht mit der Chat-App auf den Tab Startseite zugreift. Sie wird in der Regel verwendet, um die App-Dokumentation oder eine Übersicht anzuzeigen. Technisch gesehen gibt es ein spezielles Ereignis, das verarbeitet werden muss. Es basiert auf denselben Grundprinzipien wie Kartenbenachrichtigungen.

Abläufe für Rezensionen
Probleme verwalten
Quellcode prüfen
Das Apps Script-Projekt muss bearbeitet werden.
ChatApp.js
/**
* Handles app home requests in Google Chat.
*
* Displays the latest status of all issues.
*/
function onAppHome() {
// Generates one card section per issue.
var sections = [];
for (var issueKey in appProperties.getProperties()) {
const issue = JSON.parse(appProperties.getProperty(issueKey));
if (issue.spaceId) {
sections.push({
header: `${issue.status} - ${issue.title}`,
widgets: [{ textParagraph: {
text: `Description: ${issue.description}`
}}, { textParagraph: {
text: `Resolution: ${issue.resolution}`
}}, { buttonList: { buttons: [{
text: "Open space",
onClick: { openLink: {
url: `https://mail.google.com/mail/u/0/#chat/space/${issue.spaceId}`
}}
}, {
text: "Open report",
onClick: { openLink: {
url: issue.reportUrl !== "" ? issue.reportUrl : "docs.new"
}},
disabled: issue.reportUrl === ""
}]}
}]
});
}
}
return { action: { navigations: [{ push_card: {
sections: sections
}}]}};
}
Google Cloud-Projekt aktualisieren
Gehen Sie in der Google Cloud Console so vor:
Führen Sie in Ihrer lokalen Umgebung die folgenden Schritte aus:
- Wechseln Sie im Terminal in das Verzeichnis
issue-management/2-app-home. Sie enthält den Quellcode, den Sie verwenden müssen. - Kopieren Sie die Datei
issue-management/1-baseline/.clasp.jsonin Ihr aktuelles Verzeichnis. - Kopieren Sie die Datei
issue-management/1-baseline/Configuration.jsin Ihr aktuelles Verzeichnis, um die vorhandene Datei zu ersetzen. - Führen Sie dazu diesen Befehl aus:
clasp push
Ausprobieren
Gehen Sie in Google Chat so vor:
- Senden Sie eine Direktnachricht mit dem Slash-Befehl
/createan die App. Die App öffnet ein Dialogfeld. - Legen Sie als Titel
Issue Title 2fest. - Legen Sie Beschreibung auf „Problem
Description 2“ fest. - Klicken Sie auf Erstellen.

- Wählen Sie in Ihrem Bereich in der Google Chat App den Tab Startseite aus. Dort sehen Sie die Details der von Ihnen erstellten Probleme.

5. Optional: App 1: Überwachung des Gruppenbereichs hinzufügen
Konzepte
Pub/Sub
Pub/Sub ist ein asynchroner, skalierbarer Messaging-Dienst, der Dienste, die Nachrichten erzeugen, von Diensten entkoppelt, die diese Nachrichten verarbeiten. Mit Pub/Sub können Sie Systeme für Ereignisersteller und -nutzer erstellen, die als Publisher und Abonnenten bezeichnet werden. Publisher kommunizieren asynchron mit Abonnenten durch Broadcast-Ereignisse und nicht durch synchrone Remote-Prozeduraufrufe (RPCs).
Publisher senden Ereignisse an den Pub/Sub-Dienst, ohne zu berücksichtigen, wie oder wann diese Ereignisse verarbeitet werden. Pub/Sub liefert dann Ereignisse an alle Dienste, die darauf reagieren. In Systemen, die über RPCs kommunizieren, müssen Publisher darauf warten, dass Abonnenten die Daten erhalten. Die asynchrone Integration in Pub/Sub erhöht jedoch die Flexibilität und Robustheit des Gesamtsystems.
Thema: Eine benannte Ressource, die für einen Feed von Nachrichten steht. Bevor Sie ein Thema veröffentlichen oder abonnieren können, müssen Sie es zuerst erstellen.
Abo: Wenn Sie Nachrichten empfangen möchten, die zu einem Thema veröffentlicht wurden, müssen Sie ein Abo für dieses Thema erstellen. Der Abonnentenclient empfängt und verarbeitet die Nachrichten, die für das Thema veröffentlicht wurden. Für ein Thema sind mehrere Abos möglich, aber jedes Abo gehört zu einem einzelnen Thema.
Google Workspace-Ereignisse
Google Workspace-Ereignisse beschreiben Änderungen an Google Workspace-Ressourcen, z. B. wenn Ressourcen erstellt, aktualisiert oder gelöscht werden. Apps können Google Workspace-Ressourcen abonnieren, um relevante Ereignisse asynchron zu empfangen und zu verarbeiten.

So werden Ereignisse über ein Abo mit der Google Workspace Events API an eine App gesendet:
- Die App abonniert eine Ressource in einer Google Workspace-App, z. B. einen Bereich.
- Die Ressource, für die die App Änderungen abonniert hat.
- Die Google Workspace-App sendet ein Ereignis an ein Thema in Pub/Sub, das als Benachrichtigungsendpunkt für das Google Workspace-Abo der App dient. Das Ereignis enthält Daten dazu, was sich in der Ressource geändert hat.
- Die App verarbeitet die Pub/Sub-Nachricht, die das Ereignis enthält, und ergreift bei Bedarf Maßnahmen.
Abläufe für Rezensionen
Problem erstellen (Aktualisierung)

Probleme in einem dedizierten Bereich beheben (Update)

Problem über einen dedizierten Bereich schließen (Update)

Abos verarbeiten

Quellcode prüfen
Das Apps Script-Projekt muss bearbeitet werden.
appsscript.json
// Enables the Workspace Events service.
"enabledAdvancedServices": [
...
{
"userSymbol": "WorkspaceEvents",
"version": "v1",
"serviceId": "workspaceevents"
}
...
]
Configuration.js
// Adds two constants: the first one is the Pub/Sub topic ID and the second one
// is the Pub/Sub subscription ID to be used to retrieve Google Workspace events.
...
const GWS_PUBSUB_TOPIC_ID = `projects/${PROJECT_ID}/topics/workspace-events`;
const GWS_PUBSUB_SUBSCRIPTION_ID =
`projects/${PROJECT_ID}/subscriptions/workspace-events-sub`;
...
ChatApp.js
// Edits the function to delete the subscription at issue closure.
function processSlashCommand(event) {
...
if (event.message.slashCommand.commandId == CLOSE_COMMAND_ID
&& event.message.space.type !== "DM") {
...
deleteSubscription(issue.subscriptionId);
...
}
...
}
// Edits the function to create the subscription.
function createIssue(event) {
...
const subscriptionId = createSpaceSubscription(spaceUrl);
const createdIssue = saveCreatedIssue(..., subscriptionId);
...
}
// Edits the function to delete the subscription.
function onRemoveFromSpace(event) {
...
deleteSubscription(issue.subscriptionId);
...
}
Storage.js
// Edits the function to keep track of the subscription ID.
function saveCreatedIssue(..., spaceId, subscriptionId) {
...
appProperties.setProperty(spaceId, JSON.stringify({
...
subscriptionId: subscriptionId,
...
}));
...
}
WorkspaceEvent.js
/**
* Creates a new subscription to Google Workspace Events associated to a
* Google Chat space.
*
* The subscription scope includes message creation events and resources.
*
* @param {string} spaceId the space ID to create a subscription for
* @return the ID of the newly created subscription
*/
function createSpaceSubscription(spaceId) {
const operation = WorkspaceEvents.Subscriptions.create({
targetResource: `//chat.googleapis.com/${spaceId}`,
eventTypes: ["google.workspace.chat.message.v1.created"],
notificationEndpoint: { pubsubTopic: GWS_PUBSUB_TOPIC_ID },
payloadOptions: { includeResource: true },
});
return operation.response.name;
}
/**
* Processes events from subscription by using the Google Cloud PubSub API.
*
* It pulls and acknowledges each event.
*/
function processSubscription() {
const response = UrlFetchApp.fetch(
`https://pubsub.googleapis.com/v1/${GWS_PUBSUB_SUBSCRIPTION_ID}:pull`,
{
method: "POST",
contentType: "application/json",
headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() },
payload: JSON.stringify({ maxMessages: 10 })
}
);
const messages = JSON.parse(response.getContentText()).receivedMessages;
for (var messageIndex in messages) {
const message = messages[messageIndex];
const ceType = message.message.attributes["ce-type"];
const dataStr = Utilities.newBlob(Utilities.base64Decode(message.message.data))
.getDataAsString();
if (ceType === "google.workspace.events.subscription.v1.expirationReminder") {
// Renews subscription.
renewSubscription(JSON.parse(dataStr).subscription.name);
} else if (ceType === "google.workspace.chat.message.v1.created") {
// Processes the message text when it's sent in a space.
const chatMessage = JSON.parse(dataStr).message;
if (chatMessage.sender.type !== "BOT") {
console.log("Message was processed.");
}
}
// Acknowledges successful processing to avoid getting it again next time.
ackSubscription(message.ackId);
}
}
/**
* Acknowledges a subscription event by using the Google Cloud PubSub API.
*
* @param {string} ackId the ID of the event acknowledgment to send
*/
function ackSubscription(ackId) {
UrlFetchApp.fetch(
`https://pubsub.googleapis.com/v1/${GWS_PUBSUB_SUBSCRIPTION_ID}:acknowledge`,
{
method: "POST",
contentType: "application/json",
headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() },
payload: JSON.stringify({
ackIds: [ackId]
})
}
);
}
/**
* Renews a subscription to Google Workspace Events.
*
* The default time to live option is used.
*
* @param {string} subscriptionId the ID of the subscription to renew
*/
function renewSubscription(subscriptionId) {
WorkspaceEvents.Subscriptions.patch({ttl: '0s'}, subscriptionId);
}
/**
* Deletes a subscription to Google Workspace Events.
*
* @param {string} subscriptionId the ID of the subscription to delete
*/
function deleteSubscription(subscriptionId) {
WorkspaceEvents.Subscriptions.remove(subscriptionId);
}
Google Cloud-Projekt aktualisieren
APIs aktivieren
- Aktivieren Sie in der Google Cloud Console Google Workspace Events und Pub/Sub.
- Klicken Sie auf Menü ☰ > APIs & Dienste > Aktivierte APIs & Dienste und prüfen Sie, ob beide aktiviert sind.
Abo starten
Sie müssen ein Pub/Sub-Thema erstellen und abonnieren, damit alle Workspace-Ereignisse gepostet werden.
Gehen Sie in der Google Cloud Console so vor:
- Klicken Sie auf das Menü ☰ > Pub/Sub > Themen.
- Klicken Sie auf Thema erstellen.
- Legen Sie als Themen-ID
workspace-eventsfest. - Aktivieren Sie das Kästchen Standardabo hinzufügen.
- Klicken Sie auf Erstellen.

So gewähren Sie Zugriff zum Veröffentlichen von Pub/Sub-Nachrichten in Ihrem neu erstellten Thema über Google Chat:
- Wählen Sie das Thema aus der Liste aus.
- Wählen Sie den Tab Berechtigungen aus.
- Fügen Sie
chat-api-push@system.gserviceaccount.comzu Neue Hauptkonten hinzu. - Wählen Sie unter Rolle die Option Pub/Sub-Publisher aus.
- Klicken Sie auf Speichern.

Apps Script-Projekt aktualisieren
Gehen Sie in der Google Cloud Console so vor:
- Klicken Sie auf das Menü ☰ > IAM & Verwaltung > Einstellungen.
- Kopieren Sie die Projekt-ID.

Führen Sie in Ihrer lokalen Umgebung die folgenden Schritte aus:
- Wechseln Sie im Terminal in das Verzeichnis
issue-management/3-message-monitoring. Sie enthält den Quellcode, den Sie benötigen. - Legen Sie die Stringkonstante mit dem Namen
PROJECT_IDin der DateiConfiguration.jsauf die kopierte Projekt-ID fest. - Legen Sie die JSON-Konstante mit dem Namen
CHAT_CREDENTIALSin der DateiConfiguration.jsauf den Inhalt der Datei mit dem privaten Schlüssel fest, die Sie zuvor heruntergeladen haben. - Kopieren Sie die Datei
issue-management/2-app-home/.clasp.jsonin Ihr aktuelles Verzeichnis. - Führen Sie dazu diesen Befehl aus:
clasp push
Ausprobieren
Gehen Sie in Google Chat so vor:
- Senden Sie eine Direktnachricht mit dem Slash-Befehl
/createan die App. Die App öffnet ein Dialogfeld. - Legen Sie als Titel
Issue Title 3fest. - Legen Sie Beschreibung auf „Problem
Description 3“ fest. - Klicken Sie auf Erstellen.
- Senden Sie im neu erstellten Gruppenbereich einige Nachrichten, in denen Sie das Problem beschreiben.
- Senden Sie eine Nachricht mit dem Slash-Befehl
/closeund der Auflösung, z. B.Fixed.
Gehen Sie in der Google Cloud Console so vor:
- Gehen Sie zu Menü ☰ > Pub/Sub > Abos.
- Wählen Sie das Abo workspace-events-sub aus.
- Wählen Sie den Tab Nachrichten aus.
- Klicken Sie auf Pull. In der Tabelle werden die Nachrichten angezeigt, die sich auf das beziehen, was Sie an den neu erstellten Gruppenbereich gesendet haben.

Führen Sie in der Apps Script Console die folgenden Schritte aus:
- Wählen Sie Ihr Projekt aus.
- Wählen Sie Mitbearbeiter aus.
- Wählen Sie die Datei
WorkspaceEvent.gsaus. - Wählen Sie im Abschnitt Ausführen die Option
processSubscriptionaus. - Klicken Sie auf
Run.Im Ausführungslog sehen Sie, dass Nachrichten verarbeitet wurden.

Gehen Sie in der Google Cloud Console so vor:
- Gehen Sie zu Menü ☰ > Pub/Sub > Abos.
- Wählen Sie das Abo workspace-events-sub aus.
- Wählen Sie den Tab Nachrichten aus.
- Klicken Sie auf Pull. In der Tabelle werden keine Nachrichten mehr angezeigt, die sich auf das beziehen, was Sie an den neu erstellten Gruppenbereich gesendet haben.

- Senden Sie in Google Chat im Gruppenbereich für das dritte Problem, das Sie mit dem Slash-Befehl
/createerstellt haben, einige weitere Nachrichten, in denen das Problem besprochen wird.
Gehen Sie in der Google Cloud Console so vor:
- Gehen Sie zu Menü ☰ > Pub/Sub > Abos.
- Wählen Sie das Abo workspace-events-sub aus.
- Wählen Sie den Tab Nachrichten aus.
- Klicken Sie auf Pull. In der Tabelle werden die Nachrichten, die sich auf das beziehen, was Sie an den neu erstellten Gruppenbereich gesendet haben, nicht angezeigt.
6. Optional: App 1: Inklusionshilfe hinzufügen
Konzepte
GenAI-Prompts sind Anweisungen oder Fragen, mit denen ein generatives KI-Modell zur Ausgabe eines bestimmten Ergebnisses angeleitet wird. Eine gängige Praxis ist das Filtern von Antworten durch Hinzufügen von Regeln und Bedingungen in den Prompts. So kann die Ausgabe sicher, relevant, konsistent und erwartungskonform sein.
Abläufe für Rezensionen
Abos verarbeiten (Update)

Quellcode prüfen
Das Apps Script-Projekt muss bearbeitet werden.
WorkspaceEvent.js
// Edits the function to replace logging by an actual card message.
function processSubscription() {
...
for (var messageIndex in messages) {
...
} else if (ceType === "google.workspace.chat.message.v1.created") {
...
const inclusivityCheck = getInclusivityFeedback(chatMessage.text);
if (inclusivityCheck !== "It's inclusive!") {
createAppMessageUsingChatService({
cardsV2: [{ cardId: "1", card: { header: {
title: "Inclusivity",
subtitle: `The following words are not inclusive: ${inclusivityCheck}`
}}}]
},
chatMessage.space.name);
}
...
}
...
}
...
}
VertexAi.js
/**
* Gets feedback on inclusivity for a text with the Gemini Pro model using
* Vertex AI API.
*
* Returns "It's inclusive!" when it is otherwise a list of word(s) that might not
* be optimal.
*
* @param {string} text the text
* @return {string} the feedback
*/
function getInclusivityFeedback(text) {
const url = `https://${VERTEX_AI_LOCATION_ID}-aiplatform.googleapis.com/v1`
+ `/projects/${PROJECT_ID}/locations/${VERTEX_AI_LOCATION_ID}`
+ "/publishers/google/models/gemini-1.0-pro:generateContent";
const options = {
method: "POST",
headers: { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
contentType: "application/json",
payload: JSON.stringify({
contents: {
role: "user",
parts: {
text: "Are there any words that obviously go against inclusivity "
+ "in this text:"
+ `\n\n----------\n${text}\n----------\n\n`
+ "If there are not, answer \"It's inclusive!\" "
+ "otherwise answer by listing them separated by commas. "
+ "Do not answer with any explanation."
}
},
safetySettings: {
category: "HARM_CATEGORY_SEXUALLY_EXPLICIT",
threshold: "BLOCK_LOW_AND_ABOVE"
},
generationConfig: {
temperature: 0.2,
topP: 0.8,
topK: 40
}
})
};
return JSON.parse(UrlFetchApp.fetch(url, options).getContentText())
.candidates[0].content.parts[0].text;
}
Apps Script-Projekt aktualisieren
Führen Sie in Ihrer lokalen Umgebung die folgenden Schritte aus:
- Wechseln Sie im Terminal in das Verzeichnis
issue-management/4-inclusivity-help. Sie enthält den Quellcode, den Sie benötigen. - Kopieren Sie die Datei
issue-management/3-message-monitoring/.clasp.jsonin Ihr aktuelles Verzeichnis. - Kopieren Sie die Datei
issue-management/3-message-monitoring/Configuration.jsin Ihr aktuelles Verzeichnis, um die vorhandene Datei zu ersetzen. - Führen Sie dazu diesen Befehl aus:
clasp push
Ausprobieren
Gehen Sie in Google Chat so vor:
- Senden Sie eine Direktnachricht mit dem Slash-Befehl
/createan die App. Die App öffnet ein Dialogfeld. - Legen Sie als Titel
Issue Title 4fest. - Legen Sie Beschreibung auf „Problem
Description 4“ fest. - Klicken Sie auf Erstellen.
- Senden Sie im neu erstellten Gruppenbereich
It happened to me last week as well.
Führen Sie in der Apps Script Console die folgenden Schritte aus:
- Wählen Sie Ihr Projekt aus.
- Wählen Sie Mitbearbeiter aus.
- Wählen Sie die Datei
WorkspaceEvent.gsaus. - Wählen Sie im Abschnitt Ausführen die Option
processSubscriptionaus. - Klicken Sie auf Ausführen. Im Ausführungsprotokoll sehen Sie, dass Nachrichten verarbeitet wurden.
Gehen Sie in Google Chat so vor:
- Die App hat im neu erstellten Gruppenbereich keine Tipps zur Inklusion gesendet.
- Senden Sie im neu erstellten Gruppenbereich die Nachricht
I had to add myself from the master to fix it.
Führen Sie in der Apps Script Console die folgenden Schritte aus:
- Wählen Sie Ihr Projekt aus.
- Wählen Sie Mitbearbeiter aus.
- Wählen Sie die Datei
WorkspaceEvent.gsaus. - Wählen Sie im Abschnitt Ausführen die Option
processSubscriptionaus. - Klicken Sie auf Ausführen. Im Ausführungsprotokoll sehen Sie, dass Nachrichten verarbeitet wurden. In Google Chat hat die App eine Nachricht mit Tipps zur Inklusion in den neu erstellten Gruppenbereich gesendet.

7. Optional: App 1: Vorlieben hinzufügen
.
Konzepte
Ein Zubehör-Widget ist ein Widget ohne Rahmen, das am unteren Rand einer von einer App gesendeten Nachricht angebracht ist. Es wird in der Regel verwendet, um schnelle Reaktionen des Nutzers im spezifischen Kontext von Nachrichten zu ermöglichen. Technisch basiert sie auf denselben Grundprinzipien wie Karten-Schaltflächen.

Abläufe für Rezensionen
Hinweise zu Inklusion deaktivieren

Quellcode prüfen
Das Apps Script-Projekt muss bearbeitet werden.
ChatApp.js
// Edits the function to handle the inclusivity help disablement action for a
// given space.
function onCardClick(event) {
...
if (event.action.actionMethodName === "disableInclusivityHelp") {
disableInclusivityHelp(event.common.parameters.spaceId);
}
}
Storage.js
// Edits the function to keep track of the inclusivity help setting.
function saveCreatedIssue(title, description, spaceId, subscriptionId) {
appProperties.setProperty(spaceId, JSON.stringify({
...
inclusivityHelp: true,
...
}));
...
}
/**
* Disables inclusivity help in a space.
*
* @param {string} spaceId the ID of dedicated space of the issue
*/
function disableInclusivityHelp(spaceId) {
var issue = JSON.parse(appProperties.getProperty(spaceId));
issue.inclusivityHelp = false;
appProperties.setProperty(spaceId, JSON.stringify(issue));
}
/**
* Checks whether the app should help with inclusivity in a given space.
*
* @param {string} spaceId the ID of dedicated space of the issue
* @return whether the app should help with inclusivity
*/
function shouldHelpWithInclusivity(spaceId) {
return JSON.parse(appProperties.getProperty(spaceId)).inclusivityHelp;
}
WorkspaceEvent.js
// Edits the function to display the accessory widget to the existing card message.
function processSubscription() {
...
for (var messageIndex in messages) {
...
} else if (ceType === "google.workspace.chat.message.v1.created") {
...
if (... && shouldHelpWithInclusivity(chatMessage.space.name)) {
createAppMessageUsingChatService({
...
accessoryWidgets: [{ buttonList: { buttons: [{
altText: "Disable inclusivity help",
icon: {
iconUrl: "https://upload.wikimedia.org/.../Stop_hand_rugen.png"
},
onClick: { action: {
function: "disableInclusivityHelp",
parameters: [{
key: "spaceId",
value: chatMessage.space.name
}]
}}
}]}}]
}, ...);
...
}
...
}
...
}
...
}
Apps Script-Projekt aktualisieren
Führen Sie in Ihrer lokalen Umgebung die folgenden Schritte aus:
- Wechseln Sie im Terminal in das Verzeichnis
issue-management/5-disable-help. Sie enthält den Quellcode, den Sie benötigen. - Kopieren Sie die Datei
issue-management/4-inclusivity-help/.clasp.jsonin Ihr aktuelles Verzeichnis. - Kopieren Sie die Datei
issue-management/4-inclusivity-help/Configuration.jsin Ihr aktuelles Verzeichnis, um die vorhandene Datei zu ersetzen. - Führen Sie dazu diesen Befehl aus:
clasp push
Ausprobieren
Hilfe deaktivieren
- Senden Sie in Google Chat im Gruppenbereich für das vierte Problem, das Sie mit dem Slash-Befehl
/createerstellt haben, die NachrichtI had to add myself from the master to fix.
Führen Sie in der Apps Script Console die folgenden Schritte aus:
- Wählen Sie Ihr Projekt aus.
- Wählen Sie Mitbearbeiter aus.
- Wählen Sie die Datei
WorkspaceEvent.gsaus. - Wählen Sie im Abschnitt Ausführen die Option
processSubscriptionaus. - Klicken Sie auf Ausführen. Im Ausführungsprotokoll sehen Sie, dass Nachrichten verarbeitet wurden.
Gehen Sie in Google Chat so vor:
- Die App hat eine Nachricht mit Inklusivitätshilfe an den Gruppenbereich gesendet, der dem Problem mit einem Zubehör-Widget gewidmet ist.
- Klicken Sie auf das Zubehör-Widget, um die Inklusivitätshilfe zu deaktivieren.

Deaktivierung prüfen
- Senden Sie in Google Chat im Gruppenbereich für das vierte Problem, das Sie mit dem Slash-Befehl
/createerstellt haben, die NachrichtI had to add myself from the master to fix.
Führen Sie in der Apps Script Console die folgenden Schritte aus:
- Wählen Sie Ihr Projekt aus.
- Wählen Sie Mitbearbeiter aus.
- Wählen Sie die Datei
WorkspaceEvent.gsaus. - Wählen Sie im Abschnitt Ausführen die Option
processSubscriptionaus. - Klicken Sie auf Ausführen. Im Ausführungsprotokoll sehen Sie, dass Nachrichten verarbeitet wurden. In Google Chat wurde keine Nachricht mit Inklusivitätshilfe an den Gruppenbereich gesendet, der dem Problem gewidmet ist, da die Funktion deaktiviert war.

8. App 2: Build
Konzepte ansehen
Fundierung generativer KI
Es geht darum, KI-Modelle faktischer und zuverlässiger zu machen, indem sie mit überprüfbaren Wissensquellen verknüpft werden. Diese Technik hilft, zu verhindern, dass KI Informationen erfindet, und kann dazu beitragen, dass Antworten kontextbezogen und weniger voreingenommen sind.
Natürliche Sprache
Jede Sprache, die von Menschen für die alltägliche Kommunikation gesprochen oder geschrieben wird, im Gegensatz zu künstlichen oder computerbasierten Sprachen.
Cloud Storage
Mit Cloud Storage können Sie jederzeit beliebige Datenmengen weltweit speichern und abrufen. Cloud Storage eignet sich für eine Reihe von Aufgaben, beispielsweise für das Bereitstellen von Websiteinhalten, das Speichern von Daten für die Archivierung und Notfallwiederherstellung oder das Verteilen großer Datenobjekte an Nutzer über direkte Downloads.
Dialogflow CX-Datenspeicher
Dialogflow CX lässt sich in Datenspeicher einbinden. Das sind Sammlungen von Websites und Dokumenten, die von Datenspeicher-Agents verwendet werden, um anhand bestimmter Daten Antworten auf Fragen von Endnutzern zu finden. Bei einer bestimmten Frage sucht der Datenspeicher-Agent in den angegebenen Quellinhalten nach einer Antwort und fasst die Ergebnisse in einer kohärenten Antwort zusammen. Außerdem werden unterstützende Links zu den Quellen der Antwort bereitgestellt, damit der Endnutzer mehr erfahren kann.
Architektur prüfen

Diese Google Chat-App wurde mit Dialogflow CX erstellt und funktioniert so:
- Ein Nutzer sendet eine Nachricht an die App, entweder in einer Direktnachricht oder in einem Gruppenbereich.
- Die Nachricht wird von der App verarbeitet, die ein Dialogflow CX-Agent ist und mit einem Google Cloud-Projekt verknüpft ist.
- Die App ist in einen Datenspeicher in Cloud Storage eingebunden.
- Die App sendet eine synchrone Antwort, entweder in einer Direktnachricht oder im ursprünglichen Gruppenbereich.
Flows überprüfen
Frage beantworten
Quellcode prüfen
Die einzige Quelle, die Sie benötigen, ist nicht Code, sondern Daten, die Sie für die Fundierung verwenden.
google-chat-overview.pdf
Enthält die unstrukturierten Informationen von Google Chat-Apps, eine gedruckte Version einer Seite von der Google Workspace-Entwicklerwebsite.

Google Cloud-Projekt aktualisieren
Gehen Sie in der Google Cloud Console so vor:
- Aktivieren Sie die Dialogflow API und die Cloud Storage API.
- Aktivieren Sie die Vertex AI Agent Builder API.
- Klicken Sie auf das Menü ☰ > APIs & Dienste > Aktivierte APIs & Dienste und prüfen Sie, ob alle APIs aktiviert sind.
.
Dialogflow CX-Agent für Datenspeicher erstellen
Wissensdaten initiieren
Gehen Sie in der Google Cloud Console so vor:
- Klicken Sie auf Menü ☰ > Cloud Storage > Buckets.

- Klicken Sie auf Erstellen.
- Legen Sie name auf
gchat-knowledgefest. - Klicken Sie auf Erstellen.

- Wählen Sie den Bucket gchat-knowledge aus.
- Klicken Sie auf Dateien hochladen.
- Laden Sie die Datei google-chat-overview.pdf aus Ihrer lokalen Umgebung herunter und wählen Sie sie aus.

App erstellen
Gehen Sie in der Google Cloud Console so vor:
- Klicken Sie auf das Dreistrich-Menü ☰ > Agent Builder > Apps.
- Klicken Sie auf Neue Anwendung.
- Wählen Sie den Chattyp aus.

- Setzen Sie
Company nameauf den Namen Ihres Unternehmens. - Setze
Agent nameaufknowledge. - Klicken Sie auf Weiter.

- Klicken Sie auf Neuen Datenspeicher erstellen.
- Wählen Sie Cloud Storage als Datenquelle aus.

- Wählen Sie Datei aus.
- Klicken Sie auf Durchsuchen.
- Wählen Sie die Datei
google-chat-overview.pdfaus. - Klicken Sie auf Weiter.
- Legen Sie
gchat-knowledge-dsals Namen des Datenspeichers fest. - Klicken Sie auf Erstellen.

- Wählen Sie in der Tabelle den Datenspeicher gchat-knowledge-ds aus.
- Klicken Sie auf Erstellen.

- Klicken Sie nach einigen Minuten auf Menü ☰ > Agent Builder > Apps. Die App wird angezeigt.

- Klicken Sie auf das Dreistrich-Menü ☰ > Agent Builder > Datenspeicher.
- Klicken Sie auf den Datenspeicher gchat-knowledge-ds. Die Anzahl der Dokumente ist
1, was darauf hinweist, dass sie bereit sind.

App fertigstellen und testen
Führen Sie in der Dialogflow CX Console die folgenden Schritte aus:
- Wählen Sie Ihr Google Cloud-Projekt aus.
- Wählen Sie den Wissens-Agent aus.

- Wählen Sie Agent-Einstellungen > Generative KI > Generativer Agent aus.
- Wechseln Sie das Modell von Text Bison zu Gemini Pro.
- Klicken Sie auf Speichern.

- Klicken Sie auf Agent testen.
What is Google Chat?senden. Der Agent antwortet mit etwas Sinnvollem.

Google Chat App einbinden
Führen Sie in der Dialogflow CX Console die folgenden Schritte aus:
- Wählen Sie Ihr Google Cloud-Projekt aus.
- Klicken Sie in der Zeile des Knowledge-Agents auf
> Name kopieren.

Gehen Sie in der Google Cloud Console so vor:
- Rufen Sie die Google Chat API-Konfiguration auf.
- Wählen Sie unter Verbindungseinstellungen die Option Dialogflow aus.
- Wählen Sie unter Dialogflow-Einstellungen die Option Dialogflow CX aus.
- Legen Sie für Agent or Environment resource name (Agent oder Name der Umgebungsressource) den kopierten Agentennamen fest.
- Entfernen Sie die beiden Slash-Befehle.

- Senden Sie in Google Chat eine Direktnachricht mit
What is Google Chat?an die Google Chat-App. Der Agent antwortet mit einer sinnvollen Antwort.

9. Optional: App 2: Quellen hinzufügen
Konzepte ansehen
Dialogflow CX-Webhook
Ein Dienst, der Geschäftslogik hostet oder andere Dienste aufruft. Während einer Dialogflow CX-Sitzung können Webhooks die durch Natural Language Processing extrahierten Daten verwenden, um dynamische Antworten zu generieren, erfasste Daten zu validieren oder Aktionen im Back-End auszulösen.
Cloud Functions
Cloud Functions eignen sich hervorragend zum Erstellen serverloser Backends, zur Datenverarbeitung in Echtzeit und zum Entwickeln intelligenter Apps. Sie müssen keine Server bereitstellen, verwalten, patchen oder aktualisieren. Sie werden automatisch skaliert und sind hochverfügbar und fehlertolerant.
Flows überprüfen
Frage beantworten (Aktualisierung)

Quellcode prüfen
Der einzige Quellcode, den Sie benötigen, ist die Funktion zum Anpassen von Agent-Antworten an Google Chat-Nachrichten. Es wird als Webhook verwendet.
package.json
// The function relies on the Cloud Functions framework to run.
{
"name": "agent-response-adapter",
"version": "0.0.1",
"dependencies": {
"@google-cloud/functions-framework": "^3.0.0"
},
...
}
index.js
/**
* Handles all incoming requests.
*
* It takes a Dialogflow CX agent response as input and returns a
* valid Google Chat card message with both the text and source links
*/
functions.http('agent-response-adapter', (request, response) => {
// Creates Google Chat buttons based on the data store agent response
// grounding details.
var linkTitles = [];
var linkButtons = [];
const grounding = request.body.messages[1].payload.richContent[0][0];
if (grounding.type === "match_citations") {
// Supports citation match type.
grounding.citations.forEach((citation) => {
// Avoid duplications.
if (linkTitles.indexOf(citation.title) < 0) {
linkButtons.push({
text: citation.title,
onClick: { openLink: {
url: citation.actionLink
}}
});
linkTitles.push(citation.title);
}
});
} else if (grounding.type === "info") {
// Supports info type.
if (linkTitles.indexOf(grounding.title) < 0) {
linkButtons.push({
text: grounding.title,
onClick: { openLink: {
url: grounding.actionLink
}}
});
linkTitles.push(grounding.title);
}
}
// Sends the Dialogflow CX fulfillment response to replace the agent response
// with the Chat message with text and source buttons.
response.send({ fulfillment_response: {
merge_behavior: "REPLACE",
messages: [{ payload: {
// Reuses the original data store agent response text.
text: request.body.messages[0].text.text[0],
cardsV2: [{
cardId: "sourcesCard",
card: { sections: [{
header: "Sources",
widgets: [{ buttonList: {
buttons: linkButtons
}}]
}]}
}]
}}]
}});
});
Google Cloud-Projekt aktualisieren
Gehen Sie in der Google Cloud Console so vor:
- Aktivieren Sie die Cloud Build, Cloud Functions, Cloud Logging, Artifact Registry und Cloud Run APIs.
- Klicken Sie auf das Menü ☰ > APIs & Dienste > Aktivierte APIs & Dienste und prüfen Sie, ob die APIs aktiviert sind.
Dialogflow CX-Datenspeicher-Agent aktualisieren
Sie müssen eine Cloud-Funktion bereitstellen und das Dialogflow CX-Webhook aktualisieren, um sie nach Möglichkeit mit mehreren Quellen auszulösen.
Mehrere Quellen zurückgeben
Standardmäßig gibt ein neuer Data Store-Agent maximal eine Quelle zurück. Sie können diese Einstellung jedoch ändern.
Führen Sie in der Dialogflow CX Console die folgenden Schritte aus:
- Wählen Sie Ihr Google Cloud-Projekt aus.
- Wählen Sie den Wissens-Agent aus.
- Wählen Sie Startseite aus.
- Wählen Sie Datenspeicher bearbeiten aus.
- Legen Sie im Abschnitt Antworten des KI-Agenten die Antwortoptionen für Datenspeicher auf
5fest. - Klicken Sie auf Speichern.

Cloud Functions-Funktion starten
Gehen Sie in der Google Cloud Console so vor:
- Klicken Sie auf das Dreistrich-Menü ☰ > Cloud Functions.
- Klicken Sie auf Funktion erstellen.
- Legen Sie unter Grundeinstellungen für name den Wert
function-1fest. - Wählen Sie unter Authentifizierung das Optionsfeld „Nicht authentifizierte Aufrufe zulassen“ aus.
- Legen Sie unter Laufzeit, Build, Verbindungen und Sicherheitseinstellungen für Maximale Anzahl von Instanzen den Wert
3fest. - Klicken Sie auf Weiter.

- Legen Sie
agent-response-adapterals Einstiegspunkt fest. - Ersetzen Sie den Standardinhalt durch die Dateien package.json und index.js.
- Klicken Sie auf Bereitstellen.

- Kopieren Sie die URL und warten Sie einige Minuten, bis die Funktion bereitgestellt wird.

Webhook initiieren
Sie müssen den Dialogflow CX-Agent so konfigurieren, dass ein Webhook verwendet wird, der die neu bereitgestellte Funktion auslöst.
Führen Sie in der Dialogflow CX Console die folgenden Schritte aus:
- Wählen Sie Ihr Google Cloud-Projekt aus.
- Wählen Sie den Wissens-Agent aus.
- Wählen Sie Verwalten > Webhooks > Erstellen aus.
- Legen Sie als Anzeigename
Google Chat Response Adapterfest. - Legen Sie für Webhook URL (Webhook-URL) die URL fest, die Sie zuvor kopiert haben.
- Klicken Sie auf Speichern.

- Klicken Sie auf Erstellen.
- Wählen Sie Startseite aus.
- Wählen Sie Datenspeicher bearbeiten aus.
- Klicken Sie unter Webhook settings (Webhook-Einstellungen) auf die Ein/Aus-Schaltfläche Enable webhook (Webhook aktivieren).
- Wählen Sie Google Chat Response Adapter for Webhook aus.
- Setzen Sie tag auf
arbitrary_tag. - Klicken Sie auf Speichern.

Test-App
- Senden Sie in Google Chat
What is Google Chat?in einer Direktnachricht an die Google Chat App. Der Agent antwortet mit einer sinnvollen Antwort und einer Karte mit Quellen, falls vorhanden.

10. App 3: Build
Konzepte ansehen
Konversationelle Interaktionen
Sie sind der Austausch von Informationen oder Ideen zwischen zwei oder mehr Personen in natürlicher Sprache. Im Gegensatz dazu basieren technische Schnittstellen oft auf zustandslosen, hochstrukturierten und intoleranten Austauschvorgängen.
OpenAPI-Spezifikation
Sie bietet eine einheitliche Möglichkeit, Informationen durch jede Phase des API-Lebenszyklus zu transportieren. Es handelt sich um eine Spezifikationssprache für HTTP-APIs, die Struktur und Syntax so definiert, dass sie nicht an die Programmiersprache gebunden ist, in der die API erstellt wird. API-Spezifikationen werden in der Regel in YAML oder JSON geschrieben, sodass sie einfach weitergegeben und verwendet werden können.
Dialogflow CX-Agent
Der grundlegende Baustein von Agent-Apps. Eine Agent-App hat in der Regel viele Agents, wobei jeder Agent für die Bearbeitung bestimmter Aufgaben definiert ist. Die Agentendaten werden dem LLM zur Verfügung gestellt, damit es die Informationen hat, die es zum Beantworten von Fragen und Ausführen von Aufgaben benötigt. Jeder Agent kann Informationen bereitstellen, Anfragen an externe Dienste senden oder die Unterhaltung an einen Dialogflow CX-Ablauf oder einen anderen Agenten zur Bearbeitung von untergeordneten Aufgaben weiterleiten.
Dialogflow CX-Tool
Tools werden verwendet, um Agent-Apps mit externen Systemen zu verbinden. Diese Systeme können das Wissen von Agent-Apps erweitern und ihnen ermöglichen, komplexe Aufgaben effizient auszuführen.
Architektur prüfen

Diese Google Chat-App wurde mit Dialogflow CX erstellt und funktioniert so:
- Ein Nutzer sendet eine Nachricht an die App, entweder in einer Direktnachricht oder in einem Gruppenbereich.
- Die Nachricht wird von der App verarbeitet, die ein Dialogflow CX-Agent ist und mit einem Google Cloud-Projekt verknüpft ist.
- Die App ist in einen Agent eingebunden.
- Die App sendet eine synchrone Antwort, entweder in einer Direktnachricht oder im ursprünglichen Gruppenbereich.
Flows überprüfen
Rezensionen sammeln

Quellcode prüfen
Der einzige Quellcode, den Sie benötigen, ist die Funktion zum Simulieren des Backend-Dienstes, den der Agent als Tool verwendet.
package.json
// The function relies on the Cloud Functions framework to run.
{
"name": "feedback-app-backend",
"version": "0.0.1",
"dependencies": {
"@google-cloud/functions-framework": "^3.0.0"
},
...
}
index.js
/**
* Handles all incoming requests.
*
* It always returns OK in plain text.
*/
functions.http('feedback-app-backend', (request, response) => {
response.send('OK');
});
service-openapi.yaml
// Defines the backend service structure and how to request it.
openapi: 3.1.0
info:
title: Review Store
license:
name: Apache 2.0
identifier: Apache-2.0
version: 0.0.1
servers:
- url: https://us-central1-project-0.cloudfunctions.net
paths:
/store-review:
post:
operationId: storeReview
summary: Store a new review
requestBody:
content:
application/json:
schema:
type: object
properties:
stars:
type: integer
format: int64
responses:
'200':
description: success
content:
application/json:
schema:
type: string
Backend-Dienst-Mock initiieren
Sie stellen eine Cloud-Funktion bereit, um einen Backend-Dienst zu simulieren, den die Dialogflow CX-Agent-App als Tool einbinden und aufrufen muss.
Gehen Sie in der Google Cloud Console so vor:
- Klicken Sie auf das Dreistrich-Menü ☰ > Cloud Functions.
- Klicken Sie auf Funktion erstellen.
- Legen Sie unter Grundeinstellungen für name den Wert
function-2fest. - Wählen Sie unter Authentifizierung das Optionsfeld Nicht authentifizierte Aufrufe zulassen aus.
- Legen Sie unter Laufzeit, Build, Verbindungen und Sicherheitseinstellungen für Maximale Anzahl von Instanzen den Wert
3fest. - Klicken Sie auf Weiter.

- Legen Sie
feedback-app-backendals Einstiegspunkt fest. - Ersetzen Sie den Standardinhalt durch die Dateien package.json und index.js.
- Klicken Sie auf Bereitstellen.

- Kopieren Sie die URL und warten Sie einige Minuten, bis die Funktion bereitgestellt wird.
Dialogflow CX-Agent-App erstellen
App erstellen
Gehen Sie in der Google Cloud Console so vor:
- Klicken Sie auf das Dreistrich-Menü ☰ > Agent Builder > Apps.
- Klicken Sie auf Neue Anwendung.
- Wählen Sie Agent aus.
- Legen Sie als Anzeigename
Feedback Appfest. - Klicken Sie auf Erstellen.

Tool starten
Gehen Sie in der Google Cloud Console so vor:
- Klicken Sie auf das Dreistrich-Menü ☰ > Agent Builder > Apps.
- Wählen Sie den Feedback App-Agent aus.
- Klicken Sie auf Tools > + Erstellen.
- Legen Sie als Name
reviewfest. - Wählen Sie OpenAPI aus.
- Legen Sie für description den folgenden Wert fest:
The tool takes the number of stars as a parameter of the store review method and saves it in a database for later use.
- Laden Sie die Datei service-openapi.yaml herunter und ersetzen Sie
$URLdurch die URL, die Sie zuvor kopiert haben. - Legen Sie
YAML Schemaauf den bearbeiteten Inhalt der Dateiservice-openapi.yamlfest. - Klicken Sie auf Speichern.

Agent initiieren
Gehen Sie in der Google Cloud Console so vor:
- Klicken Sie auf das Dreistrich-Menü ☰ > Agent Builder > Apps.
- Wählen Sie den Feedback App-Agent aus.
- Wählen Sie Agents > Standard-Generative AI-Agent aus.
- Legen Sie Name des Kundenservicemitarbeiters auf
Feedback collectorfest. - Legen Sie
goalauf den folgenden Wert fest:
You are an agent that collects reviews from Google Chat app developers. A review may be between 0 and 5 stars. The more stars, the more positive the review.
- Legen Sie für instructions den folgenden Wert fest:
If the developer didn't provide the number of stars, ask for the number of stars.
After the developer provides the number of stars of the review, confirm the number with the developer and use ${TOOL: review} to store the review with the number of stars.
If ${TOOL: review} fails, apologize and ask to try again later. Otherwise, thank the developer for the review.
- Klicken Sie auf Speichern.

Test-App
Gehen Sie in der Google Cloud Console so vor:
- Klicken Sie auf das Dreistrich-Menü ☰ > Agent Builder > Apps.
- Wählen Sie den Feedback App-Agent aus.
- Rufen Sie Agent in der Vorschau ansehen auf.
- Wählen Sie unter Agent die Option Feedback collector aus.
- Wählen Sie unter Generatives Modell auswählen die Option gemini-pro aus.
- Senden Sie die Nachricht
Hello!, um zu beginnen.

Gehen Sie in der Google Cloud Console so vor:
- Klicken Sie auf das Dreistrich-Menü ☰ > Cloud Functions.
- Wählen Sie function-2 > Logs aus. In einigen Protokollen wird Google Dialogflow als Anrufer angezeigt.

Google Chat App einbinden
Führen Sie in der Dialogflow CX Console die folgenden Schritte aus:
- Wählen Sie Ihr Google Cloud-Projekt aus.
- Klicken Sie auf das Aktionsmenü des
Feedback App-Agenten. - Klicken Sie auf Namen kopieren.
Gehen Sie in der Google Cloud Console so vor:
- Rufen Sie die Google Chat API-Konfiguration auf.
- Legen Sie Agent or Environment resource name auf den Agent-Namen fest, den Sie zuvor kopiert haben.

- Senden Sie in Google Chat
Hello!in einer Direktnachricht an die Google Chat App, um zu beginnen. Der Agent antwortet ähnlich wie bei Ihrem Test in der Dialogflow CX-Konsole.

11. Bereinigen
Google Cloud-Projekt löschen
Damit Ihrem Google Cloud-Konto die in diesem Codelab verwendeten Ressourcen nicht in Rechnung gestellt werden, empfehlen wir, das Google Cloud-Projekt zu löschen.
Gehen Sie in der Google Cloud Console so vor:
- Klicken Sie auf das Menü ☰ > IAM & Verwaltung > Einstellungen.
- Klicken Sie auf Beenden.
- Geben Sie die Projekt-ID ein.
- Klicken Sie auf Trotzdem beenden.

Apps Script-Projekt löschen
Wir empfehlen, auch Ihr Apps Script-Projekt zu löschen.
Führen Sie in der Apps Script Console die folgenden Schritte aus:
- Wählen Sie Ihr Projekt aus.
- Klicken Sie auf das Aktionsmenü.
- Klicken Sie auf Entfernen.

12. Glückwunsch
Glückwunsch! Sie haben Google Chat-Apps mit Gemini entwickelt.
Nächste Schritte
In diesem Codelab haben wir nur einfache Anwendungsfälle vorgestellt. Es gibt jedoch viele Erweiterungsbereiche, die Sie in Ihren Google Chat-Apps berücksichtigen sollten, z. B.:
- Integration mit anderen Modellen für generative KI, einschließlich benutzerdefinierter Modelle
- Unterstützung anderer Medientypen wie Audio, Bild und Video.
- Multimodalität nutzen
- Verlassen Sie sich auf längere Kontextfenster und Feedbackschleifen.
- Veröffentlichen Sie produktionsreife Google Chat-Apps im Marketplace. Für Entwickler stehen viele Ressourcen zur Verfügung, z. B. YouTube-Videos, Dokumentationswebsites, Codebeispiele und Tutorials.
- Aktivieren Sie Google Chat für Ihre Organisation. Die Funktion „Importmodus“ erleichtert den Einstieg.
Weitere Informationen
- Dokumentationswebsite für Entwickler für Google Chat
- Google Chat- und Dialogflow CX-Integration
- GitHub-Repository für alle Google Chat-Beispiele
- Google Chat-Importmodus
- Dokumentationswebsite für Entwickler für Apps Script
- YouTube-Kanal für Google Workspace-Entwickler
- Google Cloud Developer Center
- Modelle für generative KI
- Benutzerdefinierte generative KI-Modelle
- Lange Kontextfenster für generative KI
- Feedbackschleife für generative KI


