Google Chat, Vertex AI, और Apps Script की मदद से गड़बड़ियों का जवाब दें

इस ट्यूटोरियल में बताया गया है कि Google Chat ऐप्लिकेशन कैसे बनाया जाए समस्याओं पर रीयल टाइम में जवाब देती है. किसी घटना को प्रतिसाद देते समय, ऐप चैट स्पेस बनाता और पॉप्युलेट करता है, घटना को आसान बनाता है मैसेज, स्लैश कमांड, और डायलॉग की मदद से उनका समाधान किया जाता है. साथ ही, ख़ास जानकारी देने के लिए एआई का इस्तेमाल किया जाता है Google Docs दस्तावेज़ में घटना के बारे में जवाब दिया गया है.

घटना एक ऐसी घटना है जिस पर टीम को तुरंत कार्रवाई करने की ज़रूरत होती है समस्या हल नहीं करनी है. ऐसी घटनाओं के कुछ उदाहरण यहां दिए गए हैं:

  • कस्टमर रिलेशनशिप मैनेजमेंट (सीआरएम) में एक टाइम-सेंसिटिव केस बनाया जाता है इस प्लैटफ़ॉर्म पर, सेवा टीम को साथ मिलकर काम करने की ज़रूरत है.
  • ऑफ़लाइन काम करने वाला सिस्टम, साइट रिलायबिलिटी इंजीनियर (एसआरई) के एक ग्रुप को चेतावनी देता है ताकि वे इसे वापस ऑनलाइन लाने के लिए साथ मिलकर काम कर सकें.
  • बहुत तीव्रता का भूकंप आता है और आपातकालीन कर्मचारियों को चाहिए सिंक करने के लिए डिज़ाइन किया जा सकता है.

इस ट्यूटोरियल में बताया गया है कि घटना की चेतावनी तब शुरू होती है, जब कोई किसी वेब पेज से बटन क्लिक करके घटना की रिपोर्ट करती है. वेब पेज सिम्युलेट करता है उपयोगकर्ताओं से किसी घटना के बारे में बुनियादी जानकारी देने के लिए कहना: टाइटल, जवाब देने वालों का ब्यौरा और ईमेल पते.

इंसिडेंट मैनेजमेंट Chat ऐप्लिकेशन को इस्तेमाल करते हुए देखें:

  • किसी घटना को शुरू करने वाली वेबसाइट.
    पहली इमेज. वह वेबसाइट जहां कोई व्यक्ति किसी घटना की शिकायत कर सके.
  • सूचना पाएं कि इंसिडेंट के लिए चैट स्पेस बनाया गया. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
    दूसरी इमेज. सूचना पाएं कि इंसिडेंट के लिए चैट स्पेस बनाया गया.
  • घटना का जवाब देने के लिए Chat स्पेस. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
    तीसरी इमेज. घटना का जवाब देने के लिए Chat स्पेस.
  • स्लैश कमांड से घटना को हल करना. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
    चौथी इमेज. स्लैश कमांड की मदद से, घटना को हल करना.
  • समस्या को हल करने का डायलॉग. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
    पांचवीं इमेज. घटना के समाधान का डायलॉग.
  • स्पेस में शेयर किया गया, Google Docs दस्तावेज़ का इंसिडेंट रिज़ॉल्यूशन. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
    छठी इमेज. स्पेस में शेयर किया गया, Google Docs का दस्तावेज़, इंसिडेंट रिज़ॉल्यूशन.
  • एआई से मिली खास जानकारी को इंसिडेंट रिज़ॉल्यूशन से जुड़ा Google दस्तावेज़. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
    सातवीं इमेज. एआई की मदद से जनरेट की गई खास जानकारी को इंसिडेंट रिज़ॉल्यूशन वाला Google Docs दस्तावेज़.

ज़रूरी शर्तें

अगर आपको अपने संगठन के लिए, इनमें से किसी भी शर्त को चालू करना है, तो इनसे संपर्क करें आपका Google Workspace एडमिन, इसे चालू करने के लिए:

  • कारोबार या एंटरप्राइज़ Google Workspace खाता, जिसके पास इसका ऐक्सेस है Google Chat.
  • होना चाहिए डायरेक्ट्री Google Workspace के लिए, (संपर्क शेयर करने की सुविधा) की सुविधा चालू की गई. घटना की जानकारी देने वाला ऐप्लिकेशन, इस डायरेक्ट्री में, समस्या के समाधान में मदद करने वाले लोगों के बारे में जानकारी संपर्क जानकारी, जैसे कि नाम और ईमेल पता होता है. यह ज़रूरी है कि आपातकालीन स्थिति में मदद करने वाले लोग, Google Chat का इस्तेमाल करते हों आपके संगठन के Google Workspace खाते में साइन इन करना है.

मकसद

  • घटनाओं के बारे में जवाब देने के लिए, कोई Chat ऐप्लिकेशन बनाएं.
  • नीचे दिए गए काम करके, घटनाओं के ख़िलाफ़ कार्रवाई करने में उपयोगकर्ताओं की मदद करें:
    • घटना के जवाब में स्पेस बनाना.
    • घटनाओं और जवाबों के बारे में खास जानकारी देने वाले मैसेज पोस्ट करना.
    • इंटरैक्टिव सुविधाओं की मदद से, साथ मिलकर काम करना Chat ऐप्लिकेशन की सुविधाएं.
  • Vertex AI की मदद से, बातचीत और उसके समाधान के बारे में खास जानकारी दें.

आर्किटेक्चर

नीचे दिए गए डायग्राम में, Google Workspace और समस्या से निपटने के लिए, इस्तेमाल किए गए Google Cloud के संसाधन Google Chat ऐप्लिकेशन.

घटना के जवाब का आर्किटेक्चर Google Chat ऐप्लिकेशन

आर्किटेक्चर में दिखाया गया है कि घटना का जवाब कैसे दिया जाता है Google Chat ऐप्लिकेशन, किसी घटना और उसके समाधान को प्रोसेस करता है.

  1. जब कोई उपयोगकर्ता, होस्ट की गई बाहरी वेबसाइट से किसी घटना को शुरू करता है Apps Script.

  2. वेबसाइट एक एसिंक्रोनस एचटीटीपी अनुरोध Google Chat ऐप्लिकेशन, जिसे Apps Script पर भी होस्ट किया गया है.

  3. घटना के बाद Google Chat ऐप्लिकेशन, अनुरोध को प्रोसेस करता है:

    1. Apps Script एडमिन SDK टूल की सेवा को टीम का सदस्य मिलता है जानकारी, जैसे कि यूज़र आईडी और ईमेल पता.

    2. Chat API को एचटीटीपी अनुरोधों के एक सेट के साथ Apps Script बेहतर चैट सेवा, घटना का जवाब Google Chat ऐप्लिकेशन ने इंसिडेंट Chat बनाया स्पेस में बदलाव करके, उसे टीम के सदस्यों से जोड़ा जा सकता है. साथ ही, स्पेस में मैसेज भेजा जा सकता है.

  4. टीम के सदस्य, चैट स्पेस में घटना के बारे में चर्चा करते हुए.

  5. टीम का एक सदस्य, स्लैश कमांड का इस्तेमाल करके, घटना.

    1. Apps Script का इस्तेमाल करके, Chat API को एचटीटीपी कॉल किया जा रहा है बेहतर Chat सेवा में Google Chat की सभी सुविधाएं मौजूद होती हैं स्पेस के मैसेज.

    2. Vertex AI को सूची में दिए गए मैसेज मिलते हैं और उसके बाद वह खास जानकारी जनरेट करता है.

    3. Apps Script DocumentApp सेवा से, Docs, और Vertex AI's की खास जानकारी को दस्तावेज़.

    4. Google Chat ऐप्लिकेशन से मिलने वाले कॉल का रिस्पॉन्स खास जानकारी का लिंक शेयर करने वाला मैसेज भेजने के लिए Chat API दस्तावेज़ दस्तावेज़.

वातावरण को तैयार करना

इस सेक्शन में, Google Cloud प्रोजेक्ट को चैट ऐप्लिकेशन.

Google Cloud प्रोजेक्ट बनाना

Google Cloud कंसोल

  1. Google Cloud Console में, मेन्यू पर जाएं > IAM और एडमिन > प्रोजेक्ट बनाएं.

    'प्रोजेक्ट बनाएं' पर जाएं

  2. प्रोजेक्ट का नाम फ़ील्ड में, अपने प्रोजेक्ट की जानकारी देने वाला नाम डालें.

    ज़रूरी नहीं: प्रोजेक्ट आईडी में बदलाव करने के लिए, बदलाव करें पर क्लिक करें. प्रोजेक्ट आईडी बदला नहीं जा सकता तो ऐसा आईडी चुनें जो प्रोजेक्ट के आजीवन प्रोजेक्ट.

  3. स्थान फ़ील्ड में, अपने लिए संभावित स्थान देखने के लिए ब्राउज़ करें पर क्लिक करें प्रोजेक्ट. इसके बाद, चुनें पर क्लिक करें.
  4. बनाएं पर क्लिक करें. Google Cloud Console, डैशबोर्ड पेज पर जाता है और आपका प्रोजेक्ट बन जाता है कुछ ही मिनटों में.

gcloud सीएलआई

यहां दिए गए डेवलपमेंट एनवायरमेंट में से किसी एक में, Google Cloud को ऐक्सेस करें सीएलआई (`gcloud`):

  • Cloud Shell: gcloud सीएलआई के साथ ऑनलाइन टर्मिनल का इस्तेमाल करने के लिए पहले से सेट अप है, तो Cloud Shell को चालू करें.
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है Cloud Shell चालू करें
  • लोकल शेल: लोकल डेवलपमेंट एनवायरमेंट का इस्तेमाल करने के लिए, इंस्टॉल करें और शुरू करें gcloud सीएलआई.
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है Cloud प्रोजेक्ट बनाने के लिए, `gcloud प्रोजेक्ट create`कमांड का इस्तेमाल करें:
    gcloud projects create PROJECT_ID
    आपको जो प्रोजेक्ट बनाना है उसका आईडी सेट करके PROJECT_ID को बदलें.

Cloud प्रोजेक्ट के लिए बिलिंग की सुविधा चालू करना

Google Cloud कंसोल

  1. Google Cloud Console में, बिलिंग पर जाएं. क्लिक करें मेन्यू > बिलिंग > मेरे प्रोजेक्ट पर क्लिक करें.

    'मेरे प्रोजेक्ट के लिए बिलिंग' पर जाएं

  2. संगठन चुनें में जाकर, उस संगठन को चुनें जिससे जुड़ा है आपका Google Cloud प्रोजेक्ट.
  3. प्रोजेक्ट की लाइन में, कार्रवाइयां मेन्यू खोलें (), बिलिंग बदलें पर क्लिक करें और क्लाउड बिलिंग खाता.
  4. खाता सेट करें पर क्लिक करें.

gcloud सीएलआई

  1. उपलब्ध बिलिंग खातों की सूची बनाने के लिए, यह चलाएं:
    gcloud billing accounts list
  2. Google Cloud प्रोजेक्ट के साथ बिलिंग खाते को लिंक करने के लिए:
    gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID

    इन्हें बदलें:

    • PROJECT_ID इसका प्रोजेक्ट आईडी है वह Cloud प्रोजेक्ट जिसके लिए आपको बिलिंग की सुविधा चालू करनी है.
    • BILLING_ACCOUNT_ID, लिंक करने के लिए बिलिंग खाता आईडी है Google Cloud प्रोजेक्ट.

एपीआई चालू करें

Google Cloud कंसोल

  1. Google Cloud Console में, Google Chat API, Google Docs API, और Admin SDK API और Vertex AI API का इस्तेमाल कर सकते हैं.

    एपीआई चालू करना

  2. पुष्टि करें कि एपीआई को सही तरीके से चालू किया जा रहा है Cloud प्रोजेक्ट चुनें. इसके बाद, आगे बढ़ें पर क्लिक करें.

  3. पुष्टि करें कि आपने सही एपीआई चालू किए हैं. इसके बाद, चालू करें पर क्लिक करें.

gcloud सीएलआई

  1. अगर ज़रूरी हो, तो मौजूदा क्लाउड प्रोजेक्ट को अपने बनाए गए प्रोजेक्ट पर सेट करें gcloud config set project निर्देश का इस्तेमाल करके:

    gcloud config set project PROJECT_ID
    

    PROJECT_ID को इसके प्रोजेक्ट आईडी से बदलें आपका बनाया हुआ क्लाउड प्रोजेक्ट.

  2. Google Chat API, Google Docs API, Admin SDK API, और Vertex AI API को चालू करें gcloud services enable निर्देश का इस्तेमाल करके:

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

पुष्टि करने और अनुमति देने की सुविधा सेट अप करें

पुष्टि करने और अनुमति देने से Google Workspace में Chat ऐप्लिकेशन को ऐक्सेस करने के संसाधन और किसी घटना के जवाब को प्रोसेस करने के लिए Google Cloud.

इस ट्यूटोरियल में, आपने ऐप्लिकेशन को संगठन के अंदर ही पब्लिश किया है, ताकि प्लेसहोल्डर का इस्तेमाल किया जा सके जानकारी. ऐप्लिकेशन को संगठन के बाहर पब्लिश करने से पहले, प्लेसहोल्डर बदल दें सहमति वाली स्क्रीन के लिए असली जानकारी के साथ जानकारी.

  1. Google Cloud Console में, यहां जाएं मेन्यू > एपीआई और सेवाएं > OAuth की सहमति वाली स्क्रीन.

    उस स्क्रीन पर जाएं जहां OAuth के लिए सहमति दी जाती है

  2. उपयोगकर्ता टाइप में जाकर, इंटरनल चुनें. इसके बाद, बनाएं पर क्लिक करें.

  3. ऐप्लिकेशन का नाम में, Incident Management टाइप करें.

  4. उपयोगकर्ता सहायता ईमेल में, अपना ईमेल पता या कोई सही ईमेल पता चुनें Google ग्रुप.

  5. डेवलपर की संपर्क जानकारी में जाकर, अपना ईमेल पता डालें.

  6. सेव करें और जारी रखें पर क्लिक करें.

  7. स्कोप जोड़ें या हटाएं पर क्लिक करें. दायरों की सूची के साथ एक पैनल दिखता है हर एपीआई के लिए उपलब्ध है जिसे आपने Cloud प्रोजेक्ट में चालू किया है.

  8. मैन्युअल तरीके से स्कोप जोड़ें में जाकर, इन स्कोप को चिपकाएं:

    • 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. टेबल में जोड़ें पर क्लिक करें.

  10. अपडेट करें पर क्लिक करें.

  11. सेव करें और जारी रखें पर क्लिक करें.

  12. ऐप्लिकेशन रजिस्ट्रेशन की खास जानकारी देखें. इसके बाद, डैशबोर्ड पर वापस जाएं पर क्लिक करें.

Chat ऐप्लिकेशन बनाना और डिप्लॉय करना

यहां दिए गए सेक्शन में, आपने उस पूरे डेटा को कॉपी करके अपडेट किया Apps Script प्रोजेक्ट, जिसमें सभी ज़रूरी ऐप्लिकेशन शामिल हैं आपको चैट ऐप्लिकेशन का कोड मिलेगा, इसलिए आपको कोड को कॉपी करने की ज़रूरत नहीं है और हर फ़ाइल को चिपकाएं.

कुछ फ़ंक्शन के नाम के आखिर में अंडरस्कोर होते हैं, जैसे कि ChatApp.gs से processSlashCommand_(). अंडरस्कोर, फ़ंक्शन को छिपा देता है इंसिडेंट शुरू करने वाले वेब पेज से, जब यह किसी ब्राउज़र में खुला होता है. ज़्यादा के लिए जानकारी, देखें प्राइवेट फ़ंक्शन.

Apps Script में दो तरह की फ़ाइलें काम करती हैं: .gs स्क्रिप्ट और .html फ़ाइलें शामिल हैं. इस सहायता का पालन करने के लिए, ऐप्लिकेशन का क्लाइंट-साइड JavaScript शामिल किया जाता है <script /> टैग के अंदर और इसके सीएसएस को <style /> टैग के अंदर शामिल किया गया है HTML फ़ाइल होती है.

इसके अलावा, GitHub पर पूरा प्रोजेक्ट देखा जा सकता है.

GitHub पर देखें

यहां हर फ़ाइल की खास जानकारी दी गई है:

Consts.gs

अन्य कोड फ़ाइलों से रेफ़र किए गए कॉन्सटेंट के बारे में बताता है, इसमें आपका Cloud प्रोजेक्ट आईडी, Vertex AI लोकेशन आईडी, और स्लैश कमांड आईडी का इस्तेमाल करें.

Consts.gs कोड देखें

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

चैट इंटरैक्शन इवेंट को मैनेज करता है. इनमें ये इवेंट भी शामिल हैं मैसेज, कार्ड क्लिक, स्लैश कमांड, और डायलॉग. इस पर प्रतिक्रिया देता है: घटना की जानकारी पाने के लिए डायलॉग खोलकर /closeIncident स्लैश कमांड समस्या हल करने की जानकारी. स्पेस में मौजूद मैसेज पढ़ने के लिए, Chat API में spaces.messages.list तरीका. यहां एडमिन SDK डायरेक्ट्री सेवा का इस्तेमाल करके यूज़र आईडी मिलता है Apps Script.

ChatApp.gs कोड देखें

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

उस फ़ॉर्म का डेटा हासिल करता है जिसे उपयोगकर्ता घटना के बारे में डालते हैं वेब पेज को शुरू करता है और इसका इस्तेमाल चैट सेट अप करने में करता है स्पेस बना कर और उसमें अपने-आप जानकारी भर जाएगी और फिर घटना.

ChatSpaceCreator.gs कोड देखें

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

इसमें Google Docs API को कॉल करके, घटना की जानकारी का सारांश लिखता है, दस्तावेज़ में VertexAiApi.gs में बनाया गया.

DocsApi.gs कोड देखें

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

Chat में होने वाली बातचीत की खास जानकारी देता है Vertex AI आपकी मदद कर सकता है. इस खास जानकारी को खास तौर पर बनाए गए DocsAPI.gs में दस्तावेज़.

VertexAiApi.gs कोड देखें

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

घटना शुरू करने वाली वेबसाइट पर काम करता है.

WebController.gs कोड देखें

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

एचटीएमएल में घटना शुरू करने वाली वेबसाइट शामिल है.

Index.html कोड देखें

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

फ़ॉर्म के व्यवहार को हैंडल करता है. इसमें सबमिट किए गए अनुरोध, गड़बड़ियों को ठीक करने में मदद मिलती है. यह शामिल है WebController.gs के कस्टम include फ़ंक्शन के ज़रिए, Index.html में.

JavaScript.html कोड देखें

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

घटना शुरू करने वाली वेबसाइट के लिए सीएसएस. यह समय है इसमें कस्टम include फ़ंक्शन के ज़रिए Index.html में शामिल किया गया WebController.gs.

Stylesheet.html कोड देखें

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>

अपने Cloud प्रोजेक्ट का नंबर और आईडी ढूंढना

  1. Google Cloud Console में, अपने Cloud प्रोजेक्ट पर जाएं.

    Google Cloud Console पर जाएं

  2. 'सेटिंग और सुविधाएं' पर क्लिक करें &gt; प्रोजेक्ट सेटिंग.

  3. प्रोजेक्ट नंबर और प्रोजेक्ट आईडी फ़ील्ड में वैल्यू नोट करें. आपने लोगों तक पहुंचाया मुफ़्त में नीचे दिए गए सेक्शन में उनका इस्तेमाल करें.

Apps Script प्रोजेक्ट बनाना

Apps Script प्रोजेक्ट बनाने और उसे अपने Cloud प्रोजेक्ट:

  1. Google Chat की मदद से इवेंट का जवाब दें Apps Script प्रोजेक्ट खोलने के लिए, नीचे दिए गए बटन पर क्लिक करें.
    प्रोजेक्ट खोलें
  2. खास जानकारी पर क्लिक करें.
  3. खास जानकारी देने वाले पेज पर, कॉपी बनाने के लिए आइकॉन कॉपी बनाएं पर क्लिक करें.
  4. Apps Script प्रोजेक्ट की अपने कॉपी का नाम रखें:

    1. Google Chat की मदद से समस्याओं का जवाब देने की सुविधा की कॉपी पर क्लिक करें.

    2. प्रोजेक्ट टाइटल में, Incident Management Chat app टाइप करें.

    3. नाम बदलें पर क्लिक करें.

  5. Apps Script प्रोजेक्ट की कॉपी बनाने के लिए, Consts.gs पर जाएं फ़ाइल करें और YOUR_PROJECT_ID को अपने Cloud प्रोजेक्ट शामिल है.

Apps Script प्रोजेक्ट के लिए Cloud प्रोजेक्ट सेट करना

  1. आपके Apps Script प्रोजेक्ट में, प्रोजेक्ट सेटिंग का आइकॉन प्रोजेक्ट सेटिंग पर क्लिक करें.
  2. Google Cloud Platform (GCP) प्रोजेक्ट में जाकर, प्रोजेक्ट बदलें पर क्लिक करें.
  3. GCP प्रोजेक्ट नंबर में, अपने Cloud प्रोजेक्ट का प्रोजेक्ट नंबर चिपकाएं.
  4. प्रोजेक्ट सेट करें पर क्लिक करें. Cloud प्रोजेक्ट और Apps Script प्रोजेक्ट अब कनेक्ट हो गया है.

Apps Script डिप्लॉयमेंट बनाना

सभी कोड सही जगह पर होने के बाद, अब Apps Script को डिप्लॉय करें प्रोजेक्ट. डिप्लॉयमेंट आईडी का इस्तेमाल तब किया जाता है, जब Google Cloud में मौजूद Chat ऐप्लिकेशन.

  1. Apps Script में, इंसिडेंट रिस्पॉन्स ऐप्लिकेशन का प्रोजेक्ट खोलें.

    Apps Script पर जाएं

  2. डिप्लॉय करें पर क्लिक करें > नया डिप्लॉयमेंट.

  3. अगर ऐड-ऑन और वेब ऐप्लिकेशन पहले से नहीं चुने गए हैं, तो टाइप चुनें, डिप्लॉयमेंट टाइप प्रोजेक्ट सेटिंग का आइकॉन पर क्लिक करें. इसके बाद, ऐड-ऑन और वेब ऐप्लिकेशन चुनें.

  4. ब्यौरा में, इस वर्शन के लिए ब्यौरा डालें, जैसे Complete version of incident management app.

  5. इसके रूप में चलाएं में जाकर, वेब ऐप्लिकेशन को ऐक्सेस करने वाला उपयोगकर्ता चुनें

  6. ऐक्सेस किसके पास है सेक्शन में जाकर, आपके Workspace संगठन में कोई भी व्यक्ति को चुनें, जिसमें "आपका Workspace संगठन" CANNOT TRANSLATE Google Workspace संगठन है.

  7. डिप्लॉय करें पर क्लिक करें. Apps Script रिपोर्ट हो गई डिप्लॉयमेंट की प्रोसेस पूरी करता है. साथ ही, घटना के लिए डिप्लॉयमेंट आईडी और यूआरएल उपलब्ध कराता है वेब पेज को शुरू करने के लिए किया जा सकता है.

  8. कोई घटना शुरू होने पर, बाद में विज़िट करने के लिए वेब ऐप्लिकेशन के यूआरएल को ध्यान में रखें. डिप्लॉयमेंट आईडी को कॉपी करें. इस आईडी का इस्तेमाल, Google Cloud Console में Chat ऐप्लिकेशन.

  9. हो गया पर क्लिक करें.

Google Cloud Console में Chat ऐप्लिकेशन को कॉन्फ़िगर करना

इस सेक्शन में, Google Cloud Console में Google Chat API को कॉन्फ़िगर करने का तरीका बताया गया है चैट ऐप्लिकेशन की जानकारी के साथ-साथ उस डिप्लॉयमेंट का आईडी जिसे आपने Apps Script से अभी-अभी बनाया है प्रोजेक्ट.

  1. Google Cloud Console में, मेन्यू पर क्लिक करें &gt; ज़्यादा प्रॉडक्ट &gt; Google Workspace &gt; प्रॉडक्ट लाइब्रेरी &gt; Google Chat API &gt; मैनेज करें &gt; कॉन्फ़िगरेशन.

    Chat API कॉन्फ़िगरेशन पर जाएं

  2. ऐप्लिकेशन का नाम में, Incident Management टाइप करें.

  3. अवतार यूआरएल में, https://developers.google.com/chat/images/quickstart-app-avatar.png लिखें.

  4. ब्यौरा में, Responds to incidents. टाइप करें.

  5. इंटरैक्टिव सुविधाएं चालू करें टॉगल पर क्लिक करके, टॉगल को चालू करें.

  6. फ़ंक्शनलता में जाकर, 1:1 मैसेज पाएं, स्पेस और ग्रुप बातचीत में शामिल हों को चुनें.

  7. कनेक्शन सेटिंग में जाकर, Apps Script प्रोजेक्ट चुनें.

  8. डिप्लॉयमेंट आईडी में, Apps Script डिप्लॉयमेंट आईडी चिपकाएं जिसे आपने Apps Script प्रोजेक्ट से पहले कॉपी किया था डिप्लॉयमेंट.

  9. एक ऐसा स्लैश कमांड रजिस्टर करें जो पूरी तरह से लागू किए गए Chat ऐप्लिकेशन का इस्तेमाल, इन चीज़ों के लिए किया जाता है:

    1. स्लैश कमांड में जाकर, स्लैश कमांड जोड़ें पर क्लिक करें.

    2. नाम में, /closeIncident लिखें.

    3. कमांड आईडी में, 1 लिखें.

    4. Description में, टाइप करें Closes the incident being discussed in the space.

    5. इस बटन पर क्लिक करने से एक डायलॉग बॉक्स खुलेगा को चुनें.

    6. हो गया पर क्लिक करें. स्लैश कमांड को रजिस्टर किया गया है और सूची में शामिल किया गया है.

  10. किसको दिखे सेक्शन में जाकर, इस Chat ऐप्लिकेशन को आपके Workspace डोमेन पर क्लिक करें और अपना ईमेल पता डालें.

  11. लॉग में जाकर, लॉग करने में गड़बड़ियों को लॉग करें चुनें.

  12. सेव करें पर क्लिक करें. सेव किया गया कॉन्फ़िगरेशन का मैसेज दिखेगा. इसका मतलब है कि ऐप्लिकेशन टेस्ट के लिए तैयार है.

Chat ऐप्लिकेशन को टेस्ट करना

इंसिडेंट मैनेजमेंट चैट ऐप्लिकेशन की जांच करने के लिए, मामले को ट्रैक करने के लिए किया जा सकता है और पुष्टि की जा सकती है कि Chat ऐप्लिकेशन उम्मीद के मुताबिक काम करता है:

  1. Apps Script डिप्लॉयमेंट के वेब ऐप्लिकेशन यूआरएल पर जाएं.

  2. जब Apps Script आपके डेटा को ऐक्सेस करने की अनुमति मांगती है, अनुमतियां देखें पर क्लिक करें और सही Google खाते से साइन इन करें अपने Google Workspace डोमेन में जाएं और अनुमति दें पर क्लिक करें.

  3. इवेंट शुरू करने के लिए, वेब पेज खुलता है. जांच की जानकारी डालें:

    1. इंसिडेंट का टाइटल में, The First Incident टाइप करें.
    2. वैकल्पिक रूप से, इंसिडेंट रिस्पॉन्डर में, इनके ईमेल पते डालें मदद करने के लिए तैयार हो जाएं. वे ऐसे उपयोगकर्ता होने चाहिए जिनके पास आपके संगठन के Google Workspace खाते में या Google Chat खाते से स्पेस नहीं बनाया जा सका. अपना खुद का ईमेल पता न डालें क्योंकि यह अपने-आप शामिल हो जाता है.
    3. शुरुआती मैसेज में, Testing the incident management Chat app. लिखें
  4. चैट स्पेस बनाएं पर क्लिक करें. आपको एक creating space मैसेज दिखेगा.

  5. स्पेस बनाने के बाद, आपको Space created! का मैसेज दिखेगा. क्लिक करें स्पेस खोलें. इससे, Chat में स्पेस नए टैब में खुलेगा.

  6. इसके अलावा, आप और अन्य घटना के जवाब देने वाले लोग यहां मैसेज भेज सकते हैं: स्पेस. यह ऐप्लिकेशन, Vertex AI का इस्तेमाल करके इन मैसेज की खास जानकारी तैयार करता है. साथ ही, रेट्रोस्पेक्टिव दस्तावेज़.

  7. घटना का जवाब देने और समाधान की प्रक्रिया शुरू करने के लिए, चैट स्पेस, /closeIncident टाइप करें. इंसिडेंट मैनेजमेंट डायलॉग बॉक्स खुलता है.

  8. जानकारी बंद करें सेक्शन में, समस्या के समाधान के लिए जानकारी डालें, Test complete पसंद है.

  9. डेटा बंद करें पर क्लिक करें.

इंसिडेंट मैनेजमेंट ऐप्लिकेशन, स्पेस में मौजूद मैसेज की खास जानकारी देता है Vertex AI की मदद से, Google Docs दस्तावेज़ में खास जानकारी चिपकाता है और दस्तावेज़ को स्पेस में शामिल करें.

व्यवस्थित करें

इसके लिए आपके Google Cloud खाते पर लगने वाले शुल्क से बचने के लिए तो हमारा सुझाव है कि आप Cloud प्रोजेक्ट शामिल है.

  1. Google Cloud Console में, संसाधन मैनेज करें पेज पर जाएं. क्लिक करें मेन्यू &gt; IAM और एडमिन &gt; संसाधन मैनेज करें पर क्लिक करें.

    रिसोर्स मैनेजर पर जाएं

  2. प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिसे मिटाना है. इसके बाद, क्लिक करें मिटाएं .
  3. डायलॉग बॉक्स में, प्रोजेक्ट आईडी टाइप करें. इसके बाद, मिटाने के लिए शट डाउन करें पर क्लिक करें को भी शामिल किया है.