Gemini के साथ Google Chat में ऐप्लिकेशन बनाएं

1. शुरू करने से पहले

Gemini के साथ Google Chat ऐप्लिकेशन कौनसे हैं?

Gemini की सुविधा वाले Google Chat ऐप्लिकेशन ये काम करते हैं:

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

Google Chat ऐप्लिकेशन को Gemini के साथ क्यों इंटिग्रेट करें?

आम तौर पर, Gemini जैसे जनरेटिव एआई मॉडल को इन कैटगरी में रखा जाता है:

  • कॉन्टेंट बनाना और उसे बेहतर बनाना. मार्केटिंग कॉपी जनरेट करें, सोशल मीडिया पोस्ट बनाएं, बिलकुल असली लगने वाली इमेज बनाएं, संगीत बनाएं या वीडियो कॉन्टेंट बनाने में मदद करें.
  • डेटा खोज. अनस्ट्रक्चर्ड नॉलेज बेस से अहम जानकारी पाएं, लंबे टेक्स्ट की खास जानकारी दें, कॉन्टेंट की कैटगरी तय करें या बेहतर तरीके से और तेज़ी से भाषाओं का अनुवाद करें.
  • बातचीत. सामान्य, जानकारी देने वाली, और क्रिएटिव बातचीत में शामिल हों.

Google Chat के जाने-पहचाने इंटरफ़ेस में, इन सुविधाओं को सीधे तौर पर इंटिग्रेट करने की सुविधा, उन सभी लोगों के लिए बहुत अच्छा मौका है जो अपने उपयोगकर्ताओं को बेहतर अनुभव देना चाहते हैं और बेहतर तरीके से काम करना चाहते हैं.

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

आपका बनाया हुआ

इस कोडलैब में, पिछले सेक्शन में इस्तेमाल के तीन उदाहरणों के बारे में बताया गया है, जिसे कवर करने के लिए Gemini की मदद से Google Chat के तीन ऐप्लिकेशन बनाए जा सकते हैं.

समस्याओं को मैनेज करने वाला ऐप्लिकेशन (कॉन्टेंट बनाना और उसे बेहतर बनाना)

यह ऐप्लिकेशन ये काम करता है:

  • यह बेसिक इंटरैक्शन, ऐप्लिकेशन होम, और ऐप्लिकेशन की पुष्टि करने की सुविधा के साथ, ऐप्लिकेशन बनाने से लेकर बंद होने तक की समस्याओं को मैनेज करता है.
  • यह सुविधा, मैसेज की निगरानी करती है. साथ ही, इवेंट और ऐक्सेसरी विजेट के साथ सभी को शामिल करने में मदद करती है.

Gemini की सुविधा का इस्तेमाल इन कामों के लिए किया जा सकता है:

  • मैसेज के इतिहास और समस्या की जानकारी के आधार पर, समस्या की रिपोर्ट जनरेट करें.
  • गेट वाले प्रॉम्प्ट की मदद से, मैसेज में शामिल नहीं किए गए शब्दों की कैटगरी तय करें.

मुख्य तौर पर, Vertex AI, Gemini, Apps Script, और Google Workspace API (एडमिन, Chat, Docs, इवेंट) टेक्नोलॉजी का इस्तेमाल किया जाता है.

22efdecff4601417.png

2d127c63518673b2.png

9aea694937f2f3ed.png

यह ऐप्लिकेशन सामान्य भाषा में पूछे गए सवालों को समझने और उनका जवाब देने के लिए, Gemini का इस्तेमाल करता है. साथ ही, यह बिना स्ट्रक्चर किए गए डेटा से सोर्स के रेफ़रंस देता है.

Dialogflow CX डेटा स्टोर एजेंट, Dialogflow CX वेबहुक, Google Cloud Functions, और Gemini, मुख्य रूप से इस्तेमाल की जाने वाली टेक्नोलॉजी हैं.

9468866bfe848bb8.png

फ़ीडबैक ऐप्लिकेशन (बातचीत)

यह ऐप्लिकेशन, आम भाषा में की गई बातचीत वाली समीक्षाएं इकट्ठा और सेव करने के लिए Gemini का इस्तेमाल करता है.

Dialogflow CX एजेंट, Dialogflow CX टूल, OpenAPI, Google Cloud Functions, और Gemini, मुख्य रूप से इस्तेमाल की जाने वाली टेक्नोलॉजी हैं.

99a7a0295f122f31.png

आपको क्या सीखने को मिलता है

  • Vertex AI की मदद से, Google Chat ऐप्लिकेशन को Gemini के साथ इंटिग्रेट करने का तरीका.
  • Google Chat ऐप्लिकेशन को Dialogflow CX एजेंट के साथ इंटिग्रेट करने का तरीका.
  • Google Chat की नई सुविधाओं को इस्तेमाल करने का तरीका: ऐप्लिकेशन का होम पेज, Google Chat इवेंट, और ऐक्सेसरी विजेट.

आपको इन चीज़ों की ज़रूरत पड़ेगी

2. सेट अप करने का तरीका

संसाधनों को शुरू करें

इस सेक्शन में, अपने पसंदीदा वेब ब्राउज़र से इन रिसॉर्स को ऐक्सेस और कॉन्फ़िगर किया जा सकता है.

Apps Script प्रोजेक्ट

Apps Script कंसोल में यह तरीका अपनाएं:

  1. सेटिंग पर क्लिक करें. इसके बाद, Google Apps Script API को चालू करें.

ea06c593b347b9d1.png

  1. अपना प्रोजेक्ट चुनें.
  2. प्रोजेक्ट सेटिंग पर क्लिक करें.
  3. "appsscript.json" मेनिफ़ेस्ट फ़ाइल को एडिटर में दिखाएं चेकबॉक्स चुनें.
  4. प्रोजेक्ट का नाम बदलकर Chat Apps Gemini करें.

12c1485bd248b766.png

Google Cloud प्रोजेक्ट

Google Cloud Console में, यह तरीका अपनाएं:

  1. अपना प्रोजेक्ट चुनें.
  2. मेन्यू ≡ > एपीआई और सेवाएं > OAuth के लिए सहमति वाली स्क्रीन > ऐप्लिकेशन में बदलाव करें पर क्लिक करें. इसके बाद, ऐप्लिकेशन का नाम को Chat Apps Gemini पर सेट करें.

  1. Google Chat API कॉन्फ़िगरेशन पर जाएं. इसके बाद, ऐप्लिकेशन का नाम और जानकारी को Chat Apps Gemini पर सेट करें.

a71f040755da3b8b.png

Google Chat

Google Chat में यह तरीका अपनाएं:

  1. अगर ज़रूरी हो, तो अपने Google Chat ऐप्लिकेशन से चैट करें.
  2. Hello जैसा कोई मैसेज भेजें, ताकि यह पक्का किया जा सके कि वह काम करता है.

9625418251528ae9.png

सोर्स कोड और संसाधनों को डिवाइस पर ही डाउनलोड करना

  1. GitHub डेटा स्टोर करने की इस जगह को डाउनलोड करें.

  1. अपने पसंदीदा डेवलपमेंट एनवायरमेंट में, apps-script/chat-apps-gemini डायरेक्ट्री खोलें. इसके बाद, अपने टर्मिनल में उसी डायरेक्ट्री पर जाएं.

da9478df97c99194.png

clasp को इंस्टॉल और कॉन्फ़िगर करें

हम clasp का इस्तेमाल करके, सोर्स कोड के वर्शन में आसानी से बदलाव कर सकते हैं. साथ ही, उन्हें स्थानीय एनवायरमेंट से Apps Script प्रोजेक्ट में पुश कर सकते हैं.

  1. अपने स्थानीय एनवायरमेंट में, node, npm , और clasp के नए वर्शन इंस्टॉल करें.
npm install -g @google/clasp
  1. अपने खाते से लॉग इन करें:
clasp login

8bc2434e6dc6f22a.png

अगर यह प्रक्रिया पूरी हो जाती है, तो आपको वेब ब्राउज़र में पुष्टि करने वाली बुनियादी स्क्रीन दिखेगी. साथ ही, आपके क्लाइंट क्रेडेंशियल वाली .clasprc.json फ़ाइल अपडेट हो जाएगी. आप अपने टर्मिनल में देख सकते हैं कि यह कहां पर है.

e1d833eb4d5b3a8f.png

3. ऐप्लिकेशन 1: बिल्ड

कॉन्सेप्ट की समीक्षा करना

Vertex AI

Vertex AI की मदद से, जनरेटिव एआई को बनाने और इस्तेमाल करने के लिए ज़रूरी सभी सुविधाएं मिलती हैं. जैसे, एआई सलूशन, एजेंट बिल्डर, 130 से ज़्यादा फ़ाउंडेशन मॉडल, और यूनिफ़ाइड एआई प्लैटफ़ॉर्म.

c9e9c7a1945b22ac.png

Gemini

Gemini, Google का एक मल्टीमोडल एलएलएम है. इसे Vertex AI से ऐक्सेस किया जा सकता है. यह लोगों की मानवीय क्षमता को सामने लाने में मदद करता है, जिससे वे अपनी कल्पनाओं को बढ़ा सकते हैं, अपनी जिज्ञासा बढ़ा सकते हैं, और अपनी उत्पादकता बढ़ा सकते हैं.

ऐडवांस चैट सेवा

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

आर्किटेक्चर की समीक्षा करें

8c9c7b7328a69ea6.png

Google Chat के इस ऐप्लिकेशन को Apps Script की मदद से बनाया गया है. यह इस तरह काम करता है:

  1. उपयोगकर्ता, ऐप्लिकेशन को डायरेक्ट मैसेज या स्पेस में मैसेज भेजता है.
  2. ऐप्लिकेशन, जिसे Apps Script प्रोजेक्ट में लागू किया जाता है और जो Google Cloud प्रोजेक्ट से जुड़ा होता है, मैसेज को प्रोसेस करता है.
  3. यह ऐप्लिकेशन, Google Docs और Google Chat API के साथ इंटिग्रेट किया जा सकता है.
  4. यह ऐप्लिकेशन, स्क्रिप्ट प्रॉपर्टी में डेटा को बनाए रखने के लिए प्रॉपर्टी सेवा का इस्तेमाल करता है.
  5. ऐप्लिकेशन, डायरेक्ट मैसेज या ओरिजनल स्पेस में सिंक्रोनस जवाब भेजता है.

समीक्षा के फ़्लो

समस्या बनाएं

7ca0e8ba3c8255bb.png

खास तौर पर बनाए गए स्पेस से जुड़ी समस्या हल करना

51b47714c378a24b.png

खास तौर पर बनाए गए स्पेस में मौजूद समस्या को हल करना

89e50228deeab0f9.png

सोर्स कोड की समीक्षा करना

Apps Script प्रोजेक्ट में ये स्क्रिप्ट शामिल हैं:

  • Configuration: पर्यावरण के आधार पर बदलाव करने वाले स्थिरांक.
  • ChatApp: Google Chat के इंटरैक्शन वाले इवेंट मैनेज करता है. इनमें मैसेज, कार्ड पर क्लिक, स्लैश कमांड, और डायलॉग शामिल हैं.
  • Storage: ऐसे यूटिलिटी फ़ंक्शन जो प्रॉपर्टी सेवाओं का इस्तेमाल करते हैं.
  • ChatAppAuth: सुविधा देने वाले ऐसे फ़ंक्शन जो Google Chat ऐप्लिकेशन की पुष्टि पर निर्भर करते हैं.
  • Docs: यूटिलिटी फ़ंक्शन जो Google Docs पर निर्भर करते हैं.
  • VertexAi: ऐसे यूटिलिटी फ़ंक्शन जो Vertex AI पर आधारित हैं.

Gemini और चैट स्पेस के इतिहास की मदद से, रिपोर्ट वाले दस्तावेज़ जनरेट करते समय इन हिस्सों का इस्तेमाल किया जाता है:

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 प्रोजेक्ट अपडेट करना

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

  1. Google Cloud Console में, Google Docs, Google Admin SDK, और Vertex AI के एपीआई चालू करें:

  1. मेन्यू ≡ > एपीआई और सेवाएं > चालू एपीआई और सेवाएं पर क्लिक करें और फिर पुष्टि करें कि एपीआई चालू हैं.

सेवा खाते का इस्तेमाल शुरू करना

Google Cloud Console में, यह तरीका अपनाएं:

  1. मेन्यू ≡ > IAM और एडमिन > सेवा खाते > + सेवा खाता बनाएं पर क्लिक करें.

74cf57426419f39.png

  1. सेवा खाते के नाम को chat-app पर सेट करें.
  2. सेवा खाते की जानकारी को Chat app auth पर सेट करें.
  3. बनाएं और जारी रखें पर क्लिक करें.
  4. हो गया पर क्लिक करें. आपको सेवा खाते पेज पर रीडायरेक्ट किया जाता है. यहां आपको अपने बनाए हुए सेवा खाते की जानकारी दिखती है.

ca0468f1f93990f9.png

  1. नया सेवा खाता चुनें.
  2. कुंजियां टैब चुनें.
  3. कुंजी जोड़ें पर क्लिक करें.
  4. नई कुंजी बनाएं पर क्लिक करें.
  5. JSON चुनें.
  6. बनाएं पर क्लिक करें.

9f7e6ea020978ab0.png

इसके बाद, डायलॉग बंद हो जाता है. साथ ही, आपका बनाया गया सार्वजनिक/निजी पासकोड का नया जोड़ा, आपके लोकल एनवायरमेंट में JSON फ़ाइल के तौर पर अपने-आप डाउनलोड हो जाता है. बाद में अपने Apps Script प्रोजेक्ट के सोर्स कोड में बदलाव करते समय, इसके कॉन्टेंट का इस्तेमाल किया जाता है.

Google Chat API का कॉन्फ़िगरेशन अपडेट करना

Google Cloud Console में, यह तरीका अपनाएं:

  1. स्लैश कमांड जोड़ें.
  2. नाम को /create पर सेट करें.
  3. Command ID को 1 पर सेट करें.
  4. जानकारी को Create a new issue पर सेट करें.
  5. डायलॉग खुलता है चेकबॉक्स को चुनें.
  6. एक और स्लैश कमांड जोड़ें.
  7. नाम को /close पर सेट करें.
  8. Command ID को 2 पर सेट करें.
  9. जानकारी को Close an issue पर सेट करें.
  10. सेव करें पर क्लिक करें.

bee2e7b63659ab33.png

Apps Script प्रोजेक्ट अपडेट करें

  • अपने लोकल टर्मिनल की मौजूदा डायरेक्ट्री को issue-management/1-baseline में बदलें. इसमें सोर्स कोड शामिल होता है. अपने Apps Script प्रोजेक्ट में सोर्स कोड को पुश करने से पहले, आपको कुछ चीज़ें कॉन्फ़िगर करनी होंगी.

सोर्स कोड कॉन्फ़िगर करना

  1. निजी कुंजी की फ़ाइल के उस कॉन्टेंट पर Configuration.js फ़ाइल में CHAT_CREDENTIALS नाम वाला JSON कॉन्सटेंट सेट करें जिसे आपने पहले डाउनलोड किया है.

d721f6bff73c5304.png

  1. Google Cloud Console में, मेन्यू ≡ > IAM और एडमिन > सेटिंग पर क्लिक करें.

  1. प्रोजेक्ट आईडी कॉपी करें.

82592fa0bd113469.png

  1. प्रोजेक्ट आईडी पर, Configuration.js फ़ाइल में मौजूद PROJECT_ID नाम का स्ट्रिंग कॉन्सटेंट सेट करें.

383cee561130ceba.png

clasp की सेटिंग कॉन्फ़िगर करें

सोर्स कोड को सही Apps Script प्रोजेक्ट में पुश करने के लिए, clasp सेटिंग शुरू करने के लिए, यह तरीका अपनाएं:

  1. Apps Script कंसोल में, अपना प्रोजेक्ट चुनें.
  2. प्रोजेक्ट सेटिंग चुनें.
  3. आईडी में जाकर, कॉपी करें पर क्लिक करें.

20ea033b6de882c6.png

  1. मौजूदा डायरेक्ट्री में, .clasp.json फ़ाइल बनाएं.
  2. <your-script-id> की जगह, कॉपी किया गया आईडी डालें.
  3. .clasp.json फ़ाइल में नतीजे को कॉपी करें.
  4. .clasp.json फ़ाइल सेव करें.
{
  "scriptId": "<your-script-id>"
}

पुश सोर्स कोड

  • नीचे दिए गए निर्देश का इस्तेमाल करें:
$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.

इसे आज़माएं

  1. Google Chat में, ऐप्लिकेशन को डायरेक्ट मैसेज में Hello! भेजें. इसके बाद, ऐप्लिकेशन जवाब नहीं देता, लेकिन एक मैसेज दिखता है जिसमें कॉन्फ़िगरेशन के लिए अनुरोध किया जाता है.

4c1fc68121dcffed.png

  1. कॉन्फ़िगर करें पर क्लिक करें.
  2. अपने Google खाते का चयन करें.
  3. पुष्टि करें.
  4. ऐप्लिकेशन की समीक्षा करें और उसे ऐक्सेस करने की अनुमति दें.

4a2fd7ac5918bf1a.png

अगर यह कोड ट्रांसफ़र हो जाता है, तो आपको वेब पेज पर पुष्टि करने वाली बुनियादी स्क्रीन दिखेगी. साथ ही, ऐप्लिकेशन से आपके मैसेज पर भेजा गया असल जवाब भी दिखेगा.

acb9065568fe47d2.png

2d6ef9c62f47e082.png

  1. ऐप्लिकेशन को एक और डायरेक्ट मैसेज भेजें, लेकिन स्लैश कमांड के साथ /create का इस्तेमाल करें.

be3f3c6eb0f929c1.png

  1. डायलॉग में, Title को Issue Title 1 पर सेट करें.
  2. जानकारी को समस्या Description 1 के तौर पर सेट करें.
  3. बनाएं पर क्लिक करें.

22efdecff4601417.png

ऐप्लिकेशन ये काम करता है:

  1. डायलॉग बॉक्स को बंद करता है.
  2. इसी शीर्षक वाली नई समस्या के लिए स्पेस बनाता है.
  3. नए बनाए गए स्पेस में शामिल होता है.
  4. नए बनाए गए स्पेस में समस्या की जानकारी के साथ एक मैसेज भेजता है.
  5. नए बनाए गए स्पेस के लिंक के साथ आपको डायरेक्ट मैसेज भेजता है.

3253cec2392e281f.png

  1. नए स्पेस में, स्लैश कमांड /close और रिज़ॉल्यूशन जैसे Not reproducible का इस्तेमाल करके मैसेज भेजें.

132cc4acfc10b98c.png

ऐप्लिकेशन ये काम करता है:

  1. Google Docs में रिपोर्ट बनाने के लिए दस्तावेज़ बनाया जाता है.
  2. इस ईमेल में, समस्या वाले स्पेस में मैसेज भेजा जाता है. साथ ही, रिपोर्ट के नए दस्तावेज़ का लिंक भी दिया जाता है.

2d127c63518673b2.png

  1. रिपोर्ट दस्तावेज़ खोलें. इसमें बुनियादी जानकारी, इतिहास, और खास जानकारी होती है.

9aea694937f2f3ed.png

4. वैकल्पिक: ऐप्लिकेशन 1: ऐप्लिकेशन का होम पेज जोड़ना

कॉन्सेप्ट की समीक्षा करना

ऐप्लिकेशन का होम पेज, पसंद के मुताबिक बनाया जा सकने वाला कार्ड मैसेज है. इसे Chat ऐप्लिकेशन तब भेजा जाता है, जब उपयोगकर्ता किसी डायरेक्ट मैसेज से होम टैब ऐक्सेस करता है. आम तौर पर, इसका इस्तेमाल ऐप्लिकेशन का दस्तावेज़ या खास जानकारी दिखाने के लिए किया जाता है. तकनीकी रूप से, मैनेज करने के लिए अलग से एक इवेंट होता है और यह कार्ड मैसेज जैसे मुख्य सिद्धांतों पर आधारित होता है.

65f56f70f67a32e4.png

समीक्षा के फ़्लो

समस्याओं को मैनेज करना

10663f5fc107fb3f.png

सोर्स कोड की समीक्षा करना

Apps Script प्रोजेक्ट में बदलाव करना ज़रूरी है.

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 प्रोजेक्ट अपडेट करना

Google Cloud Console में, यह तरीका अपनाएं:

  1. इंटरैक्टिव सुविधाएं सेक्शन में, ऐप्लिकेशन के होम पेज में मदद करें चेकबॉक्स चुनें.

97159c1c69ca8303.png

अपने स्थानीय परिवेश में, यह तरीका अपनाएं:

  1. अपने टर्मिनल की मौजूदा डायरेक्ट्री को issue-management/2-app-home में बदलें. इसमें वह सोर्स कोड होता है जिसका आपको इस्तेमाल करना होगा.
  2. issue-management/1-baseline/.clasp.json फ़ाइल को अपनी मौजूदा डायरेक्ट्री में कॉपी करें.
  3. issue-management/1-baseline/Configuration.js फ़ाइल को अपनी मौजूदा डायरेक्ट्री में कॉपी करें, ताकि वह मौजूदा डायरेक्ट्री की जगह ले सके.
  4. नीचे दिए गए निर्देश का इस्तेमाल करें:
clasp push

इसे आज़माएँ

Google Chat में यह तरीका अपनाएं:

  1. ऐप्लिकेशन को /create स्लैश कमांड के साथ डायरेक्ट मैसेज भेजें. ऐसा करने पर, एक डायलॉग बॉक्स खुलेगा.
  2. टाइटल को Issue Title 2 पर सेट करें.
  3. जानकारी को समस्या Description 2 के तौर पर सेट करें.
  4. बनाएं पर क्लिक करें.

3b2a8690e758f965.png

  1. Google Chat ऐप्लिकेशन में, अपने स्पेस से होम टैब को चुनें. यहां अपनी समस्याओं की जानकारी देखी जा सकती है.

ed8e32da0e6f2ac6.png

5. वैकल्पिक: ऐप्लिकेशन 1: स्पेस को मॉनिटर करने की सुविधा जोड़ें

कॉन्सेप्ट की समीक्षा करें

Pub/Sub

Pub/Sub, एसिंक्रोनस और स्केलेबल है. यह सेवा, उन सेवाओं से मैसेज तैयार करने वाली सेवाओं को अलग करती है जो उन मैसेज को प्रोसेस करती हैं. Pub/Sub की मदद से आप इवेंट बनाने वालों और उपभोक्ताओं का सिस्टम बना सकते हैं. इन्हें पब्लिशर और सदस्य कहा जाता है. सिंक्रोनस रिमोट प्रोसेस कॉल (आरपीसी) के बजाय, पब्लिशर इवेंट ब्रॉडकास्ट करके अपने सदस्यों से एसिंक्रोनस तरीके से बातचीत करते हैं.

पब्लिशर, Pub/Sub सेवा को इवेंट भेजते हैं. इस बात से कोई फ़र्क़ नहीं पड़ता कि इन इवेंट को कब और कैसे प्रोसेस करना है. इसके बाद, Pub/Sub उन सभी सेवाओं को इवेंट डिलीवर करता है जो खुद को मैनेज करती हैं. RPC के ज़रिए बातचीत करने वाले सिस्टम में, पब्लिशरों को सदस्यों के डेटा मिलने तक इंतज़ार करना चाहिए. हालांकि, Pub/Sub में एसिंक्रोनस इंटिग्रेशन से सिस्टम को ज़्यादा सुविधाजनक और मज़बूत बनाया जा सकता है.

विषय: एक नाम वाला संसाधन जो मैसेज का फ़ीड दिखाता है. कोई विषय पब्लिश करने या उसकी सदस्यता लेने से पहले आपको एक विषय बनाना होगा.

सदस्यता: किसी विषय पर पब्लिश हुए मैसेज पाने के लिए, आपको उस विषय की सदस्यता लेनी होगी. सदस्य क्लाइंट को विषय पर पब्लिश किए गए मैसेज मिलते हैं और वे उन्हें प्रोसेस करते हैं. किसी एक विषय के लिए एक से ज़्यादा सदस्यताएं हो सकती हैं. हालांकि, हर विषय के लिए सदस्यता दी जाती है.

Google Workspace के इवेंट

Google Workspace इवेंट, Google Workspace के संसाधनों में हुए बदलावों को दिखाते हैं. जैसे, संसाधन कब बनाए, अपडेट किए जाते हैं या मिटाए जाते हैं. ऐप्लिकेशन, Google Workspace के संसाधनों की सदस्यता ले सकते हैं. इससे, वे काम के इवेंट को एसिंक्रोनस तरीके से प्रोसेस कर सकते हैं.

7816e477b112bfb6.png

यहां बताया गया है कि Google Workspace इवेंट एपीआई, सदस्यता की मदद से किसी ऐप्लिकेशन के लिए इवेंट कैसे डिलीवर करता है:

  1. वह ऐप्लिकेशन, Google Workspace ऐप्लिकेशन में मौजूद किसी संसाधन की सदस्यता लेता है, जैसे कि स्पेस.
  2. ऐप्लिकेशन ने जिस संसाधन के लिए सदस्यता ली है वह बदल जाता है.
  3. Google Workspace ऐप्लिकेशन, Pub/Sub में किसी विषय के लिए इवेंट डिलीवर करता है. यह ऐप्लिकेशन की Google Workspace सदस्यता के लिए, सूचना एंडपॉइंट के तौर पर काम करता है. संसाधन में हुए बदलाव का डेटा, इवेंट में शामिल होता है.
  4. ऐप्लिकेशन, इवेंट वाले Pub/Sub मैसेज को प्रोसेस करता है और ज़रूरत पड़ने पर कार्रवाई करता है.

समीक्षा के फ़्लो

समस्या बनाना (अपडेट)

6d7a9d7a68666a80.png

खास तौर पर बनाए गए स्पेस में आ रही समस्या हल करना (अपडेट)

17e60f052f222456.png

खास तौर पर बनाए गए स्पेस में मौजूद समस्या को हल करना (अपडेट)

742d490ea0b6fe3a.png

सदस्यताएं प्रोसेस करना

de3017100dec6401.png

सोर्स कोड की समीक्षा करना

Apps Script प्रोजेक्ट में बदलाव करना ज़रूरी है.

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 प्रोजेक्ट अपडेट करना

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

  1. Google Cloud Console में, Google Workspace इवेंट और PubSub को चालू करें.

  1. मेन्यू ≡ > एपीआई और सेवाएं > चालू एपीआई और सेवाएं पर क्लिक करें और फिर पुष्टि करें कि दोनों चालू हैं.

सदस्यता शुरू करना

Workspace के सभी इवेंट पोस्ट करने के लिए, आपको Pub/Sub विषय बनाना होगा और उसकी सदस्यता लेनी होगी.

Google Cloud Console में, यह तरीका अपनाएं:

  1. मेन्यू ≡ > Pub/Sub > विषय पर जाएं.

  1. विषय बनाएं पर क्लिक करें.
  2. विषय आईडी को workspace-events पर सेट करें.
  3. डिफ़ॉल्ट सदस्यता जोड़ें चेकबॉक्स को चुनें.
  4. बनाएं पर क्लिक करें.

b39f9a0aec7c9939.png

Google Chat से अपने नए विषय पर Pub/Sub मैसेज पब्लिश करने का ऐक्सेस देने के लिए, यह तरीका अपनाएं:

  1. सूची से विषय चुनें.
  2. अनुमतियां टैब चुनें.
  3. chat-api-push@system.gserviceaccount.com को नए मुख्य खातों में जोड़ें.
  4. भूमिका के लिए Pub/Sub पब्लिशर चुनें.
  5. सेव करें पर क्लिक करें.

8d4016c37532503.png

Apps Script प्रोजेक्ट अपडेट करें

Google Cloud Console में, यह तरीका अपनाएं:

  1. मेन्यू ≡ > IAM और एडमिन > सेटिंग पर जाएं.

  1. प्रोजेक्ट आईडी कॉपी करें.

82592fa0bd113469.png

अपने स्थानीय परिवेश में, यह तरीका अपनाएं:

  1. अपने टर्मिनल की मौजूदा डायरेक्ट्री को issue-management/3-message-monitoring में बदलें. इसमें वह सोर्स कोड होता है जिसकी आपको ज़रूरत है.
  2. कॉपी किए गए प्रोजेक्ट आईडी की Configuration.js फ़ाइल में, PROJECT_ID नाम का स्ट्रिंग कॉन्सटेंट सेट करें.
  3. निजी कुंजी की फ़ाइल के कॉन्टेंट को Configuration.js फ़ाइल में CHAT_CREDENTIALS नाम वाले JSON कॉन्सटेंट को पहले डाउनलोड किया जा सकता है.
  4. issue-management/2-app-home/.clasp.json फ़ाइल को अपनी मौजूदा डायरेक्ट्री में कॉपी करें.
  5. नीचे दिए गए निर्देश का इस्तेमाल करें:
clasp push

इसे आज़माएँ

Google Chat में यह तरीका अपनाएं:

  1. ऐप्लिकेशन को /create स्लैश कमांड के साथ डायरेक्ट मैसेज भेजें. ऐसा करने पर, एक डायलॉग बॉक्स खुलेगा.
  2. टाइटल को Issue Title 3 पर सेट करें.
  3. जानकारी को समस्या Description 3 के तौर पर सेट करें.
  4. बनाएं पर क्लिक करें.
  5. नए बनाए गए स्पेस में, समस्या पर चर्चा करने वाले कुछ मैसेज भेजें.
  6. स्लैश कमांड /close और रिज़ॉल्यूशन जैसे Fixed के साथ मैसेज भेजें.

Google Cloud Console में, यह तरीका अपनाएं:

  1. मेन्यू ≡ > Pub/Sub > सदस्यताएं पर जाएं.

  1. workspace-events-sub की सदस्यता चुनें.
  2. मैसेज टैब को चुनें.
  3. खींचें पर क्लिक करें. टेबल में, बनाए गए नए स्पेस में आपके भेजे गए मैसेज से जुड़े मैसेज दिखते हैं.

82631c9792d83889.png

Apps Script कंसोल में यह तरीका अपनाएं:

  1. अपना प्रोजेक्ट चुनें.
  2. एडिटर को चुनें.
  3. WorkspaceEvent.gs फ़ाइल चुनें.
  4. Run सेक्शन में जाकर, processSubscription को चुनें.
  5. Run पर क्लिक करें.निष्पादन लॉग से यह देखा जा सकता है कि मैसेज प्रोसेस हो गए थे.

c612e8fa2bd0a163.png

Google Cloud Console में, यह तरीका अपनाएं:

  1. मेन्यू ≡ > Pub/Sub > सदस्यताएं पर जाएं.

  1. workspace-events-sub की सदस्यता चुनें.
  2. मैसेज टैब को चुनें.
  3. खींचें पर क्लिक करें. अब टेबल में, बनाए गए नए स्पेस में आपके भेजे गए मैसेज से जुड़े मैसेज नहीं दिखेंगे.

e185454cac862a7b.png

  • Google Chat में, स्लैश कमांड /create का इस्तेमाल करके तीसरी समस्या के बारे में बताने वाले स्पेस में, समस्या पर चर्चा करने के लिए कुछ और मैसेज भेजें.

Google Cloud Console में, यह तरीका अपनाएं:

  1. मेन्यू ≡ > Pub/Sub > सदस्यताएं पर जाएं.

  1. workspace-events-sub की सदस्यता चुनें.
  2. मैसेज टैब को चुनें.
  3. खींचें पर क्लिक करें. टेबल में, बनाए गए नए स्पेस में आपके भेजे गए मैसेज से जुड़े मैसेज नहीं दिखते हैं.

6. ज़रूरी नहीं: ऐप्लिकेशन 1: बिना किसी भेदभाव के सभी को शामिल करने के लिए सहायता जोड़ना

कॉन्सेप्ट की समीक्षा करें

जेन एआई प्रॉम्प्ट एक ऐसा तरीका है जिसमें जनरेटिव एआई मॉडल को पसंद के मुताबिक आउटपुट पाने के लिए निर्देश या सवाल दिए जाते हैं. सवालों में नियम और शर्तें जोड़कर जवाब देना एक सामान्य तरीका है. इससे आउटपुट को सुरक्षित, काम का, और उम्मीद के मुताबिक बनाने में मदद मिल सकती है.

समीक्षा के फ़्लो

सदस्यताएं प्रोसेस करना (अपडेट)

780d0802f77dd180.png

सोर्स कोड की समीक्षा करना

Apps Script प्रोजेक्ट में बदलाव करना ज़रूरी है.

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 प्रोजेक्ट अपडेट करें

अपने स्थानीय परिवेश में, यह तरीका अपनाएं:

  1. अपने टर्मिनल की मौजूदा डायरेक्ट्री को issue-management/4-inclusivity-help में बदलें. इसमें वह सोर्स कोड होता है जिसकी आपको ज़रूरत है.
  2. issue-management/3-message-monitoring/.clasp.json फ़ाइल को अपनी मौजूदा डायरेक्ट्री में कॉपी करें.
  3. issue-management/3-message-monitoring/Configuration.js फ़ाइल को अपनी मौजूदा डायरेक्ट्री में कॉपी करें, ताकि वह मौजूदा डायरेक्ट्री की जगह ले सके.
  4. नीचे दिए गए निर्देश का इस्तेमाल करें:
clasp push

इसे आज़माएँ

Google Chat में यह तरीका अपनाएं:

  1. ऐप्लिकेशन को /create स्लैश कमांड के साथ डायरेक्ट मैसेज भेजें. ऐसा करने पर, एक डायलॉग बॉक्स खुलेगा.
  2. टाइटल को Issue Title 4 पर सेट करें.
  3. जानकारी को समस्या Description 4 के तौर पर सेट करें.
  4. बनाएं पर क्लिक करें.
  5. नए बनाए गए स्पेस में, It happened to me last week as well भेजें.

Apps Script कंसोल में यह तरीका अपनाएं:

  1. अपना प्रोजेक्ट चुनें.
  2. एडिटर को चुनें.
  3. WorkspaceEvent.gs फ़ाइल चुनें.
  4. Run सेक्शन में जाकर, processSubscription को चुनें.
  5. चलाएं पर क्लिक करें. एक्ज़ीक्यूशन लॉग से यह देखा जा सकता है कि मैसेज प्रोसेस हो गए थे.

Google Chat में यह तरीका अपनाएं:

  1. ध्यान दें कि ऐप्लिकेशन ने नए बनाए गए स्पेस में, बिना किसी भेदभाव के सभी को शामिल करने से जुड़ी कोई मदद नहीं भेजी है.
  2. नए बनाए गए स्पेस में, I had to add myself from the master to fix it मैसेज भेजें.

Apps Script कंसोल में यह तरीका अपनाएं:

  1. अपना प्रोजेक्ट चुनें.
  2. एडिटर को चुनें.
  3. WorkspaceEvent.gs फ़ाइल चुनें.
  4. Run सेक्शन में जाकर, processSubscription को चुनें.
  5. चलाएं पर क्लिक करें. एक्ज़ीक्यूशन लॉग से यह देखा जा सकता है कि मैसेज प्रोसेस हो गए थे. Google Chat में, ऐप्लिकेशन ने नए स्पेस में, बिना किसी भेदभाव के सभी को शामिल करने से जुड़ा सहायता मैसेज भेजा है.

7936342847acbe2d.png

7. ज़रूरी नहीं: ऐप्लिकेशन 1: प्राथमिकताएं जोड़ना

.

कॉन्सेप्ट की समीक्षा करें

ऐक्सेसरी विजेट, बिना किसी सीमा वाला एक विजेट होता है. यह किसी ऐप्लिकेशन से भेजे जाने वाले मैसेज के नीचे होता है. आम तौर पर, इसका इस्तेमाल इसलिए किया जाता है, ताकि उपयोगकर्ता किसी खास मैसेज पर तुरंत प्रतिक्रिया दे सके. तकनीकी रूप से, यह कार्ड बटन जैसे मुख्य सिद्धांतों पर आधारित है.

eebe88238f6b13f.png

समीक्षा के फ़्लो

बिना किसी भेदभाव के सभी को शामिल करने से जुड़ी सहायता बंद करें

1bb7a8592ee6221e.png

सोर्स कोड की समीक्षा करना

Apps Script प्रोजेक्ट में बदलाव करना ज़रूरी है.

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 प्रोजेक्ट अपडेट करें

अपने स्थानीय परिवेश में, यह तरीका अपनाएं:

  1. अपने टर्मिनल की मौजूदा डायरेक्ट्री को issue-management/5-disable-help में बदलें. इसमें वह सोर्स कोड होता है जिसकी आपको ज़रूरत है.
  2. issue-management/4-inclusivity-help/.clasp.json फ़ाइल को अपनी मौजूदा डायरेक्ट्री में कॉपी करें.
  3. issue-management/4-inclusivity-help/Configuration.js फ़ाइल को अपनी मौजूदा डायरेक्ट्री में कॉपी करें, ताकि वह मौजूदा डायरेक्ट्री की जगह ले सके.
  4. नीचे दिए गए निर्देश का इस्तेमाल करें:
clasp push

इसे आज़माएँ

सहायता बंद करना

  • Google Chat में, चौथे अंक के बारे में बताने वाले स्पेस में, आपने स्लैश कमांड /create का इस्तेमाल करके मैसेज भेजा था. अब मैसेज I had to add myself from the master to fix भेजें.

Apps Script कंसोल में यह तरीका अपनाएं:

  1. अपना प्रोजेक्ट चुनें.
  2. एडिटर को चुनें.
  3. WorkspaceEvent.gs फ़ाइल चुनें.
  4. Run सेक्शन में जाकर, processSubscription को चुनें.
  5. चलाएं पर क्लिक करें. एक्ज़ीक्यूशन लॉग से यह देखा जा सकता है कि मैसेज प्रोसेस हो गए थे.

Google Chat में यह तरीका अपनाएं:

  1. ध्यान दें कि ऐप्लिकेशन ने ऐक्सेसरी विजेट से जुड़ी समस्या के बारे में जानकारी देने वाले स्पेस में, बिना किसी भेदभाव के सभी को शामिल करने वाली सहायता वाला मैसेज भेजा है.
  2. बिना किसी भेदभाव के सभी को शामिल करने से जुड़ी सहायता पाने की सुविधा बंद करने के लिए, ऐक्सेसरी विजेट पर क्लिक करें.

de722cff1928dec9.png

बंद होने की स्थिति देखें

  • Google Chat में, चौथे अंक के बारे में बताने वाले स्पेस में, आपने स्लैश कमांड /create का इस्तेमाल करके मैसेज भेजा था. अब मैसेज I had to add myself from the master to fix भेजें.

Apps Script कंसोल में यह तरीका अपनाएं:

  1. अपना प्रोजेक्ट चुनें.
  2. एडिटर को चुनें.
  3. WorkspaceEvent.gs फ़ाइल चुनें.
  4. Run सेक्शन में जाकर, processSubscription को चुनें.
  5. चलाएं पर क्लिक करें. एक्ज़ीक्यूशन लॉग से यह देखा जा सकता है कि मैसेज प्रोसेस हो गए थे. Google Chat में, इस ऐप्लिकेशन ने समस्या से जुड़े स्पेस पर, बिना किसी भेदभाव के सभी को शामिल करने से जुड़ी सहायता का मैसेज नहीं भेजा, क्योंकि इसे बंद कर दिया गया था.

347d659db53b73e9.png

8. ऐप्लिकेशन 2: बिल्ड

कॉन्सेप्ट की समीक्षा करना

जनरेटिव एआई ग्राउंडिंग

इसका मकसद, एआई मॉडल को जानकारी के ऐसे सोर्स से जोड़ना है जिनकी पुष्टि की जा सके. इससे मॉडल को ज़्यादा भरोसेमंद और तथ्यों पर आधारित बनाया जा सकेगा. यह तकनीक एआई (AI) को जानकारी ईजाद करने से रोकने में मदद करती है. साथ ही, इससे मिलने वाले जवाबों को कॉन्टेक्स्ट के हिसाब से सही और पक्षपातपूर्ण बनाने में मदद मिलती है.

प्राकृतिक भाषा

आर्टिफ़िशियल या कंप्यूटर पर आधारित भाषाओं के उलट, रोज़ाना की बातचीत के लिए ऐसी कोई भी भाषा जिसे कोई व्यक्ति बोल या लिखता है.

क्लाउड स्टोरेज

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

Dialogflow CX का डेटा स्टोर

Dialogflow CX, डेटा स्टोर के साथ इंटिग्रेट करता है. ये उन वेबसाइटों और दस्तावेज़ों का कलेक्शन होते हैं जिनका इस्तेमाल डेटा स्टोर एजेंट करते हैं, ताकि खास डेटा की मदद से असली उपयोगकर्ता के सवालों के जवाब ढूंढे जा सकें. किसी सवाल के लिए, डेटा स्टोर एजेंट, दिए गए सोर्स कॉन्टेंट से जवाब खोजता है. साथ ही, नतीजों की खास जानकारी से, एक सटीक जवाब तैयार करता है. इसमें जवाब के सोर्स के सहायक लिंक भी दिए गए हैं, ताकि असली उपयोगकर्ता को ज़्यादा जानकारी मिल सके.

आर्किटेक्चर की समीक्षा करें

9d3342d12f3b4dda.png

इस Google Chat ऐप्लिकेशन को Dialogflow CX के साथ बनाया गया है और यह इस तरह काम करता है:

  1. उपयोगकर्ता, ऐप्लिकेशन को डायरेक्ट मैसेज या स्पेस में मैसेज भेजता है.
  2. यह ऐप्लिकेशन, Dialogflow CX एजेंट होता है और किसी Google Cloud प्रोजेक्ट से जुड़ा होता है. इसके बाद, वह मैसेज को प्रोसेस करता है.
  3. यह ऐप्लिकेशन, Cloud Storage में मौजूद डेटा स्टोर के साथ इंटिग्रेट हो जाता है.
  4. ऐप्लिकेशन, डायरेक्ट मैसेज या ओरिजनल स्पेस में सिंक्रोनस जवाब भेजता है.

फ़्लो की समीक्षा करें

सवाल का जवाब दें

aad9fb5a7ca48956.png

सोर्स कोड की समीक्षा करना

आपको जिस सोर्स की ज़रूरत होती है वह कोई कोड नहीं होता, बल्कि वह डेटा है जिसका इस्तेमाल आधार बनाने के लिए किया जाता है.

google-chat-overview.pdf

इसमें Google Chat ऐप्लिकेशन की अनस्ट्रक्चर्ड जानकारी शामिल होती है. यह Google Workspace डेवलपर वेबसाइट के किसी पेज का प्रिंट वर्शन होता है.

e9b91c4587b1a3a0.png

Google Cloud प्रोजेक्ट अपडेट करें

Google Cloud Console में, यह तरीका अपनाएं:

  1. Dialogflow और Cloud Storage API को चालू करें.

  1. Vertex AI Agent Builder API चालू करें.

  1. मेन्यू ≡ > एपीआई और सेवाएं > चालू एपीआई और सेवाएं पर क्लिक करें और फिर पुष्टि करें कि सभी एपीआई चालू हैं.

.

Dialogflow CX का डेटा स्टोर एजेंट बनाएं

नॉलेज डेटा शुरू करना

Google Cloud Console में, यह तरीका अपनाएं:

  1. मेन्यू ≡ > क्लाउड स्टोरेज > बकेट पर क्लिक करें.

4f15978ae9f1b687.png

  1. बनाएं पर क्लिक करें.
  2. नाम को gchat-knowledge पर सेट करें.
  3. बनाएं पर क्लिक करें.

6b38c6d4d2c41bba.png

  1. gchat-knowledge बकेट चुनें.
  2. फ़ाइलें अपलोड करें पर क्लिक करें.
  3. अपने लोकल एनवायरमेंट से knowledge-app/grounding/google-chat-overview.pdf फ़ाइल चुनें.

df89acb22e1762af.png

ऐप्लिकेशन बनाएं

Google Cloud Console में, यह तरीका अपनाएं:

  1. मेन्यू ≡ > एजेंट बिल्डर > ऐप्लिकेशन पर क्लिक करें.

  1. नया ऐप्लिकेशन पर क्लिक करें.
  2. चैट का कोई टाइप चुनें.

44276003074bcf14.png

  1. Company name को अपनी कंपनी के नाम पर सेट करें.
  2. Agent name को knowledge पर सेट करें.
  3. जारी रखें पर क्लिक करें.

c4fedfd7556f723b.png

  1. नया डेटा स्टोर बनाएं पर क्लिक करें.
  2. डेटा सोर्स के तौर पर Cloud Storage चुनें.

6e2440ecf0f8f9bd.png

  1. फ़ाइल चुनें.
  2. ब्राउज़ करें पर क्लिक करें.
  3. google-chat-overview.pdf फ़ाइल चुनें.
  4. जारी रखें पर क्लिक करें.
  5. डेटा स्टोर के नाम को gchat-knowledge-ds पर सेट करें.
  6. बनाएं पर क्लिक करें.

a675df7490b83900.png

  1. टेबल में gchat-knowledge-ds का डेटा स्टोर चुनें.
  2. बनाएं पर क्लिक करें.

f121d580771ed96.png

  1. कुछ मिनट के बाद, मेन्यू ≡ > एजेंट बिल्डर > ऐप्लिकेशन पर क्लिक करें और देखें कि आपको ऐप दिख रहा है.

d929a7431dd84968.png

  1. मेन्यू ≡ > एजेंट बिल्डर > डेटा स्टोर पर क्लिक करें.

  1. gchat-knowledge-ds डेटा स्टोर पर क्लिक करें. दस्तावेज़ों की संख्या 1 है. इससे पता चलता है कि दस्तावेज़ तैयार हैं.

558319790a0accf2.png

ऐप्लिकेशन को पूरा करना और उसकी जांच करना

Dialogflow CX कंसोल में, यह तरीका अपनाएं:

  1. अपना Google Cloud प्रोजेक्ट चुनें.
  2. नॉलेज एजेंट चुनें.

ca9b2fb4be92e8e4.png

  1. एजेंट सेटिंग > जनरेटिव एआई > जनरेटिव एजेंट चुनें.
  2. मॉडल को Text Bison से Gemini Pro पर स्विच करें.
  3. सेव करें पर क्लिक करें.

68cc4713ec9b25a0.png

  1. टेस्ट एजेंट पर क्लिक करें.
  2. What is Google Chat? भेजें. एजेंट कुछ सार्थक जवाब देता है.

8e3a2cb02469041a.png

Google Chat ऐप्लिकेशन को इंटिग्रेट करना

Dialogflow CX कंसोल में, यह तरीका अपनाएं:

  1. अपना Google Cloud प्रोजेक्ट चुनें.
  2. नॉलेज एजेंट की लाइन में, 1e7ede7ubae4aa3c.png > नाम कॉपी करें पर क्लिक करें.

e19f61185158110d.png

Google Cloud Console में, यह तरीका अपनाएं:

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

  1. कनेक्शन सेटिंग में जाकर, Dialogflow चुनें.
  2. Dialogflow की सेटिंग में, Dialogflow CX चुनें.
  3. एजेंट या एनवायरमेंट रिसॉर्स का नाम उस एजेंट के नाम पर सेट करें जिसे आपने कॉपी किया है.
  4. दो स्लैश कमांड हटाएं.

505ff39a50880904.png

  1. Google Chat में, What is Google Chat? को डायरेक्ट मैसेज में Google Chat ऐप्लिकेशन पर भेजें. एजेंट इसका जवाब किसी काम की जानकारी देने वाला होता है.

abda9e43b81fb0ea.png

9. ज़रूरी नहीं: ऐप्लिकेशन 2: सोर्स जोड़ना

कॉन्सेप्ट की समीक्षा करना

Dialogflow CX वेबहुक

ऐसी सेवा जो कारोबारी नियम को होस्ट करती है या दूसरी सेवाओं को कॉल करती है. डायलॉग फ़्लो CX सेशन के दौरान, वेबहुक नैचुरल लैंग्वेज प्रोसेसिंग से निकाले गए डेटा पर भरोसा करके, डाइनैमिक रिस्पॉन्स जनरेट कर सकते हैं. साथ ही, इकट्ठा किए गए डेटा की पुष्टि कर सकते हैं या बैकएंड पर कार्रवाइयां ट्रिगर कर सकते हैं.

Cloud के फ़ंक्शन

Cloud Functions की मदद से, बिना सर्वर वाले बैकएंड बनाए जा सकते हैं. साथ ही, रीयल-टाइम डेटा प्रोसेसिंग और बेहतर ऐप्लिकेशन बनाने के लिए भी इनका इस्तेमाल किया जा सकता है. प्रावधान, मैनेज, पैच या अपडेट करने के लिए कोई सर्वर मौजूद नहीं है. ये मेट्रिक अपने-आप स्केल हो जाती हैं. ये पूरी तरह से उपलब्ध होती हैं और किसी भी गड़बड़ी को पूरा करने में मददगार होती हैं.

फ़्लो की समीक्षा करें

सवाल का जवाब दें (अपडेट करें)

92767c07c7b252aa.png

सोर्स कोड की समीक्षा करना

एजेंट के जवाबों को Google Chat के मैसेज के हिसाब से ढालने के लिए, आपको सिर्फ़ एक सोर्स कोड की ज़रूरत होगी. इसका इस्तेमाल वेबहुक के तौर पर किया जाता है.

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 प्रोजेक्ट अपडेट करना

Google Cloud Console में, यह तरीका अपनाएं:

  1. Cloud Build, Cloud Functions, Cloud Logging, Artifact Registry, और Cloud Run API को चालू करें.

  1. मेन्यू ≡ > एपीआई और सेवाएं > चालू एपीआई और सेवाएं पर क्लिक करें और फिर पुष्टि करें कि एपीआई चालू हैं.

Dialogflow CX के डेटा स्टोर एजेंट को अपडेट करें

आपको एक क्लाउड फ़ंक्शन डिप्लॉय करना होगा और Dialogflow CX वेबहुक को अपडेट करना होगा, ताकि जब भी संभव हो, तब उसे कई सोर्स से ट्रिगर किया जा सके.

एक से ज़्यादा सोर्स दिखाना

डिफ़ॉल्ट रूप से, नया डेटा स्टोर एजेंट ज़्यादा से ज़्यादा एक ही सोर्स दिखाता है. हालांकि, ज़्यादा सोर्स के लिए बदलाव किया जा सकता है.

Dialogflow CX कंसोल में, यह तरीका अपनाएं:

  1. अपना Google Cloud प्रोजेक्ट चुनें.
  2. नॉलेज एजेंट चुनें.
  3. स्टार्ट पेज चुनें.
  4. डेटा स्टोर में बदलाव करें चुनें.
  5. एजेंट के जवाब वाले सेक्शन में, डेटा स्टोर से मिलने वाले जवाब के विकल्पों को 5 पर सेट करें.
  6. सेव करें पर क्लिक करें.

f5932d03057df645.png

Cloud फ़ंक्शन शुरू करना

Google Cloud Console में, यह तरीका अपनाएं:

  1. मेन्यू ≡ > क्लाउड फ़ंक्शन पर क्लिक करें.

  1. फ़ंक्शन बनाएं पर क्लिक करें.
  2. बुनियादी जानकारी में जाकर, नाम को function-1 पर सेट करें.
  3. पुष्टि करना में जाकर, ऐसी बातचीत को अनुमति दें जिसकी पुष्टि नहीं की गई है रेडियो बटन को चुनें.
  4. रनटाइम, बिल्ड, कनेक्शन, और सुरक्षा सेटिंग में जाकर, ज़्यादा से ज़्यादा इंस्टेंस को 3 पर सेट करें.
  5. आगे बढ़ें पर क्लिक करें.

bd3790a9285f9c07.png

  1. एंट्री पॉइंट को agent-response-adapter पर सेट करें.
  2. डिफ़ॉल्ट कॉन्टेंट को knowledge-app/agent-response-adapter डायरेक्ट्री में मौजूद फ़ाइलों से बदलें.
  3. डिप्लॉय करें पर क्लिक करें.

b379bb8ca0fc1079.png

  1. फ़ंक्शन के लागू होने के लिए कुछ मिनट इंतज़ार करें, तब तक यूआरएल कॉपी करें.

eaae08cf048b9b1c.png

वेबहुक शुरू करना

आपको नए डिप्लॉय किए गए फ़ंक्शन को ट्रिगर करने वाले वेबहुक का इस्तेमाल करने के लिए, Dialogflow CX एजेंट को कॉन्फ़िगर करना होगा.

Dialogflow CX कंसोल में, यह तरीका अपनाएं:

  1. अपना Google Cloud प्रोजेक्ट चुनें.
  2. नॉलेज एजेंट चुनें.
  3. मैनेज करें > वेबहुक > बनाएं चुनें.
  4. डिसप्ले नेम को Google Chat Response Adapter पर सेट करें.
  5. उस यूआरएल में वेबहुक यूआरएल सेट करें जिसे आपने पहले कॉपी किया था.
  6. सेव करें पर क्लिक करें.

5f3c6804d52b87c1.png

  1. बनाएं पर क्लिक करें.
  2. स्टार्ट पेज चुनें.
  3. डेटा स्टोर में बदलाव करें चुनें.
  4. वेबहुक सेटिंग में जाकर, वेबहुक चालू करें टॉगल पर क्लिक करें.
  5. वेबहुक के लिए Google Chat रिस्पॉन्स अडैप्टर चुनें.
  6. टैग को arbitrary_tag पर सेट करें.
  7. सेव करें पर क्लिक करें.

442fcaaec9b8f2e3.png

टेस्ट ऐप्लिकेशन

  • Google Chat में, Google Chat ऐप्लिकेशन पर डायरेक्ट मैसेज में What is Google Chat? भेजें. इसके बाद, एजेंट बेहतर जानकारी देने वाला एक कार्ड दिखाता है. इसमें दिए गए सोर्स की जानकारी भी होती है.

9468866bfe848bb8.png

10. ऐप्लिकेशन 3: बिल्ड

कॉन्सेप्ट की समीक्षा करना

बातचीत वाली बातचीत

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

OpenAPI की जानकारी

यह, एपीआई के लाइफ़साइकल के हर चरण में जानकारी ले जाने का एक जैसा तरीका उपलब्ध कराता है. यह एचटीटीपी एपीआई के लिए एक खास भाषा है. यह स्ट्रक्चर और सिंटैक्स को इस तरह से तय करती है कि उसे उस प्रोग्रामिंग भाषा से नहीं जोड़ा जा सकता जिसमें एपीआई बनाया गया है. आम तौर पर, एपीआई की खास जानकारी को YAML या JSON फ़ॉर्मैट में लिखा जाता है. इससे स्पेसिफ़िकेशन को आसानी से शेयर और इस्तेमाल किया जा सकता है.

Dialogflow CX एजेंट

एजेंट ऐप्लिकेशन का बुनियादी बिल्डिंग ब्लॉक. आम तौर पर, एजेंट ऐप्लिकेशन में कई एजेंट होते हैं. यहां हर एजेंट को कुछ खास टास्क हैंडल करने के लिए तय किया जाता है. एजेंट का डेटा, एलएलएम को दिया जाता है, ताकि इसके पास सवालों के जवाब देने और टास्क पूरे करने के लिए ज़रूरी जानकारी मौजूद हो. हर एजेंट जानकारी दे सकता है, बाहरी सेवाओं को क्वेरी भेज सकता है या बातचीत को आगे बढ़ाने के लिए, Dialogflow CX फ़्लो या किसी दूसरे एजेंट को सब-टास्क असाइन कर सकता है.

Dialogflow CX टूल

टूल का इस्तेमाल, एजेंट ऐप्लिकेशन को बाहरी सिस्टम से कनेक्ट करने के लिए किया जाता है. ये सिस्टम, एजेंट ऐप्लिकेशन की जानकारी को बढ़ा सकते हैं और मुश्किल कामों को बेहतर तरीके से पूरा करने में उनकी मदद कर सकते हैं.

आर्किटेक्चर की समीक्षा करें

9d3342d12f3b4dda.png

इस Google Chat ऐप्लिकेशन को Dialogflow CX के साथ बनाया गया है और यह इस तरह काम करता है:

  1. उपयोगकर्ता, ऐप्लिकेशन को डायरेक्ट मैसेज या स्पेस में मैसेज भेजता है.
  2. यह ऐप्लिकेशन, Dialogflow CX एजेंट होता है और किसी Google Cloud प्रोजेक्ट से जुड़ा होता है. इसके बाद, वह मैसेज को प्रोसेस करता है.
  3. ऐप्लिकेशन, किसी एजेंट से इंटिग्रेट होता है.
  4. ऐप्लिकेशन, डायरेक्ट मैसेज या ओरिजनल स्पेस में सिंक्रोनस जवाब भेजता है.

फ़्लो की समीक्षा करें

समीक्षा इकट्ठा करें

a67a5b8b513bfc2c.png

सोर्स कोड की समीक्षा करना

आपको सिर्फ़ उस सोर्स कोड की ज़रूरत होती है जो एजेंट, टूल के तौर पर इस्तेमाल की जाने वाली बैकएंड सेवा की नकल करता है.

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

बैकएंड सेवा मॉक शुरू करें

किसी ऐसी बैकएंड सेवा को सिम्युलेट करने के लिए, Cloud फ़ंक्शन डिप्लॉय किया जाता है जिसे Dialogflow CX एजेंट ऐप्लिकेशन को इंटिग्रेट करके, एक टूल के तौर पर कॉल किया जाता है.

Google Cloud Console में, यह तरीका अपनाएं:

  1. मेन्यू ≡ > क्लाउड फ़ंक्शन पर क्लिक करें.

  1. फ़ंक्शन बनाएं पर क्लिक करें.
  2. बुनियादी जानकारी में जाकर, नाम को function-2 पर सेट करें.
  3. पुष्टि करना में जाकर, ऐसी बातचीत को अनुमति दें जिसकी पुष्टि नहीं की गई है रेडियो बटन चुनें.
  4. रनटाइम, बिल्ड, कनेक्शन, और सुरक्षा सेटिंग में जाकर, ज़्यादा से ज़्यादा इंस्टेंस को 3 पर सेट करें.
  5. आगे बढ़ें पर क्लिक करें.

e8cf0ee7441bf634.png

  1. एंट्री पॉइंट को feedback-app-backend पर सेट करें.
  2. डिफ़ॉल्ट कॉन्टेंट को feedback-app डायरेक्ट्री में मौजूद फ़ाइलों से बदलें.
  3. डिप्लॉय करें पर क्लिक करें.

bdb5cf9f503aa7f6.png

  1. फ़ंक्शन के लागू होने के लिए कुछ मिनट इंतज़ार करें, तब तक यूआरएल कॉपी करें.

Dialogflow CX एजेंट ऐप्लिकेशन बनाएं

ऐप्लिकेशन बनाएं

Google Cloud Console में, यह तरीका अपनाएं:

  1. मेन्यू ≡ > एजेंट बिल्डर > ऐप्लिकेशन पर क्लिक करें.

  1. नया ऐप्लिकेशन पर क्लिक करें.
  2. एजेंट चुनें.
  3. डिसप्ले नेम को Feedback App पर सेट करें.
  4. बनाएं पर क्लिक करें.

7ef3dbacee96c5aa.png

टूल शुरू करें

Google Cloud Console में, यह तरीका अपनाएं:

  1. मेन्यू ≡ > एजेंट बिल्डर > ऐप्लिकेशन पर क्लिक करें.

  1. फ़ीडबैक ऐप्लिकेशन एजेंट चुनें.
  2. टूल > + बनाएं पर क्लिक करें.
  3. नाम को review पर सेट करें.
  4. OpenAPI चुनें.
  5. description को नीचे दी गई वैल्यू पर सेट करें:
The tool takes the number of stars as a parameter of the store review method and saves it in a database for later use.
  1. feedback-app/service-openapi.yaml फ़ाइल में $URL को उस यूआरएल से बदलें जिसे आपने पहले कॉपी किया था.
  2. YAML Schema को feedback-app/service-openapi.yaml फ़ाइल के बदलाव किए गए कॉन्टेंट पर सेट करें.
  3. सेव करें पर क्लिक करें.

58085d6d56b603f7.png

एजेंट के अनुरोध को शुरू करना

Google Cloud Console में, यह तरीका अपनाएं:

  1. मेन्यू ≡ > एजेंट बिल्डर > ऐप्लिकेशन पर क्लिक करें.

  1. फ़ीडबैक ऐप्लिकेशन एजेंट चुनें.
  2. एजेंट > डिफ़ॉल्ट जनरेटिव एजेंट चुनें.
  3. एजेंट का नाम, Feedback collector पर सेट करें.
  4. goal को नीचे दी गई वैल्यू पर सेट करें:
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.
  1. नीचे दिए गए मान के लिए instructions सेट करें:
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.
  1. सेव करें पर क्लिक करें.

ebee7fdfa826b487.png

टेस्ट के लिए ऐप्लिकेशन

Google Cloud Console में, यह तरीका अपनाएं:

  1. मेन्यू ≡ > एजेंट बिल्डर > ऐप्लिकेशन पर क्लिक करें.

  1. फ़ीडबैक ऐप्लिकेशन एजेंट चुनें.
  2. एजेंट की झलक देखें पर जाएं.
  3. एजेंट में, सुझाव कलेक्टर को चुनें.
  4. जनरेटिव मॉडल चुनें में जाकर, gemini-pro चुनें.
  5. शुरू करने के लिए, Hello! मैसेज भेजें.

90ca8cb7b2c1cb4b.png

Google Cloud Console में, यह तरीका अपनाएं:

  1. मेन्यू ≡ > क्लाउड फ़ंक्शन पर क्लिक करें.

  1. फ़ंक्शन-2 > लॉग चुनें. कुछ लॉग में, Google-Dialogflow को कॉलर के तौर पर दिखाया गया है.

48bfdf1788004d18.png

Google Chat ऐप्लिकेशन को इंटिग्रेट करें

Dialogflow CX कंसोल में, यह तरीका अपनाएं:

  1. अपना Google Cloud प्रोजेक्ट चुनें.
  2. Feedback App एजेंट के ऐक्शन मेन्यू पर क्लिक करें.
  3. नाम कॉपी करें पर क्लिक करें.

Google Cloud Console में, यह तरीका अपनाएं:

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

  1. एजेंट या एनवायरमेंट रिसॉर्स का नाम उस एजेंट के नाम पर सेट करें जिसे आपने पहले कॉपी किया था.

df16619a1cb85cf8.png

  • Google Chat में, Hello! को डायरेक्ट मैसेज में Google Chat ऐप्लिकेशन में भेजें. यह एजेंट, Dialogflow CX कंसोल से मिलने वाले आपके टेस्ट जैसा जवाब देता है.

99a7a0295f122f31.png

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

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

हमारा सुझाव है कि इस कोडलैब में इस्तेमाल किए गए संसाधनों के लिए, आपके Google Cloud खाते पर कोई शुल्क न पड़े. इसके लिए, हमारा सुझाव है कि आप Google Cloud प्रोजेक्ट मिटा दें.

Google Cloud Console में, यह तरीका अपनाएं:

  1. मेन्यू ≡ > IAM और एडमिन > सेटिंग पर क्लिक करें.

  1. शट डाउन करें पर क्लिक करें.
  2. प्रोजेक्ट आईडी डालें.
  3. फिर भी शट डाउन करें पर क्लिक करें.

407699a4e03afea6.png

Apps Script प्रोजेक्ट मिटाएं

हमारा सुझाव है कि आप अपना Apps Script प्रोजेक्ट भी मिटा दें.

Apps Script कंसोल में यह तरीका अपनाएं:

  1. अपना प्रोजेक्ट चुनें.
  2. ऐक्शन मेन्यू पर क्लिक करें.
  3. हटाएं पर क्लिक करें.

fa3a42d7d2201eb9.png

12. बधाई

बधाई हो! आपने Gemini की मदद से Google Chat ऐप्लिकेशन बनाए!

आगे क्या करना है?

हमने इस कोडलैब में सिर्फ़ इस्तेमाल के आसान उदाहरण दिखाए हैं, लेकिन Google Chat ऐप्लिकेशन में कई ऐसी चीज़ें हैं जिन पर शायद आप ध्यान देना चाहें. जैसे:

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

ज़्यादा जानें