Mit Google Chat, Vertex AI und Apps Script auf Vorfälle reagieren

In dieser Anleitung erfahren Sie, wie Sie eine Google Chat-App erstellen, die in Echtzeit auf Vorfälle reagieren. Wenn die App auf einen Vorfall reagiert, erstellt und füllt einen Chatbereich, erleichtert Vorfälle. mit Meldungen, Slash-Befehlen und Dialogfeldern und nutzt KI für Zusammenfassungen die Reaktion auf Vorfälle in einem Google Docs-Dokument.

Ein Vorfall ist ein Ereignis, das die sofortige Aufmerksamkeit eines Teams erfordert. zu klären. Beispiele für Vorfälle:

  • In einem CRM-System (Customer-Relationship-Management) wird eine zeitkritische Anfrage erstellt. Plattform, bei der ein Serviceteam zusammen an einer Lösung arbeiten muss.
  • Ein System geht offline und eine Gruppe von Site Reliability Engineers (SREs) wird benachrichtigt damit sie es gemeinsam wieder online bringen können.
  • Ein schweres Erdbeben erleidet, und Rettungskräfte benötigen um die Reaktion zu koordinieren.

Im Rahmen dieser Anleitung wird die Vorfallbenachrichtigung gestartet, meldet den Vorfall mit einem Klick auf eine Schaltfläche auf einer Webseite. Die Webseite simuliert indem Sie die Nutzer auffordern, grundlegende Informationen zum Vorfall einzugeben: Titel, eine Beschreibung und die E-Mail-Adressen der Teilnehmer.

Sehen Sie sich die Chat-App für das Vorfallmanagement in Aktion an:

  • <ph type="x-smartling-placeholder">
    </ph> Die Website, die einen Vorfall auslöst.
    Abbildung 1: Die Website, auf der jemand einen Vorfall melden kann.
  • Benachrichtigung, dass der Chatbereich für den Vorfall erstellt wurde.
    Abbildung 2: Benachrichtigung, dass der für den Vorfall vorbereitete Chatbereich erstellt wird.
  • Der Chatbereich für die Reaktion auf Vorfälle.
    Abbildung 3: Der Chatbereich für die Reaktion auf Vorfälle.
  • Beheben Sie den Vorfall mit einem Slash-Befehl.
    Abbildung 4: Vorfall mit einem Slash-Befehl beheben.
  • Dialogfeld zur Behebung von Vorfällen.
    Abbildung 5: Dialogfeld zur Behebung von Vorfällen.
  • Google Docs-Dokument zur Lösung von Vorfällen, das im Gruppenbereich freigegeben ist.
    Abbildung 6: Google Docs-Dokument zur Behebung von Vorfällen, das im Gruppenbereich freigegeben ist.
  • Google-Dokument mit der Zusammenfassung von KI-Vorfällen
    Abbildung 7: Das Google Docs-Dokument zur Zusammenfassung von KI-Vorfällen.

Vorbereitung

Wenn Sie eine dieser Voraussetzungen für Ihre Organisation aktivieren müssen, fragen Sie nach Ihren Google Workspace-Administrator, um sie zu aktivieren:

  • Unternehmen Google Workspace-Konto mit Zugriff auf Google Chat:
  • Muss Verzeichnis (Kontaktfreigabe) für Google Workspace aktiviert. Die Vorfall-App verwendet das Verzeichnis, um die Incident-Response-Experten nachzuschlagen, Kontaktdaten wie Name und E-Mail-Adresse. Incident-Response-Teams müssen Nutzer mit einem Google Chat-Konto sein in Ihrer Google Workspace-Organisation.

Zielsetzungen

  • Chat-App erstellen, die auf Vorfälle reagiert
  • So helfen Sie Nutzern, auf Vorfälle zu reagieren: <ph type="x-smartling-placeholder">
      </ph>
    • Erstellen von Antwortbereichen für Vorfälle
    • Nachrichten mit einer Zusammenfassung der Vorfälle und Antworten posten
    • Förderung der Zusammenarbeit durch interaktive Funktionen der Chat-App.
  • Unterhaltungen und Lösungen mit Vertex AI zusammenfassen.

Architektur

Das folgende Diagramm zeigt die Architektur von Google Workspace und Von der Vorfallreaktion verwendete Google Cloud-Ressourcen Google Chat App.

Architektur der Google Chat-Anwendung zur Reaktion auf Vorfälle

Die Architektur zeigt, wie die Vorfallreaktion Die Google Chat App verarbeitet einen Vorfall und eine Lösung.

  1. Ein Nutzer startet einen Vorfall über eine externe Website, die auf Apps Script.

  2. Die Website sendet eine asynchrone HTTP-Anfrage an den Google Chat App, die auch in Apps Script gehostet wird.

  3. Die Google Chat App verarbeitet die Anfrage:

    1. Mit dem Apps Script Admin SDK-Dienst können Teammitglieder wie Nutzer-ID und E-Mail-Adresse.

    2. Bei einer Reihe von HTTP-Anfragen an die Chat API über die „Apps Script Advanced Chat“, Incident Response Die Google Chat App erstellt einen Vorfall in Chat Gruppenbereich, füllt ihn mit Teammitgliedern und sendet eine Nachricht an den Gruppenbereich.

  4. Teammitglieder besprechen den Vorfall im Chatbereich.

  5. Ein Teammitglied ruft einen Slash-Befehl auf, um dem Vorfall.

    1. HTTP-Aufruf an die Chat API mit dem Apps Script Der erweiterte Chat-Dienst listet alle Nachrichten des Gruppenbereichs.

    2. Vertex AI empfängt die aufgeführten Nachrichten und generiert eine Zusammenfassung.

    3. Der Apps Script-Dienst DocumentApp erstellt ein Docs-Dokument und fügt die Zusammenfassung von Vertex AI zum Dokument.

    4. Google Chat App – Reaktion auf Vorfälle Chat API, um eine Nachricht mit einem Link zur Zusammenfassung zu senden Docs-Dokument.

Umgebung vorbereiten

In diesem Abschnitt erfahren Sie, wie Sie ein Google Cloud-Projekt für die Chat-App.

Google Cloud-Projekt erstellen

Google Cloud Console

  1. Öffnen Sie in der Google Cloud Console das Menü . &gt; IAM und Verwaltung &gt; Projekt erstellen.

    Zur Seite „Projekt erstellen“

  2. Geben Sie im Feld Projektname einen aussagekräftigen Namen für Ihr Projekt ein.

    Optional: Klicken Sie zum Bearbeiten der Projekt-ID auf Bearbeiten. Die Projekt-ID kann nicht geändert werden nachdem das Projekt erstellt wurde, wählen Sie also eine ID, die Ihren Anforderungen für die gesamte Lebensdauer des Projekt arbeiten.

  3. Klicken Sie im Feld Standort auf Durchsuchen, um die potenziellen Standorte für Ihr Projekt arbeiten. Klicken Sie danach auf Auswählen. <ph type="x-smartling-placeholder">
  4. Klicken Sie auf Erstellen. In der Google Cloud Console wird die Dashboard-Seite aufgerufen und Ihr Projekt wurde erstellt. innerhalb weniger Minuten.

gcloud-CLI

Greifen Sie in einer der folgenden Entwicklungsumgebungen auf die Google Cloud Befehlszeile („gcloud“):

  • Cloud Shell: Onlineterminal mit der gcloud CLI verwenden aktivieren Sie Cloud Shell.
    Cloud Shell aktivieren
  • Lokale Shell: So verwenden Sie eine lokale Entwicklungsumgebung: install und Initialisieren über die gcloud CLI.
    Verwenden Sie den Befehl „gcloud projects create“, um ein Cloud-Projekt zu erstellen:
    gcloud projects create PROJECT_ID
    Ersetzen Sie PROJECT_ID, indem Sie die ID für das Projekt festlegen, das Sie erstellen möchten.

Abrechnung für das Cloud-Projekt aktivieren

<ph type="x-smartling-placeholder">

Google Cloud Console

  1. Gehen Sie in der Google Cloud Console zu Abrechnung. Klicken Sie auf Menü &gt; Abrechnung &gt; Meine Projekte.

    Zur Abrechnung für meine Projekte

  2. Wählen Sie unter Organisation auswählen die Organisation aus, die mit Ihr Google Cloud-Projekt.
  3. Öffnen Sie in der Projektzeile das Menü Aktionen. (), klicken Sie auf Abrechnung ändern und wählen Sie Cloud-Rechnungskonto.
  4. Klicken Sie auf Konto festlegen.

gcloud-CLI

  1. Führen Sie folgenden Befehl aus, um verfügbare Rechnungskonten aufzulisten:
    gcloud billing accounts list
  2. Verknüpfen Sie ein Rechnungskonto mit einem Google Cloud-Projekt:
    gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die Projekt-ID für das Cloud-Projekt, für das Sie die Abrechnung aktivieren möchten.
    • BILLING_ACCOUNT_ID ist die ID des Rechnungskontos, mit dem eine Verknüpfung hergestellt werden soll. des Google Cloud-Projekts.

APIs aktivieren

Google Cloud Console

  1. Aktivieren Sie in der Google Cloud Console die Google Chat API, die Google Docs API, die Admin SDK API und die Vertex AI API.

    APIs aktivieren

  2. Aktivieren Sie die APIs in den richtigen Cloud-Projekt und klicken Sie dann auf Weiter.

  3. Aktivieren Sie die richtigen APIs und klicken Sie dann auf Aktivieren.

gcloud-CLI

  1. Legen Sie bei Bedarf das aktuelle Cloud-Projekt auf das von Ihnen erstellte fest. mit dem Befehl gcloud config set project:

    gcloud config set project PROJECT_ID
    

    Ersetzen Sie PROJECT_ID durch die Projekt-ID des Cloud-Projekt, das Sie erstellt haben.

  2. Google Chat API, Google Docs API, Admin SDK API und Vertex AI API aktivieren mit dem Befehl gcloud services enable:

    gcloud services enable chat.googleapis.com docs.googleapis.com admin.googleapis.com aiplatform.googleapis.com
    

Authentifizierung und Autorisierung einrichten

Durch Authentifizierung und Autorisierung kann das Zugriff auf Ressourcen der Chat-App in Google Workspace und Google Cloud, um eine Reaktion auf Vorfälle zu verarbeiten.

In dieser Anleitung veröffentlichen Sie die App intern, sodass Sie Platzhalter Informationen. Ersetzen Sie den Platzhalter, bevor Sie die App extern veröffentlichen. mit echten Informationen für den Zustimmungsbildschirm.

  1. Gehen Sie in der Google Cloud Console zu Menü &gt; APIs und Dienste &gt; OAuth-Zustimmungsbildschirm.

    Zum OAuth-Zustimmungsbildschirm

  2. Wählen Sie unter Nutzertyp die Option Intern aus und klicken Sie dann auf Erstellen.

  3. Geben Sie unter App-Name Incident Management ein.

  4. Wählen Sie unter Nutzer-Support-E-Mail Ihre E-Mail-Adresse oder eine geeignete Google-Gruppe.

  5. Geben Sie unter Kontaktdaten des Entwicklers Ihre E-Mail-Adresse ein.

  6. Klicken Sie auf Speichern und fortfahren.

  7. Klicken Sie auf Bereiche hinzufügen oder entfernen. Ein Steuerfeld mit einer Liste der Bereiche wird angezeigt für jede API, die Sie in Ihrem Cloud-Projekt aktiviert haben.

  8. Fügen Sie unter Bereiche manuell hinzufügen die folgenden Bereiche ein:

    • https://www.googleapis.com/auth/chat.spaces.create
    • https://www.googleapis.com/auth/chat.memberships
    • https://www.googleapis.com/auth/chat.memberships.app
    • https://www.googleapis.com/auth/chat.messages
    • https://www.googleapis.com/auth/documents
    • https://www.googleapis.com/auth/admin.directory.user.readonly
    • https://www.googleapis.com/auth/script.external_request
    • https://www.googleapis.com/auth/userinfo.email
    • https://www.googleapis.com/auth/cloud-platform
  9. Klicken Sie auf Zu Tabelle hinzufügen.

  10. Klicken Sie auf Aktualisieren.

  11. Klicken Sie auf Speichern und fortfahren.

  12. Sehen Sie sich die Zusammenfassung der App-Registrierung an und klicken Sie dann auf Zurück zum Dashboard.

Chat-App erstellen und bereitstellen

Im folgenden Abschnitt kopieren und aktualisieren Sie Apps Script-Projekt, das alle erforderlichen Anwendungen enthält Code für Ihre Chat-App ändern. Sie müssen den Code also nicht fügen Sie jede Datei ein.

Einige Funktionen stehen mit Unterstrichen am Ende des Namens, z. B.: processSlashCommand_() von ChatApp.gs. Mit dem Unterstrich wird die Funktion von der Webseite zur Initialisierung des Vorfalls ein, wenn diese in einem Browser geöffnet ist. Weitere Informationen finden Sie unter Private Funktionen:

Apps Script unterstützt zwei Dateitypen: .gs-Scripts und .html Dateien. Zur Erfüllung dieser Unterstützung ist das clientseitige JavaScript der App enthalten innerhalb von <script />-Tags und der zugehörige CSS-Code innerhalb von <style />-Tags innerhalb eine HTML-Datei.

Optional können Sie das gesamte Projekt auf GitHub ansehen.

Auf GitHub ansehen

Hier ein Überblick über die einzelnen Dateien:

Consts.gs

Definiert Konstanten, auf die von anderen Codedateien verwiesen wird, einschließlich der Cloud-Projekt-ID, der Vertex AI-Standort-ID und der Slash-Befehls-ID zum Schließen eines Vorfalls.

Consts.gs-Code ansehen

apps-script/incident-response/Consts.gs
const PROJECT_ID = 'replace-with-your-project-id';
const VERTEX_AI_LOCATION_ID = 'us-central1';
const CLOSE_INCIDENT_COMMAND_ID = 1;
ChatApp.gs

Verarbeitet Chat-Interaktionsereignisse, einschließlich Nachrichten, Klicks auf Karten, Slash-Befehle und Dialogfelder. Reagiert auf den Slash-Befehl /closeIncident durch Öffnen eines Dialogfelds zum Erfassen des Vorfalls Details zur Lösung des Problems. Nachrichten im Gruppenbereich durch Aufrufen der spaces.messages.list-Methode in der Chat API. Ruft Nutzer-IDs über den Admin SDK Directory-Dienst in Apps Script.

ChatApp.gs-Code ansehen

apps-script/incident-response/ChatApp.gs
/**
 * Responds to a MESSAGE event in Google Chat.
 *
 * This app only responds to a slash command with the ID 1 ("/closeIncident").
 * It will respond to any other message with a simple "Hello" text message.
 *
 * @param {Object} event the event object from Google Chat
 */
function onMessage(event) {
  if (event.message.slashCommand) {
    return processSlashCommand_(event);
  }
  return { "text": "Hello from Incident Response app!" };
}

/**
 * Responds to a CARD_CLICKED event in Google Chat.
 *
 * This app only responds to one kind of dialog (Close Incident).
 *
 * @param {Object} event the event object from Google Chat
 */
function onCardClick(event) {
  if (event.isDialogEvent) {
    if (event.dialogEventType == 'SUBMIT_DIALOG') {
      return processSubmitDialog_(event);
    }
    return {
      actionResponse: {
        type: "DIALOG",
        dialogAction: {
          actionStatus: "OK"
        }
      }
    };
  }
}

/**
 * Responds to a MESSAGE event with a Slash command in Google Chat.
 *
 * This app only responds to a slash command with the ID 1 ("/closeIncident")
 * by returning a Dialog.
 *
 * @param {Object} event the event object from Google Chat
 */
function processSlashCommand_(event) {
  if (event.message.slashCommand.commandId != CLOSE_INCIDENT_COMMAND_ID) {
    return {
      "text": "Command not recognized. Use the command `/closeIncident` to close the incident managed by this space."
    };
  }
  const sections = [
    {
      header: "Close Incident",
      widgets: [
        {
          textInput: {
            label: "Please describe the incident resolution",
            type: "MULTIPLE_LINE",
            name: "description"
          }
        },
        {
          buttonList: {
            buttons: [
              {
                text: "Close Incident",
                onClick: {
                  action: {
                    function: "closeIncident"
                  }
                }
              }
            ]
          }
        }
      ]
    }
  ];
  return {
    actionResponse: {
      type: "DIALOG",
      dialogAction: {
        dialog: {
          body: {
            sections,
          }
        }
      }
    }
  };
}

/**
 * Responds to a CARD_CLICKED event with a Dialog submission in Google Chat.
 *
 * This app only responds to one kind of dialog (Close Incident).
 * It creates a Doc with a summary of the incident information and posts a message
 * to the space with a link to the Doc.
 *
 * @param {Object} event the event object from Google Chat
 */
function processSubmitDialog_(event) {
  const resolution = event.common.formInputs.description[""].stringInputs.value[0];
  const chatHistory = concatenateAllSpaceMessages_(event.space.name);
  const chatSummary = summarizeChatHistory_(chatHistory);
  const docUrl = createDoc_(event.space.displayName, resolution, chatHistory, chatSummary);
  return {
    actionResponse: {
      type: "NEW_MESSAGE",
    },
    text: `Incident closed with the following resolution: ${resolution}\n\nHere is the automatically generated post-mortem:\n${docUrl}`
  };
}

/**
 * Lists all the messages in the Chat space, then concatenate all of them into
 * a single text containing the full Chat history.
 *
 * For simplicity for this demo, it only fetches the first 100 messages.
 *
 * Messages with slash commands are filtered out, so the returned history will
 * contain only the conversations between users and not app command invocations.
 *
 * @return {string} a text containing all the messages in the space in the format:
 *          Sender's name: Message
 */
function concatenateAllSpaceMessages_(spaceName) {
  // Call Chat API method spaces.messages.list
  const response = Chat.Spaces.Messages.list(spaceName, { 'pageSize': 100 });
  const messages = response.messages;
  // Fetch the display names of the message senders and returns a text
  // concatenating all the messages.
  let userMap = new Map();
  return messages
    .filter(message => message.slashCommand === undefined)
    .map(message => `${getUserDisplayName_(userMap, message.sender.name)}: ${message.text}`)
    .join('\n');
}

/**
 * Obtains the display name of a user by using the Admin Directory API.
 *
 * The fetched display name is cached in the provided map, so we only call the API
 * once per user.
 *
 * If the user does not have a display name, then the full name is used.
 *
 * @param {Map} userMap a map containing the display names previously fetched
 * @param {string} userName the resource name of the user
 * @return {string} the user's display name
 */
function getUserDisplayName_(userMap, userName) {
  if (userMap.has(userName)) {
    return userMap.get(userName);
  }
  let displayName = 'Unknown User';
  try {
    const user = AdminDirectory.Users.get(
      userName.replace("users/", ""),
      { projection: 'BASIC', viewType: 'domain_public' });
    displayName = user.name.displayName ? user.name.displayName : user.name.fullName;
  } catch (e) {
    // Ignore error if the API call fails (for example, because it's an
    // out-of-domain user or Chat app)) and just use 'Unknown User'.
  }
  userMap.set(userName, displayName);
  return displayName;
}
ChatSpaceCreator.gs

Erhält Formulardaten, die Nutzer bei dem Vorfall eingeben Initialisierungswebseite zum Einrichten einer Chat-Nachricht indem Sie ihn erstellen und ausfüllen, und anschließend eine Nachricht zur Vorfall.

ChatSpaceCreator.gs-Code ansehen

apps-script/incident-response/ChatSpaceCreator.gs
/**
 * Creates a space in Google Chat with the provided title and members, and posts an
 * initial message to it.
 *
 * @param {Object} formData the data submitted by the user. It should contain the fields
 *                          title, description, and users.
 * @return {string} the resource name of the new space.
 */
function createChatSpace(formData) {
  const users = formData.users.trim().length > 0 ? formData.users.split(',') : [];
  const spaceName = setUpSpace_(formData.title, users);
  addAppToSpace_(spaceName);
  createMessage_(spaceName, formData.description);
  return spaceName;
}

/**
 * Creates a space in Google Chat with the provided display name and members.
 *
 * @return {string} the resource name of the new space.
 */
function setUpSpace_(displayName, users) {
  const memberships = users.map(email => ({
    member: {
      name: `users/${email}`,
      type: "HUMAN"
    }
  }));
  const request = {
    space: {
      displayName: displayName,
      spaceType: "SPACE",
      externalUserAllowed: true
    },
    memberships: memberships
  };
  // Call Chat API method spaces.setup
  const space = Chat.Spaces.setup(request);
  return space.name;
}

/**
 * Adds this Chat app to the space.
 *
 * @return {string} the resource name of the new membership.
 */
function addAppToSpace_(spaceName) {
  const request = {
    member: {
      name: "users/app",
      type: "BOT"
    }
  };
  // Call Chat API method spaces.members.create
  const membership = Chat.Spaces.Members.create(request, spaceName);
  return membership.name;
}

/**
 * Posts a text message to the space on behalf of the user.
 *
 * @return {string} the resource name of the new message.
 */
function createMessage_(spaceName, text) {
  const request = {
    text: text
  };
  // Call Chat API method spaces.messages.create
  const message = Chat.Spaces.Messages.create(request, spaceName);
  return message.name;
}
DocsApi.gs

Ruft das Google Docs-API auf, um ein Google Docs-Dokument in einem eine Zusammenfassung der Informationen zum Vorfall erstellt, in VertexAiApi.gs erstellt, in das Dokument.

DocsApi.gs-Code ansehen

apps-script/incident-response/DocsApi.gs
/**
 * Creates a Doc in the user's Google Drive and writes a summary of the incident information to it.
 *
 * @param {string} title The title of the incident
 * @param {string} resolution Incident resolution described by the user
 * @param {string} chatHistory The whole Chat history be included in the document
 * @param {string} chatSummary A summary of the Chat conversation to be included in the document
 * @return {string} the URL of the created Doc
 */
function createDoc_(title, resolution, chatHistory, chatSummary) {
  let doc = DocumentApp.create(title);
  let body = doc.getBody();
  body.appendParagraph(`Post-Mortem: ${title}`).setHeading(DocumentApp.ParagraphHeading.TITLE);
  body.appendParagraph("Resolution").setHeading(DocumentApp.ParagraphHeading.HEADING1);
  body.appendParagraph(resolution);
  body.appendParagraph("Summary of the conversation").setHeading(DocumentApp.ParagraphHeading.HEADING1);
  body.appendParagraph(chatSummary);
  body.appendParagraph("Full Chat history").setHeading(DocumentApp.ParagraphHeading.HEADING1);
  body.appendParagraph(chatHistory);
  return doc.getUrl();
}
VertexAiApi.gs

Fasst die Unterhaltung im Chat zusammen mit Vertex AI. Diese Zusammenfassung wird in einem eigens erstellten Dokument in DocsAPI.gs.

VertexAiApi.gs-Code ansehen

apps-script/incident-response/VertexAiApi.gs
/**
 * Summarizes a Chat conversation using the Vertex AI text prediction API.
 *
 * @param {string} chatHistory The Chat history that will be summarized.
 * @return {string} The content from the text prediction response.
 */
function summarizeChatHistory_(chatHistory) {
  const prompt =
    "Summarize the following conversation between Engineers resolving an incident"
      + " in a few sentences. Use only the information from the conversation.\n\n"
      + chatHistory;
  const request = {
    instances: [
      { prompt: prompt }
    ],
    parameters: {
      temperature: 0.2,
      maxOutputTokens: 256,
      topK: 40,
      topP: 0.95
    }
  }
  const fetchOptions = {
    method: 'POST',
    headers: { Authorization: 'Bearer ' + ScriptApp.getOAuthToken() },
    contentType: 'application/json',
    payload: JSON.stringify(request)
  }
  const response = UrlFetchApp.fetch(
    `https://${VERTEX_AI_LOCATION_ID}-aiplatform.googleapis.com/v1`
      + `/projects/${PROJECT_ID}/locations/${VERTEX_AI_LOCATION_ID}`
      + "/publishers/google/models/text-bison:predict",
    fetchOptions);
  const payload = JSON.parse(response.getContentText());
  return payload.predictions[0].content;
}
WebController.gs

Bedient die Website zur Initialisierung der Vorfälle.

WebController.gs-Code ansehen

apps-script/incident-response/WebController.gs
/**
 * Serves the web page from Index.html.
 */
function doGet() {
  return HtmlService
    .createTemplateFromFile('Index')
    .evaluate();
}

/**
 * Serves the web content from the specified filename.
 */
function include(filename) {
  return HtmlService
    .createHtmlOutputFromFile(filename)
    .getContent();
}

/**
 * Returns the email address of the user running the script.
 */
function getUserEmail() {
  return Session.getActiveUser().getEmail();
}
Index.html

Der HTML-Code, in dem die Website zur Initialisierung des Vorfalls verwendet wird

Index.html-Code ansehen

apps-script/incident-response/Index.html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <link href='https://fonts.googleapis.com/css?family=Roboto' rel='stylesheet'>
    <?!= include('Stylesheet'); ?>
  </head>
  <body>
    <div class="container">
      <div class="content">
        <h1>Incident Manager</h1>
        <form id="incident-form" onsubmit="handleFormSubmit(this)">
          <div id="form">
            <p>
              <label for="title">Incident title</label><br/>
              <input type="text" name="title" id="title" />
            </p>
            <p>
              <label for="users">Incident responders</label><br/>
              <small>
                Please enter a comma-separated list of email addresses of the users
                that should be added to the space.
                Do not include <?= getUserEmail() ?> as it will be added automatically.
              </small><br/>
              <input type="text" name="users" id="users" />
            </p>
            <p>
              <label for="description">Initial message</label></br>
              <small>This message will be posted after the space is created.</small><br/>
              <textarea name="description" id="description"></textarea>
            </p>
            <p class="text-center">
              <input type="submit" value="CREATE CHAT SPACE" />
            </p>
          </div>
          <div id="output" class="hidden"></div>
          <div id="clear" class="hidden">
            <input type="reset" value="CREATE ANOTHER INCIDENT" onclick="onReset()" />
          </div>
        </form>
      </div>
    </div>
    <?!= include('JavaScript'); ?>
  </body>
</html>
JavaScript.html

Verarbeitet Formularverhalten, einschließlich Senden, Fehler und Löschungen für die Website zur Initialisierung des Vorfalls. Inbegriffen durch die benutzerdefinierte include-Funktion in WebController.gs in Index.html.

JavaScript.html-Code ansehen

apps-script/incident-response/JavaScript.html
<script>
  var formDiv = document.getElementById('form');
  var outputDiv = document.getElementById('output');
  var clearDiv = document.getElementById('clear');

  function handleFormSubmit(formObject) {
    event.preventDefault();
    outputDiv.innerHTML = 'Please wait while we create the space...';
    hide(formDiv);
    show(outputDiv);
    google.script.run
      .withSuccessHandler(updateOutput)
      .withFailureHandler(onFailure)
      .createChatSpace(formObject);
  }

  function updateOutput(response) {
    var spaceId = response.replace('spaces/', '');
    outputDiv.innerHTML =
      '<p>Space created!</p><p><a href="https://mail.google.com/chat/#chat/space/'
        + spaceId
        + '" target="_blank">Open space</a></p>';
    show(outputDiv);
    show(clearDiv);
  }

  function onFailure(error) {
    outputDiv.innerHTML = 'ERROR: ' + error.message;
    outputDiv.classList.add('error');
    show(outputDiv);
    show(clearDiv);
  }

  function onReset() {
    outputDiv.innerHTML = '';
    outputDiv.classList.remove('error');
    show(formDiv);
    hide(outputDiv);
    hide(clearDiv);
  }

  function hide(element) {
    element.classList.add('hidden');
  }

  function show(element) {
    element.classList.remove('hidden');
  }
</script>
Stylesheet.html

Das CSS für die Website zur Initialisierung des Vorfalls Es ist durch die benutzerdefinierte Funktion include in Index.html aufgenommen WebController.gs

Stylesheet.html-Code ansehen

apps-script/incident-response/Stylesheet.html
<style>
  * {
    box-sizing: border-box;
  }
  body {
    font-family: Roboto, Arial, Helvetica, sans-serif;
  }
  div.container {
    display: flex;
    justify-content: center;
    align-items: center;
    position: absolute;
    top: 0; bottom: 0; left: 0; right: 0;
  }
  div.content {
    width: 80%;
    max-width: 1000px;
    padding: 1rem;
    border: 1px solid #999;
    border-radius: 0.25rem;
    box-shadow: 0 2px 2px 0 rgba(66, 66, 66, 0.08), 0 2px 4px 2px rgba(66, 66, 66, 0.16);
  }
  h1 {
    text-align: center;
    padding-bottom: 1rem;
    margin: 0 -1rem 1rem -1rem;
    border-bottom: 1px solid #999;
  }
 #output {
    text-align: center;
    min-height: 250px;
  }
  div#clear {
    text-align: center;
    padding-top: 1rem;
    margin: 1rem -1rem 0 -1rem;
    border-top: 1px solid #999;
  }
  input[type=text], textarea {
    width: 100%;
    padding: 1rem 0.5rem;
    margin: 0.5rem 0;
    border: 0;
    border-bottom: 1px solid #999;
    background-color: #f0f0f0;
  }
  textarea {
    height: 5rem;
  }
  small {
    color: #999;
  }
  input[type=submit], input[type=reset] {
    padding: 1rem;
    border: none;
    background-color: #6200ee;
    color: #fff;
    border-radius: 0.25rem;
    width: 25%;
  }
  .hidden {
    display: none;
  }
  .text-center {
    text-align: center;
  }
  .error {
    color: red;
  }
</style>

Nummer und ID Ihres Cloud-Projekts ermitteln

  1. Rufen Sie in der Google Cloud Console Ihr Cloud-Projekt auf.

    Zur Google Cloud Console

  2. Klicke auf Einstellungen und Dienstprogramme. &gt; Projekteinstellungen.

  3. Notieren Sie sich die Werte in den Feldern Projektnummer und Projekt-ID. Ich in den folgenden Abschnitten.

Apps Script-Projekt erstellen

Um ein Apps Script-Projekt zu erstellen und mit Ihrem Cloud-Projekt:

  1. Klicken Sie auf die folgende Schaltfläche, um das Apps Script-Projekt Mit Google Chat auf Vorfälle reagieren zu öffnen.
    Projekt öffnen
  2. Klicken Sie auf Übersicht.
  3. Klicken Sie auf der Übersichtsseite auf Das Symbol zum Erstellen einer Kopie Kopie erstellen.
  4. Benennen Sie Ihre Kopie des Apps Script-Projekts:

    1. Klicken Sie auf Kopie von „Mit Google Chat auf Vorfälle reagieren“.

    2. Geben Sie unter Projekttitel Incident Management Chat app ein.

    3. Klicken Sie auf Umbenennen.

  5. Gehen Sie in Ihrer Kopie des Apps Script-Projekts zum Consts.gs und ersetzen Sie YOUR_PROJECT_ID durch die ID Ihres Cloud-Projekt

Cloud-Projekt des Apps Script-Projekts festlegen

  1. In Ihrem Apps Script-Projekt Klicken Sie auf Das Symbol für die Projekteinstellungen Projekteinstellungen.
  2. Klicken Sie unter Google Cloud Platform-Projekt (GCP-Projekt) auf Projekt ändern.
  3. Fügen Sie unter GCP-Projektnummer die Projektnummer Ihres Cloud-Projekts ein.
  4. Klicken Sie auf Projekt festlegen. Cloud-Projekt und Apps Script sind jetzt verbunden.

Apps Script-Bereitstellung erstellen

Jetzt, wo der gesamte Code vorhanden ist, können Sie das Apps Script bereitstellen. Projekt arbeiten. Mit der Bereitstellungs-ID konfigurieren Sie die Chat-App in Google Cloud

  1. Öffnen Sie in Apps Script das Projekt der App zur Reaktion auf Vorfälle.

    Zu Apps Script

  2. Klicken Sie auf Bereitstellen > Neue Bereitstellung.

  3. Wenn Add-on und Web-App noch nicht ausgewählt sind, klicken Sie neben Wählen Sie den Typ aus, klicken Sie auf die Bereitstellungstypen Das Symbol für die Projekteinstellungen und wählen Sie dann Add-on und Web-App aus.

  4. Geben Sie unter Beschreibung eine Beschreibung für die Version ein, z. B. Complete version of incident management app

  5. Wählen Sie unter Ausführen als die Option Nutzer, der auf die Web-App zugreift aus.

  6. Wählen Sie unter Wer hat Zugriff? die Option Jeder in meiner Workspace-Organisation aus. wobei „Ihre Workspace-Organisation“ ist der Name Ihres Google Workspace-Organisation.

  7. Klicken Sie auf Bereitstellen. Apps Script-Berichte erfolgreich Bereitstellung und stellt eine Bereitstellungs-ID und eine URL für den Vorfall bereit Initialisierungswebseite.

  8. Notieren Sie sich die URL der Web-App. Diese rufen Sie später auf, wenn Sie einen Vorfall starten. Kopieren Sie die Bereitstellungs-ID. Sie verwenden diese ID bei der Konfiguration des Chat-App in der Google Cloud Console

  9. Klicken Sie auf Fertig.

Chat-App in der Google Cloud Console konfigurieren

In diesem Abschnitt erfahren Sie, wie Sie die Google Chat API in der Google Cloud Console konfigurieren mit Informationen zu Ihrer Chat-App, einschließlich der ID der Bereitstellung, die Sie gerade aus Ihrem Apps Script erstellt haben Projekt arbeiten.

  1. Klicken Sie in der Google Cloud Console auf das Dreistrich-Menü. &gt; Weitere Produkte &gt; Google Workspace &gt; Produktbibliothek &gt; Google Chat API &gt; Verwalten &gt; Konfiguration.

    Zur Chat API-Konfiguration

  2. Geben Sie unter App-Name Incident Management ein.

  3. Geben Sie unter Avatar-URL https://developers.google.com/chat/images/quickstart-app-avatar.png ein.

  4. Geben Sie unter Beschreibung Responds to incidents. ein.

  5. Stellen Sie die Ein/Aus-Schaltfläche Interaktive Funktionen aktivieren auf „Ein“.

  6. Wählen Sie unter Funktionen die Option 1:1-Nachrichten empfangen und Gruppenbereichen und Gruppenunterhaltungen beitreten aus.

  7. Wählen Sie unter Verbindungseinstellungen die Option Apps Script-Projekt aus.

  8. Fügen Sie unter Deployment ID (Bereitstellungs-ID) die Deployment-ID für Apps Script ein. die Sie zuvor aus dem Apps Script-Projekt kopiert haben, Bereitstellung.

  9. Registrieren Sie einen Slash-Befehl, die vollständig implementierte Chat-App nutzt:

    1. Klicken Sie unter Slash-Befehle auf Slash-Befehl hinzufügen.

    2. Geben Sie unter Name den Wert /closeIncident ein.

    3. Geben Sie unter Befehls-ID 1 ein.

    4. Geben Sie unter Beschreibung Closes the incident being discussed in the space.

    5. Wählen Sie Öffnet ein Dialogfeld aus.

    6. Klicken Sie auf Fertig. Der Slash-Befehl wird registriert und aufgeführt.

  10. Wähle unter Sichtbarkeit die Option Diese Chat-App für bestimmte Personen und Gruppen in Ihrem Workspace Domain und geben Sie Ihre E-Mail-Adresse ein.

  11. Wählen Sie unter Logs die Option Fehler in Logging protokollieren aus.

  12. Klicken Sie auf Speichern. Eine Meldung, dass die Konfiguration gespeichert ist, wird angezeigt, was bedeutet, dass die App testen können.

Chat App testen

Um die Chat-App für das Vorfallmanagement zu testen, initiieren Sie eine den Vorfall über die Webseite und vergewissern Sie sich, dass die Chat-App wie erwartet funktioniert:

  1. Rufen Sie die Webanwendungs-URL für die Apps Script-Bereitstellung auf.

  2. Wenn Apps Script Sie um Zugriff auf Ihre Daten bittet, Klicken Sie auf Berechtigungen prüfen und melden Sie sich mit einem geeigneten Google-Konto an. in Ihrer Google Workspace-Domain auf und klicken Sie auf Zulassen.

  3. Die Webseite zur Initialisierung des Vorfalls wird geöffnet. Testinformationen eingeben:

    1. Geben Sie unter Titel des Vorfalls The First Incident ein.
    2. Optional: Geben Sie unter Incident Responseers (Incident-Response-Teams) die E-Mail-Adressen der folgenden Personen ein: anderen Incident-Response-Teams nachzuvollziehen. Sie müssen Nutzer mit einer Google Chat-Konto in Ihrer Google Workspace-Organisation oder Fehler beim Erstellen des Gruppenbereichs. Geben Sie nicht Ihre eigene E-Mail-Adresse ein, automatisch eingeschlossen.
    3. Geben Sie unter Erste Nachricht Testing the incident management Chat app. ein.
  4. Klicken Sie auf Chatbereich erstellen. Die Meldung „creating space“ wird angezeigt.

  5. Nachdem der Gruppenbereich erstellt wurde, wird die Meldung Space created! angezeigt. Klicken Sie auf Gruppenbereich öffnen: Der Gruppenbereich wird in Google Chat in einem neuen Tab geöffnet.

  6. Optional können Sie und die anderen Incident-Response-Teams Nachrichten im Leerzeichen. Die Anwendung fasst diese Nachrichten mit Vertex AI zusammen und gibt Retrospektive dokumentieren können.

  7. Um die Reaktion auf Vorfälle zu beenden und den Lösungsprozess zu starten, klicken Sie in der Chatbereich, geben Sie „/closeIncident“ ein. Vorfallmanagement wird geöffnet.

  8. Geben Sie unter Vorfall schließen eine Beschreibung für die Lösung des Vorfalls ein. wie Test complete.

  9. Klicken Sie auf Vorfall schließen.

Die App „Vorfallmanagement“ listet die Nachrichten im Gruppenbereich auf und fasst sie zusammen mit Vertex AI, fügt die Zusammenfassung in ein Google Docs-Dokument ein und gibt im Projektbereich.

Bereinigen

Um zu vermeiden, dass Ihrem Google Cloud-Konto Gebühren für Ressourcen, die in dieser Anleitung verwendet werden, empfehlen wir, dass Sie den Cloud-Projekt

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten. Klicken Sie auf Menü &gt; IAM und Verwaltung &gt; Ressourcen verwalten.

    <ph type="x-smartling-placeholder"></ph> Zu Resource Manager

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie auf löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie zum Löschen auf Beenden. für das Projekt.