با Gemini برنامه هایی برای چت گوگل بسازید

۱. قبل از شروع

برنامه‌های چت گوگل با جمینی چیست؟

برنامه‌های چت گوگل با Gemini موارد زیر را انجام می‌دهند:

  • خدمات و منابع خود را به Google Chat بیاورید، که به کاربران امکان می‌دهد بدون ترک مکالمه، اطلاعات دریافت کرده و اقدامی انجام دهند.
  • با مدل هوش مصنوعی مولد Gemini ادغام شوید، تا بتوانند داده‌هایی مانند متن یا تصاویر را در زمان‌های خاص ایجاد یا جستجو کنند تا گردش کار شما ساده‌تر شود.

چرا برنامه‌های گوگل چت را با Gemini ادغام کنیم؟

موارد استفاده معمول مدل‌های هوش مصنوعی مولد مانند Gemini در دسته‌های زیر قرار می‌گیرند:

  • تولید و بهبود محتوا . تولید محتوای بازاریابی، ساخت پست‌های رسانه‌های اجتماعی، خلق تصاویر واقع‌گرایانه، آهنگسازی موسیقی یا کمک به تولید محتوای ویدیویی.
  • جستجوی داده‌ها . استخراج بینش‌های کلیدی از یک پایگاه دانش بدون ساختار، خلاصه‌سازی متون طولانی، طبقه‌بندی محتوا یا ترجمه زبان‌ها با دقت و سرعت بیشتر.
  • مکالمه . در مکالمات طبیعی، آموزنده و خلاقانه شرکت کنید.

امکان ادغام مستقیم این قابلیت‌ها در رابط کاربری آشنای گوگل چت، فرصت بزرگی برای هر کسی است که می‌خواهد تجربه و بهره‌وری کاربران خود را بهبود بخشد.

پیش‌نیازها

آنچه می‌سازید

در این آزمایشگاه کد، شما سه برنامه گوگل چت با Gemini می‌سازید تا سه مورد استفاده معرفی شده در بخش قبلی را پوشش دهید.

اپلیکیشن مدیریت مشکلات (ایجاد و بهبود محتوا)

این برنامه موارد زیر را انجام می‌دهد:

  • مشکلات را از ایجاد تا بسته شدن با تعاملات اولیه، صفحه اصلی برنامه و احراز هویت برنامه مدیریت می‌کند.
  • پیام‌ها را رصد می‌کند و در مورد رویدادها و ویجت‌های جانبی، کمک‌های جامع ارائه می‌دهد.

شما از Gemini برای انجام موارد زیر استفاده می‌کنید:

  • گزارش‌های مربوط به مشکلات را بر اساس تاریخچه پیام‌ها و جزئیات مشکلات ایجاد کنید.
  • کلمات غیرفراگیر را در پیام‌هایی که حاوی پیام‌های محدودکننده هستند، طبقه‌بندی کنید.

فناوری‌های اصلی مورد استفاده عبارتند از Vertex AI، Gemini، Apps Script و APIهای Google Workspace (مدیر، چت، اسناد، رویدادها).

۲۲efdecff4601417.png

2d127c63518673b2.png

9aea694937f2f3ed.png

این برنامه برای درک و پاسخ به سوالات به زبان طبیعی و بازگرداندن منابع از داده‌های بدون ساختار، به Gemini متکی است.

فناوری‌های اصلی مورد استفاده عبارتند از عامل ذخیره داده Dialogflow CX، وب‌هوک Dialogflow CX، توابع Google Cloud و Gemini.

۹۴۶۸۸۶۶bfe۸۴۸bb۸.png

برنامه بازخورد (گفتگو)

این برنامه برای جمع‌آوری و ذخیره نظرات به همراه مکالمات به زبان طبیعی، به Gemini متکی است.

فناوری‌های اصلی مورد استفاده عبارتند از عامل Dialogflow CX، ابزار Dialogflow CX، OpenAPI، توابع Google Cloud و Gemini.

99a7a0295f122f31.png

آنچه یاد می‌گیرید

  • نحوه ادغام برنامه‌های گوگل چت با Gemini از طریق Vertex AI.
  • نحوه ادغام برنامه‌های گوگل چت با عوامل تجربه مشتری Dialogflow.
  • نحوه استفاده از جدیدترین ویژگی‌های گوگل چت: صفحه اصلی برنامه، رویدادهای گوگل چت و ابزارک‌های جانبی.

آنچه شما نیاز دارید

۲. آماده شوید

مقداردهی اولیه منابع

در این بخش، شما از طریق مرورگر وب دلخواه خود به منابع زیر دسترسی پیدا کرده و آنها را پیکربندی می‌کنید.

پروژه اسکریپت برنامه‌ها

در کنسول Apps Script ، مراحل زیر را دنبال کنید:

  1. روی تنظیمات کلیک کنید و سپس API اسکریپت Google Apps را فعال کنید.

ea06c593b347b9d1.png

  1. پروژه خود را انتخاب کنید.
  2. روی تنظیمات پروژه کلیک کنید.
  3. کادر انتخاب نمایش فایل مانیفست « appsscript.json » در ویرایشگر را علامت بزنید .
  4. نام پروژه را به Chat Apps Gemini تغییر دهید.

12c1485bd248b766.png

پروژه گوگل کلود

در کنسول گوگل کلود ، مراحل زیر را دنبال کنید:

  1. پروژه خود را انتخاب کنید.
  2. روی منو ☰ > APIها و خدمات > صفحه رضایت OAuth > ویرایش برنامه کلیک کنید و سپس نام برنامه را روی Chat Apps Gemini تنظیم کنید.

  1. به پیکربندی Google Chat API بروید و سپس نام و توضیحات برنامه را روی Chat Apps Gemini تنظیم کنید.

a71f040755da3b8b.png

گوگل چت

در گوگل چت ، مراحل زیر را دنبال کنید:

  1. در صورت لزوم، با برنامه Google Chat خود چت را شروع کنید.
  2. برای اطمینان از کارکرد آن، پیامی مانند Hello ارسال کنید.

۹۶۲۵۴۱۸۲۵۱۵۲٨ae9.png

دانلود کد منبع و منابع به صورت محلی

  1. این مخزن گیت‌هاب را دانلود کنید.

  1. در محیط توسعه‌ی دلخواه خود، پوشه‌ی apps-script را باز کنید و سپس در ترمینال خود به همان پوشه بروید.

da9478df97c99194.png

نصب و پیکربندی clasp

ما clasp برای ویرایش و انتقال آسان نسخه‌های کد منبع از محیط محلی به پروژه Apps Script استفاده می‌کنیم.

  1. در محیط محلی خود، آخرین نسخه‌های node ، npm و clasp را نصب کنید .
npm install -g @google/clasp
  1. با حساب کاربری خود وارد شوید :
clasp login

8bc2434e6dc6f22a.png

در صورت موفقیت، یک صفحه تأیید اولیه در مرورگر وب خود مشاهده می‌کنید و فایل .clasprc.json حاوی اطلاعات کاربری کلاینت شما به‌روزرسانی می‌شود. می‌توانید محل قرارگیری آن را در ترمینال خود پیدا کنید.

e1d833eb4d5b3a8f.png

۳. برنامه ۱: ساخت

مفاهیم را مرور کنید

هوش مصنوعی ورتکس

ورتکس ای‌آی هر آنچه را که برای ساخت و استفاده از هوش مصنوعی مولد نیاز دارید، از جمله راهکارهای هوش مصنوعی، سازنده عامل، بیش از ۱۳۰ مدل پایه و یک پلتفرم هوش مصنوعی یکپارچه، ارائه می‌دهد.

c9e9c7a1945b22ac.png

جوزا

Gemini یک دوره کارشناسی ارشد مدیریت چندوجهی از گوگل است که از طریق Vertex AI قابل دسترسی است. این دوره به افراد کمک می‌کند تا پتانسیل انسانی خود را شکوفا کنند تا بتوانند تخیل خود را تقویت کنند، کنجکاوی خود را گسترش دهند و بهره‌وری خود را افزایش دهند.

سرویس چت پیشرفته

سرویس چت پیشرفته به شما امکان می‌دهد از API چت گوگل در Apps Script استفاده کنید. این به اسکریپت‌ها اجازه می‌دهد فضاهای چت را پیدا، ایجاد و تغییر دهند، اعضا را به فضاها اضافه یا حذف کنند و پیام‌های حاوی متن، کارت، پیوست و واکنش را بخوانند یا ارسال کنند.

بررسی معماری

8c9c7b7328a69ea6.png

این برنامه‌ی چت گوگل با استفاده از Apps Script ساخته شده است و به شرح زیر عمل می‌کند:

  1. کاربر پیامی را به برنامه ارسال می‌کند، چه از طریق پیام مستقیم و چه از طریق یک فضای خالی.
  2. این برنامه که در یک پروژه Apps Script پیاده‌سازی شده و با یک پروژه Google Cloud مرتبط است، پیام را پردازش می‌کند.
  3. این برنامه با APIهای Google Docs و Google Chat ادغام می‌شود.
  4. این برنامه از سرویس Properties برای ذخیره داده‌ها در ویژگی‌های اسکریپت استفاده می‌کند.
  5. برنامه یک پاسخ همزمان، چه در یک پیام مستقیم و چه در فضای اصلی، ارسال می‌کند.

جریان‌های بررسی

ایجاد مسئله

7ca0e8ba3c8255bb.png

عیب‌یابی مشکل از فضای اختصاصی

51b47714c378a24b.png

بستن مشکل از فضای اختصاصی

89e50228deeab0f9.png

بررسی کد منبع

پروژه Apps Script شامل اسکریپت‌های زیر است:

  • Configuration : ثابت‌هایی که باید بر اساس محیط ویرایش شوند.
  • ChatApp : رویدادهای تعاملی Google Chat، از جمله پیام‌ها، کلیک‌های کارت، دستورات اسلش و دیالوگ‌ها را مدیریت می‌کند.
  • Storage : توابع کاربردی که به سرویس‌های Properties متکی هستند.
  • ChatAppAuth : توابع کاربردی که به احراز هویت برنامه Google Chat متکی هستند.
  • 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",
  ...
]

پیکربندی.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;
}

اسناد.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);
  ...
}

به‌روزرسانی پروژه گوگل کلود

فعال کردن APIها

  1. در کنسول Google Cloud ، رابط‌های برنامه‌نویسی کاربردی Google Docs ، Google Admin SDK و Vertex AI را فعال کنید:

  1. روی منو ☰ > APIها و خدمات > APIها و خدمات فعال‌شده کلیک کنید و سپس تأیید کنید که APIها فعال شده‌اند.

شروع حساب کاربری سرویس

در کنسول گوگل کلود ، مراحل زیر را دنبال کنید:

  1. روی منو ☰ > مدیریت و دسترسی > حساب‌های سرویس > + ایجاد حساب سرویس کلیک کنید.

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 خود از محتوای آن استفاده کنید.

پیکربندی API چت گوگل را به‌روزرسانی کنید

در کنسول گوگل کلود ، مراحل زیر را دنبال کنید:

  1. یک دستور اسلش اضافه کنید.
  2. نام را روی /create تنظیم کنید.
  3. شناسه فرمان را روی 1 تنظیم کنید.
  4. توضیحات را روی Create a new issue تنظیم کنید.
  5. کادر انتخاب «باز کردن یک کادر محاوره‌ای» را علامت بزنید.
  6. یک دستور اسلش دیگر اضافه کنید.
  7. نام را روی /close تنظیم کنید.
  8. شناسه فرمان را روی 2 تنظیم کنید.
  9. تنظیم توضیحات برای Close an issue .
  10. روی ذخیره کلیک کنید.

bee2e7b63659ab33.png

پروژه اسکریپت برنامه‌ها را به‌روزرسانی کنید

  • دایرکتوری فعلی در ترمینال محلی خود را به issue-management/1-baseline تغییر دهید. این دایرکتوری شامل کد منبع است. قبل از ارسال کد منبع به پروژه Apps Script خود، باید چند مورد را پیکربندی کنید.

پیکربندی کد منبع

  1. ثابت JSON با نام CHAT_CREDENTIALS را در فایل Configuration.js روی محتوای فایل کلید خصوصی که قبلاً دانلود کرده‌اید، تنظیم کنید.

d721f6bff73c5304.png

  1. در کنسول گوگل کلود ، روی منو ☰ > مدیریت و دسترسی > تنظیمات کلیک کنید.

  1. شناسه پروژه را کپی کنید.

۸۲۵۹۲fa0bd113469.png

  1. ثابت رشته‌ای با نام PROJECT_ID را در فایل Configuration.js برابر با شناسه پروژه تنظیم کنید.

383cee561130ceba.png

تنظیمات clasp را پیکربندی کنید

برای تنظیم اولیه تنظیمات clasp جهت انتقال کد منبع به پروژه Apps Script مناسب، این مراحل را دنبال کنید:

  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. در گوگل چت ، در یک پیام مستقیم به برنامه، Hello! را ارسال کنید. برنامه پاسخی نمی‌دهد، اما پیامی ظاهر می‌شود که تنظیمات را درخواست می‌کند.

4c1fc68121dcffed.png

  1. روی پیکربندی کلیک کنید.
  2. حساب گوگل خود را انتخاب کنید.
  3. احراز هویت کنید.
  4. بررسی کنید و اجازه دسترسی به برنامه را بدهید.

4a2fd7ac5918bf1a.png

در صورت موفقیت، یک صفحه تأیید اولیه در صفحه وب و یک پاسخ واقعی از برنامه به پیام اصلی خود مشاهده خواهید کرد.

acb9065568fe47d2.png

2d6ef9c62f47e082.png

  1. یک پیام مستقیم دیگر به برنامه ارسال کنید، اما با دستور اسلش /create .

be3f3c6eb0f929c1.png

  1. در کادر محاوره‌ای، عنوان را روی Issue Title 1 تنظیم کنید.
  2. شرح را روی Description 1 تنظیم کنید.
  3. روی ایجاد کلیک کنید.

۲۲efdecff4601417.png

برنامه موارد زیر را انجام می‌دهد:

  1. کادر محاوره‌ای را می‌بندد.
  2. فضایی را به شماره جدید ایجاد شده با همین عنوان اختصاص می‌دهد.
  3. به فضای تازه ایجاد شده می‌پیوندد.
  4. پیامی حاوی شرح مشکل را در فضای تازه ایجاد شده ارسال می‌کند.
  5. یک پیام مستقیم حاوی لینک به فضای تازه ایجاد شده برای شما ارسال می‌کند.

3253cec2392e281f.png

  1. در فضای تازه ایجاد شده، پیامی با دستور اسلش /close و وضوحی مانند Not reproducible ارسال کنید.

۱۳۲cc4acfc10b98c.png

برنامه موارد زیر را انجام می‌دهد:

  1. یک سند گزارش در Google Docs ایجاد می‌کند.
  2. پیامی را به فضای اختصاص داده شده به مسئله با پیوندی به سند گزارش تازه ایجاد شده ارسال می‌کند.

2d127c63518673b2.png

  1. سند گزارش را باز کنید. این سند شامل اطلاعات اولیه، تاریخچه و خلاصه‌ای از آن است.

9aea694937f2f3ed.png

۴. اختیاری: برنامه ۱: افزودن برنامه به خانه

مفاهیم را مرور کنید

صفحه اصلی برنامه ، یک پیام کارتی قابل تنظیم است که یک برنامه چت، زمانی که کاربر از طریق پیام مستقیم با برنامه چت به تب صفحه اصلی دسترسی پیدا می‌کند، برای او ارسال می‌کند. این پیام معمولاً برای نمایش مستندات برنامه یا یک نمای کلی استفاده می‌شود. از نظر فنی، یک رویداد اختصاصی برای مدیریت وجود دارد و بر اساس همان اصول اصلی پیام‌های کارتی است.

65f56f70f67a32e4.png

جریان‌های بررسی

مدیریت مسائل

۱۰۶۶۳f5fc107fb3f.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
  }}]}};
}

به‌روزرسانی پروژه گوگل کلود

در کنسول گوگل کلود ، مراحل زیر را دنبال کنید:

  1. در بخش ویژگی‌های تعاملی ، کادر انتخاب «پشتیبانی برنامه اصلی» را انتخاب کنید.

۹۷۱۵۹c1c69ca8303.png

در محیط محلی خود، مراحل زیر را دنبال کنید:

  1. دایرکتوری فعلی در ترمینال خود را به issue-management/2-app-home تغییر دهید. این دایرکتوری شامل کد منبعی است که باید از آن استفاده کنید.
  2. فایل issue-management/1-baseline/.clasp.json را در دایرکتوری فعلی خود کپی کنید.
  3. فایل issue-management/1-baseline/Configuration.js را در دایرکتوری فعلی خود کپی کنید تا جایگزین فایل موجود شود.
  4. دستور زیر را اجرا کنید:
clasp push

امتحانش کن

در گوگل چت ، مراحل زیر را دنبال کنید:

  1. با دستور اسلش /create یک پیام مستقیم به برنامه ارسال کنید. برنامه یک کادر محاوره‌ای باز می‌کند.
  2. عنوان را روی Issue Title 2 تنظیم کنید.
  3. شرح را روی Description 2 تنظیم کنید.
  4. روی ایجاد کلیک کنید.

3b2a8690e758f965.png

  1. در برنامه چت گوگل، تب «خانه» را از فضای خود انتخاب کنید. می‌توانید جزئیات مشکلاتی که ایجاد کرده‌اید را مشاهده کنید.

ed8e32da0e6f2ac6.png

۵. اختیاری: برنامه ۱: افزودن نظارت بر فضا

مفاهیم را مرور کنید

میخانه/ساب

Pub/Sub یک سرویس پیام‌رسانی غیرهمزمان و مقیاس‌پذیر است که سرویس‌های تولیدکننده پیام را از سرویس‌های پردازش‌کننده آن پیام‌ها جدا می‌کند. Pub/Sub به شما امکان می‌دهد سیستم‌هایی از تولیدکنندگان و مصرف‌کنندگان رویداد، به نام ناشران و مشترکین ، ایجاد کنید. ناشران به جای فراخوانی‌های همزمان رویه از راه دور (RPC)، به صورت غیرهمزمان با پخش رویدادها با مشترکین ارتباط برقرار می‌کنند.

ناشران رویدادها را بدون توجه به نحوه یا زمان پردازش آنها به سرویس Pub/Sub ارسال می‌کنند. سپس Pub/Sub رویدادها را به تمام سرویس‌هایی که به آنها واکنش نشان می‌دهند، ارسال می‌کند. در سیستم‌هایی که از طریق RPCها ارتباط برقرار می‌کنند، ناشران باید منتظر بمانند تا مشترکین داده‌ها را دریافت کنند. با این حال، ادغام ناهمزمان در Pub/Sub انعطاف‌پذیری و استحکام سیستم کلی را افزایش می‌دهد.

موضوع : منبعی نامگذاری شده که مجموعه‌ای از پیام‌ها را نشان می‌دهد. قبل از اینکه بتوانید موضوعی را منتشر کنید یا در آن مشترک شوید، باید آن را ایجاد کنید.

اشتراک : برای دریافت پیام‌های منتشر شده در یک موضوع، باید یک اشتراک برای آن موضوع ایجاد کنید. کلاینت مشترک، پیام‌های منتشر شده در موضوع را دریافت و پردازش می‌کند. یک موضوع می‌تواند چندین اشتراک داشته باشد، اما یک اشتراک مشخص متعلق به یک موضوع واحد است.

رویدادهای گوگل ورک اسپیس

رویدادهای Google Workspace نشان‌دهنده تغییراتی در منابع Google Workspace هستند، مانند زمانی که منابع ایجاد، به‌روزرسانی یا حذف می‌شوند. برنامه‌ها می‌توانند در منابع Google Workspace مشترک شوند تا رویدادهای مرتبط را به صورت غیرهمزمان دریافت و پردازش کنند.

7816e477b112bfb6.png

در اینجا نحوه ارائه رویدادها توسط API رویدادهای 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"
  }
  ...
]

پیکربندی.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);
  ...
}

ذخیره‌سازی.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);
}

به‌روزرسانی پروژه گوگل کلود

فعال کردن APIها

  1. در کنسول گوگل کلود، رویدادهای گوگل ورک‌اسپیس و PubSub را فعال کنید.

  1. روی منو ☰ > APIها و خدمات > APIها و خدمات فعال‌شده کلیک کنید و سپس تأیید کنید که هر دو فعال هستند.

شروع اشتراک

برای ارسال همه رویدادهای فضای کاری، باید یک موضوع Pub/Sub ایجاد و در آن مشترک شوید.

در کنسول گوگل کلود ، مراحل زیر را دنبال کنید:

  1. به منو ☰ > انتشار/زیرمجموعه > موضوعات بروید.

  1. روی ایجاد موضوع کلیک کنید.
  2. شناسه موضوع را روی workspace-events تنظیم کنید.
  3. کادر انتخاب «افزودن اشتراک پیش‌فرض» را علامت بزنید.
  4. روی ایجاد کلیک کنید.

b39f9a0aec7c9939.png

برای اعطای دسترسی به انتشار پیام‌های Pub/Sub به موضوع تازه ایجاد شده خود از Google Chat، این مراحل را دنبال کنید:

  1. موضوع را از لیست انتخاب کنید.
  2. برگه مجوزها را انتخاب کنید.
  3. chat-api-push@system.gserviceaccount.com را به New principals اضافه کنید.
  4. برای نقش، گزینه انتشار/زیرنویس ناشر را انتخاب کنید.
  5. روی ذخیره کلیک کنید.

8d4016c37532503.png

پروژه اسکریپت برنامه‌ها را به‌روزرسانی کنید

در کنسول گوگل کلود ، مراحل زیر را دنبال کنید:

  1. به منو ☰ > مدیریت و شناسه کاربری > تنظیمات بروید.

  1. شناسه پروژه را کپی کنید.

۸۲۵۹۲fa0bd113469.png

در محیط محلی خود، مراحل زیر را دنبال کنید:

  1. دایرکتوری فعلی در ترمینال خود را به issue-management/3-message-monitoring تغییر دهید. این دایرکتوری شامل کد منبع مورد نیاز شماست.
  2. ثابت رشته‌ای با نام PROJECT_ID را در فایل Configuration.js برابر با شناسه پروژه کپی شده قرار دهید.
  3. ثابت JSON با نام CHAT_CREDENTIALS را در فایل Configuration.js روی محتوای فایل کلید خصوصی که قبلاً دانلود کرده‌اید، تنظیم کنید.
  4. فایل issue-management/2-app-home/.clasp.json را در دایرکتوری فعلی خود کپی کنید.
  5. دستور زیر را اجرا کنید:
clasp push

امتحانش کن

در گوگل چت ، مراحل زیر را دنبال کنید:

  1. با دستور اسلش /create یک پیام مستقیم به برنامه ارسال کنید. برنامه یک کادر محاوره‌ای باز می‌کند.
  2. عنوان را روی Issue Title 3 تنظیم کنید.
  3. شرح را روی Description 3 تنظیم کنید.
  4. روی ایجاد کلیک کنید.
  5. در فضای تازه ایجاد شده، چند پیام ارسال کنید که در مورد موضوع بحث می‌کنند.
  6. با دستور اسلش /close و راه‌حلی مانند Fixed یک پیام ارسال کنید.

در کنسول گوگل کلود ، مراحل زیر را دنبال کنید:

  1. به منو ☰ > انتشار/عضویت > اشتراک‌ها بروید.

  1. فضای کاری-رویدادهای-زیرشاخه اشتراک را انتخاب کنید.
  2. برگه پیام‌ها را انتخاب کنید.
  3. روی «کشیدن» کلیک کنید. جدول، پیام‌های مرتبط با آنچه که به فضای تازه ایجاد شده ارسال کرده‌اید را نمایش می‌دهد.

۸۲۶۳۱c۹۷۹۲d۸۳۸۸۹.png

در کنسول Apps Script ، مراحل زیر را دنبال کنید:

  1. پروژه خود را انتخاب کنید.
  2. ویرایشگر را انتخاب کنید.
  3. فایل WorkspaceEvent.gs را انتخاب کنید.
  4. در بخش اجرا، processSubscription انتخاب کنید.
  5. Run کلیک کنید. از گزارش اجرا می‌توانید ببینید که پیام‌ها پردازش شده‌اند.

c612e8fa2bd0a163.png

در کنسول گوگل کلود ، مراحل زیر را دنبال کنید:

  1. به منو ☰ > انتشار/عضویت > اشتراک‌ها بروید.

  1. فضای کاری-رویدادهای-زیرشاخه اشتراک را انتخاب کنید.
  2. برگه پیام‌ها را انتخاب کنید.
  3. روی «کشیدن» کلیک کنید. جدول دیگر پیام‌های مربوط به آنچه که به فضای تازه ایجاد شده ارسال کرده‌اید را نمایش نمی‌دهد.

e185454cac862a7b.png

  • در گوگل چت ، در فضای اختصاص داده شده به موضوع سوم که با دستور اسلش /create ایجاد کرده‌اید، چند پیام دیگر ارسال کنید که در مورد موضوع بحث می‌کنند.

در کنسول گوگل کلود ، مراحل زیر را دنبال کنید:

  1. به منو ☰ > انتشار/عضویت > اشتراک‌ها بروید.

  1. فضای کاری-رویدادهای-زیرشاخه اشتراک را انتخاب کنید.
  2. برگه پیام‌ها را انتخاب کنید.
  3. روی «کشیدن» کلیک کنید. جدول پیام‌های مربوط به آنچه که به فضای تازه ایجاد شده ارسال کرده‌اید را نمایش نمی‌دهد.

۶. اختیاری: برنامه ۱: اضافه کردن کمک در مورد فراگیری

مفاهیم را مرور کنید

دستورالعمل‌های هوش مصنوعی نسل جدید ، هنر ایجاد دستورالعمل‌ها یا سوالاتی است که یک مدل هوش مصنوعی مولد را به سمت نوع خاصی از خروجی مطلوب هدایت می‌کند. یک روش معمول، محدود کردن پاسخ‌ها با اضافه کردن قوانین و شرایط در دستورالعمل‌ها است. این می‌تواند به ایمن، مرتبط، سازگار و همسو شدن خروجی با انتظارات کمک کند.

جریان‌های بررسی

اشتراک‌ها را پردازش کنید (به‌روزرسانی)

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;
}

پروژه اسکریپت برنامه‌ها را به‌روزرسانی کنید

در محیط محلی خود، مراحل زیر را دنبال کنید:

  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

امتحانش کن

در گوگل چت ، مراحل زیر را دنبال کنید:

  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. در بخش اجرا، processSubscription انتخاب کنید.
  5. روی اجرا کلیک کنید. از گزارش اجرا می‌توانید ببینید که پیام‌ها پردازش شده‌اند.

در گوگل چت ، مراحل زیر را دنبال کنید:

  1. توجه داشته باشید که برنامه هیچ کمکی در مورد فراگیری در فضای تازه ایجاد شده ارسال نکرده است.
  2. در فضای تازه ایجاد شده، پیام I had to add myself from the master to fix it ارسال کنید.

در کنسول Apps Script ، مراحل زیر را دنبال کنید:

  1. پروژه خود را انتخاب کنید.
  2. ویرایشگر را انتخاب کنید.
  3. فایل WorkspaceEvent.gs را انتخاب کنید.
  4. در بخش اجرا، processSubscription انتخاب کنید.
  5. روی اجرا کلیک کنید. از گزارش اجرا می‌توانید ببینید که پیام‌ها پردازش شده‌اند. در گوگل چت ، برنامه یک پیام کمک در مورد فراگیری در فضای تازه ایجاد شده ارسال کرد.

7936342847acbe2d.png

۷. اختیاری: برنامه ۱: افزودن تنظیمات برگزیده

.

مفاهیم را مرور کنید

ویجت جانبی ، ویجتی بدون حاشیه است که به پایین پیام ارسالی توسط یک برنامه متصل می‌شود. این ویجت معمولاً برای فعال کردن واکنش‌های سریع کاربر در زمینه خاص پیام‌ها استفاده می‌شود. از نظر فنی، این ویجت بر اساس همان اصول اصلی دکمه‌های کارتی عمل می‌کند.

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);
  }
}

ذخیره‌سازی.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
              }]
            }}
          }]}}]
        }, ...);
        ...
      }
      ...
    }
    ...
  }
  ...
}

پروژه اسکریپت برنامه‌ها را به‌روزرسانی کنید

در محیط محلی خود، مراحل زیر را دنبال کنید:

  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

امتحانش کن

غیرفعال کردن راهنما

  • در چت گوگل ، در فضای اختصاص داده شده به موضوع چهارم که با دستور اسلش /create ایجاد کردید، پیام I had to add myself from the master to fix ارسال کنید.

در کنسول Apps Script ، مراحل زیر را دنبال کنید:

  1. پروژه خود را انتخاب کنید.
  2. ویرایشگر را انتخاب کنید.
  3. فایل WorkspaceEvent.gs را انتخاب کنید.
  4. در بخش اجرا، processSubscription انتخاب کنید.
  5. روی اجرا کلیک کنید. از گزارش اجرا می‌توانید ببینید که پیام‌ها پردازش شده‌اند.

در گوگل چت ، مراحل زیر را دنبال کنید:

  1. توجه کنید که برنامه پیامی با عنوان «کمک به فراگیری» به فضای اختصاص داده شده به این موضوع به همراه یک ویجت لوازم جانبی ارسال کرده است.
  2. برای غیرفعال کردن راهنمای جامعیت، روی ویجت لوازم جانبی کلیک کنید.

de722cff1928dec9.png

بررسی غیرفعال بودن

  • در چت گوگل ، در فضای اختصاص داده شده به موضوع چهارم که با دستور اسلش /create ایجاد کردید، پیام I had to add myself from the master to fix ارسال کنید.

در کنسول Apps Script ، مراحل زیر را دنبال کنید:

  1. پروژه خود را انتخاب کنید.
  2. ویرایشگر را انتخاب کنید.
  3. فایل WorkspaceEvent.gs را انتخاب کنید.
  4. در بخش اجرا، processSubscription انتخاب کنید.
  5. روی اجرا کلیک کنید. از گزارش اجرا می‌توانید ببینید که پیام‌ها پردازش شده‌اند. در گوگل چت ، برنامه پیامی با پشتیبانی inclusivity به فضای اختصاص داده شده به مشکل ارسال نکرد زیرا غیرفعال بود.

۳۴۷d۶۵۹db۵۳b۷۳e۹.png

۸. برنامه ۲: ساخت

مفاهیم را مرور کنید

اتصال به زمین توسط هوش مصنوعی عمومی

این در مورد واقعی‌تر و قابل اعتمادتر کردن مدل‌های هوش مصنوعی با اتصال آنها به منابع دانش قابل تأیید است. این تکنیک به جلوگیری از اختراع اطلاعات توسط هوش مصنوعی کمک می‌کند و می‌تواند به پاسخ‌هایی با ارتباط محتوایی و کمتر جانبدارانه کمک کند.

زبان طبیعی

هر زبانی که توسط انسان‌ها برای ارتباطات روزمره صحبت یا نوشته می‌شود، برخلاف زبان‌های مصنوعی یا مبتنی بر کامپیوتر.

فضای ذخیره‌سازی ابری

فضای ذخیره‌سازی ابری امکان ذخیره‌سازی و بازیابی هر مقدار داده را در هر زمان در سراسر جهان فراهم می‌کند. این فضا می‌تواند برای طیف وسیعی از سناریوها، از جمله ارائه محتوای وب‌سایت، ذخیره داده‌ها برای بایگانی و بازیابی پس از سانحه، یا توزیع اشیاء داده بزرگ به کاربران از طریق دانلود مستقیم، مورد استفاده قرار گیرد.

فروشگاه داده Dialogflow CX

Dialogflow CX با انبارهای داده که مجموعه‌ای از وب‌سایت‌ها و اسناد هستند و توسط عوامل انبار داده برای یافتن پاسخ سوالات کاربر نهایی از داده‌های خاص استفاده می‌شوند، ادغام می‌شود. برای یک سوال مشخص، عامل انبار داده به دنبال پاسخی از محتوای منبع داده شده می‌گردد و یافته‌ها را در یک پاسخ منسجم خلاصه می‌کند. همچنین پیوندهای پشتیبانی به منابع پاسخ را برای کاربر نهایی فراهم می‌کند تا اطلاعات بیشتری کسب کند.

بررسی معماری

9d3342d12f3b4dda.png

این برنامه گوگل چت با Dialogflow CX ساخته شده است و به شرح زیر عمل می‌کند:

  1. کاربر پیامی را به برنامه ارسال می‌کند، چه از طریق پیام مستقیم و چه از طریق یک فضای خالی.
  2. این برنامه که یک عامل Dialogflow CX است و با یک پروژه Google Cloud مرتبط است، پیام را پردازش می‌کند.
  3. این برنامه با یک فروشگاه داده واقع در Cloud Storage ادغام می‌شود.
  4. برنامه یک پاسخ همزمان، چه در یک پیام مستقیم و چه در فضای اصلی، ارسال می‌کند.

جریان‌های بررسی

پاسخ سوال

aad9fb5a7ca48956.png

بررسی کد منبع

تنها منبعی که نیاز دارید کد نیست، بلکه داده‌هایی است که برای اتصال به زمین استفاده می‌کنید.

نمای کلی گوگل چت.pdf

حاوی اطلاعات بدون ساختار برنامه‌های Google Chat، نسخه چاپی صفحه‌ای از وب‌سایت توسعه‌دهندگان Google Workspace است.

e9b91c4587b1a3a0.png

به‌روزرسانی پروژه گوگل کلود

در کنسول گوگل کلود، مراحل زیر را دنبال کنید:

  1. APIهای Dialogflow و Cloud Storage را فعال کنید.

  1. API سازنده عامل هوش مصنوعی ورتکس (Vertex AI Agent Builder) را فعال کنید.

  1. روی منو ☰ > APIها و خدمات > APIها و خدمات فعال‌شده کلیک کنید و سپس تأیید کنید که همه APIها فعال شده‌اند.

.

ایجاد عامل ذخیره داده Dialogflow CX

داده‌های دانش را آغاز کنید

در کنسول گوگل کلود ، مراحل زیر را دنبال کنید:

  1. روی منو ☰ > فضای ذخیره‌سازی ابری > سطل‌ها کلیک کنید.

4f15978ae9f1b687.png

  1. روی ایجاد کلیک کنید.
  2. نام را روی gchat-knowledge تنظیم کنید.
  3. روی ایجاد کلیک کنید.

6b38c6d4d2c41bba.png

  1. مخزن gchat-knowledge را انتخاب کنید.
  2. روی آپلود فایل‌ها کلیک کنید.
  3. فایل google-chat-overview.pdf را از محیط محلی خود دانلود و انتخاب کنید.

df89acb22e1762af.png

ایجاد برنامه

در کنسول گوگل کلود ، مراحل زیر را دنبال کنید:

  1. روی منو ☰ > سازنده‌ی عامل > برنامه‌ها کلیک کنید.

  1. روی برنامه جدید کلیک کنید.
  2. نوع چت را انتخاب کنید.

۴۴۲۷۶۰۰۳۰۷4bcf۱۴.png

  1. Company name روی نام شرکت خود تنظیم کنید.
  2. Agent name روی knowledge تنظیم کنید.
  3. روی ادامه کلیک کنید.

c4fedfd7556f723b.png

  1. روی ایجاد فروشگاه داده جدید کلیک کنید.
  2. فضای ذخیره‌سازی ابری را به عنوان منبع داده انتخاب کنید.

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. بعد از چند دقیقه، روی Menu ☰ > Agent builder > Apps کلیک کنید و متوجه خواهید شد که می‌توانید برنامه را ببینید.

d929a7431dd84968.png

  1. روی منو ☰ > سازنده‌ی عامل > فروشگاه‌های داده کلیک کنید.

  1. روی مخزن داده gchat-knowledge-ds کلیک کنید. تعداد اسناد 1 است که نشان می‌دهد آماده است.

558319790a0accf2.png

برنامه را کامل و تست کنید

در کنسول Dialogflow CX ، مراحل زیر را دنبال کنید:

  1. پروژه گوگل کلود خود را انتخاب کنید.
  2. عامل دانش را انتخاب کنید.

ca9b2fb4be92e8e4.png

  1. تنظیمات عامل > هوش مصنوعی مولد > عامل مولد را انتخاب کنید.
  2. مدل را از Text Bison به Gemini Pro تغییر دهید.
  3. روی ذخیره کلیک کنید.

68cc4713ec9b25a0.png

  1. روی عامل تست کلیک کنید.
  2. ارسال What is Google Chat? . نماینده با چیزی معنادار پاسخ می‌دهد.

8e3a2cb02469041a.png

ادغام برنامه چت گوگل

در کنسول Dialogflow CX ، مراحل زیر را دنبال کنید:

  1. پروژه گوگل کلود خود را انتخاب کنید.
  2. در ردیف عامل دانش، کلیک کنید 1e7ede7abae4aa3c.png > نام را کپی کنید .

e19f61185158110d.png

در کنسول گوگل کلود ، مراحل زیر را دنبال کنید:

  1. به پیکربندی API چت گوگل بروید.

  1. در قسمت تنظیمات اتصال ، گزینه Dialogflow را انتخاب کنید.
  2. در تنظیمات Dialogflow ، گزینه Dialogflow CX را انتخاب کنید.
  3. نام منبع عامل یا محیط را روی نام عاملی که کپی کرده‌اید تنظیم کنید.
  4. دو دستور اسلش را حذف کنید.

505ff39a50880904.png

  1. در گوگل چت ، What is Google Chat? را در یک پیام مستقیم به برنامه گوگل چت ارسال کنید. اپراتور با پیامی معنادار پاسخ می‌دهد.

abda9e43b81fb0ea.png

۹. اختیاری: برنامه ۲: افزودن منابع

مفاهیم را مرور کنید

وب هوک Dialogflow CX

سرویسی که منطق کسب‌وکار را میزبانی می‌کند یا سرویس‌های دیگر را فراخوانی می‌کند. در طول یک جلسه Dialogflow CX، وب‌هوک‌ها می‌توانند به داده‌های استخراج‌شده توسط پردازش زبان طبیعی تکیه کنند تا پاسخ‌های پویا تولید کنند، داده‌های جمع‌آوری‌شده را اعتبارسنجی کنند یا اقداماتی را در backend انجام دهند.

توابع ابری

توابع ابری برای ساخت backendهای بدون سرور، انجام پردازش داده‌های بلادرنگ و ایجاد برنامه‌های هوشمند عالی هستند. هیچ سروری برای تهیه، مدیریت، وصله‌گذاری یا به‌روزرسانی وجود ندارد. آنها به طور خودکار مقیاس‌پذیر هستند و در دسترس بودن بالایی دارند و در برابر خطا مقاوم هستند.

جریان‌های بررسی

پاسخ به سوال (به‌روزرسانی)

۹۲۷۶۷c۰۷c۷b۲۵۲aa.png

بررسی کد منبع

تنها کد منبعی که نیاز دارید، تابعی برای تطبیق پاسخ‌های عامل با پیام‌های گوگل چت است. این کد به عنوان یک وب‌هوک استفاده می‌شود.

بسته.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"
  },
  ...
}

ایندکس.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
          }}]
        }]}
      }]
    }}]
  }});
});

به‌روزرسانی پروژه گوگل کلود

در کنسول گوگل کلود، مراحل زیر را دنبال کنید:

  1. APIهای Cloud Build، Cloud Functions، Cloud Logging، Artifact Registry و Cloud Run را فعال کنید.

  1. روی منو ☰ > APIها و خدمات > APIها و خدمات فعال‌شده کلیک کنید و سپس تأیید کنید که APIها فعال شده‌اند.

به‌روزرسانی عامل ذخیره‌سازی داده Dialogflow CX

شما باید یک تابع ابری (Cloud Function) مستقر کنید و وب‌هوک Dialogflow CX را به‌روزرسانی کنید تا در صورت امکان، آن را با چندین منبع فعال کنید.

بازگرداندن چندین منبع

به طور پیش‌فرض، یک عامل ذخیره داده جدید حداکثر فقط یک منبع را برمی‌گرداند، اما می‌توانید آن را برای تعداد بیشتری تغییر دهید.

در کنسول Dialogflow CX ، مراحل زیر را دنبال کنید:

  1. پروژه گوگل کلود خود را انتخاب کنید.
  2. عامل دانش را انتخاب کنید.
  3. صفحه شروع را انتخاب کنید.
  4. ویرایش محل‌های ذخیره‌سازی داده را انتخاب کنید.
  5. در بخش پاسخ‌های عامل ، گزینه‌های پاسخ ذخیره داده را روی 5 تنظیم کنید.
  6. روی ذخیره کلیک کنید.

f5932d03057df645.png

شروع عملکرد ابری

در کنسول گوگل کلود ، مراحل زیر را دنبال کنید:

  1. روی منو ☰ > توابع ابری کلیک کنید.

  1. روی ایجاد تابع کلیک کنید.
  2. در بخش Basics ، نام را روی function-1 تنظیم کنید.
  3. در بخش «احراز هویت» ، دکمه رادیویی «مجاز کردن فراخوانی‌های احراز هویت نشده» را انتخاب کنید.
  4. در قسمت تنظیمات زمان اجرا، ساخت، اتصالات و امنیت ، حداکثر تعداد نمونه‌ها را روی 3 تنظیم کنید.
  5. روی بعدی کلیک کنید.

bd3790a9285f9c07.png

  1. نقطه ورود را روی agent-response-adapter تنظیم کنید.
  2. Replace the default content with the files package.json and index.js .
  3. Click Deploy .

b379bb8ca0fc1079.png

  1. Copy the URL while you wait a couple minutes for the function to deploy.

eaae08cf048b9b1c.png

Initiate webhook

You need to configure the Dialogflow CX agent to use a webhook that triggers the newly deployed function.

In the Dialogflow CX console , follow these steps:

  1. Select your Google Cloud project.
  2. Select the knowledge agent.
  3. Select Manage > Webhooks > Create .
  4. Set Display name to Google Chat Response Adapter .
  5. Set Webhook URL to the URL that you copied previously.
  6. Click Save .

5f3c6804d52b87c1.png

  1. Click Build .
  2. Select Start page .
  3. Select Edit data stores .
  4. Under Webhook settings , click the Enable webhook toggle.
  5. Select Google Chat Response Adapter for Webhook .
  6. Set tag to arbitrary_tag .
  7. Click Save .

442fcaaec9b8f2e3.png

Test app

  • In Google Chat , send What is Google Chat? in a direct message to the Google Chat app. The agent responds with something meaningful and a card with sources, if any.

9468866bfe848bb8.png

10. App 3: Build

Review concepts

Conversational interactions

They are the back-and-forth exchanges of information or ideas between two or more people through natural language. This contrasts to technical interfaces that often rely on stateless, highly structured, and intolerant exchanges.

OpenAPI Specification

It provides a consistent means to carry information through each stage of the API lifecycle. It is a specification language for HTTP APIs that defines structure and syntax in a way that is not wedded to the programming language the API is created in. API specifications are typically written in YAML or JSON, allowing for easy sharing and consumption of the specification.

Dialogflow CX agent

The basic building block of agent apps . An agent app typically has many agents , where each agent is defined to handle specific tasks. The agent data is provided to the LLM, so it has the information it needs to answer questions and execute tasks. Each agent can provide information, send queries to external services, or defer conversation handling to a Dialogflow CX flow or another agent to handle sub-tasks.

Dialogflow CX tool

Tools are used to connect agent apps to external systems. These systems can augment the knowledge of agent apps and empower them to execute complex tasks efficiently.

Review architecture

9d3342d12f3b4dda.png

This Google Chat app is built with Dialogflow CX and works as follows:

  1. A user sends a message to the app, either in a direct message or in a space.
  2. The app, which is a Dialogflow CX agent and is associated with a Google Cloud project, processes the message.
  3. The app integrates with an agent.
  4. The app sends a synchronous response, either in a direct message or in the original space.

Review flows

Collect review

a67a5b8b513bfc2c.png

Review source code

The only source code that you need is the function to mock the backend service that the agent uses as a tool.

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

Initiate backend service mock

You deploy a Cloud Function to simulate a backend service that the Dialogflow CX agent app needs to integrate and call as a tool.

In the Google Cloud console , follow these steps:

  1. Click Menu ☰ > Cloud Functions .

  1. Click Create function .
  2. Under Basics , set name to function-2 .
  3. Under Authentication , select the Allow unauthenticated invocations radio button.
  4. Under Runtime, build, connections and security settings , set Maximum number of instances to 3 .
  5. روی بعدی کلیک کنید.

e8cf0ee7441bf634.png

  1. Set Entry point to feedback-app-backend .
  2. Replace the default content with the files package.json and index.js .
  3. Click Deploy .

bdb5cf9f503aa7f6.png

  1. Copy the URL while you wait a couple minutes for the function to deploy.

Create Dialogflow CX agent app

Create app

In the Google Cloud console , follow these steps:

  1. Click Menu ☰ > Agent builder > Apps .

  1. Click New app .
  2. Select Agent .
  3. Set Display name to Feedback App .
  4. Click Create .

7ef3dbacee96c5aa.png

Initiate tool

In the Google Cloud console , follow these steps:

  1. Click Menu ☰ > Agent builder > Apps .

  1. Select the Feedback App agent.
  2. Click Tools > + Create .
  3. Set Name to review .
  4. Select OpenAPI .
  5. Set description to the following value:
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. Download and replace $URL in the file service-openapi.yaml with the URL that you copied previously.
  2. Set YAML Schema to the edited content of the service-openapi.yaml file.
  3. Click Save .

58085d6d56b603f7.png

Initiate agent

In the Google Cloud console , follow these steps:

  1. Click Menu ☰ > Agent builder > Apps .

  1. Select the Feedback App agent.
  2. Select Agents > Default Generative Agent .
  3. Set Agent name to Feedback collector .
  4. Set goal to the following value:
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. Set instructions to the following value:
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. Click Save .

ebee7fdfa826b487.png

Test app

In the Google Cloud console , follow these steps:

  1. Click Menu ☰ > Agent builder > Apps .

  1. Select the Feedback App agent.
  2. Go to Preview agent .
  3. Under Agent , select Feedback collector .
  4. Under Select generative model , select gemini-pro .
  5. Send the message Hello! to start.

90ca8cb7b2c1cb4b.png

In the Google Cloud console , follow these steps:

  1. Click Menu ☰ > Cloud Functions .

  1. Select function-2 > Logs . Some logs show Google-Dialogflow as caller.

48bfdf1788004d18.png

Integrate Google Chat app

In the Dialogflow CX console , follow these steps:

  1. Select your Google Cloud project.
  2. Click the action menu of the Feedback App agent.
  3. Click Copy name .

In the Google Cloud console , follow these steps:

  1. Go to the Google Chat API configuration.

  1. Set Agent or Environment resource name to the agent name that you copied previously.

df16619a1cb85cf8.png

  • In Google Chat , send Hello! in a direct message to the Google Chat app to start. The agent responds similarly to your test from the Dialogflow CX console.

99a7a0295f122f31.png

11. Clean up

Delete Google Cloud project

To avoid incurring charges to your Google Cloud Account for the resources used in this codelab, we recommend that you delete the Google Cloud project.

In the Google Cloud console , follow these steps:

  1. Click Menu ☰ > IAM & Admin > Settings .

  1. Click Shut down .
  2. Enter the project ID.
  3. Click Shut down anyway .

407699a4e03afea6.png

Delete Apps Script project

We recommend that you delete your Apps Script project, too.

In the Apps Script console , follow these steps:

  1. Select your project.
  2. Click the action menu.
  3. Click Remove .

fa3a42d7d2201eb9.png

12. Congratulations

Congratulations! You built Google Chat apps with Gemini!

بعدش چی؟

We only showcased simple use cases in this codelab, but there are plenty of expansion areas that you might want to consider in your Google Chat apps, such as the following:

  • Integrate with other Generative AI models, including customs.
  • Support other types of media, such as audio, image, and video.
  • Use multimodality.
  • Rely on longer context windows and feedback loops.
  • Publish production-ready Google Chat apps on the marketplace. There are plenty of resources available for developers such as YouTube videos, documentation websites, code samples, and tutorials.
  • Enable Google Chat for your organization. The import mode feature makes it easier to get started.

بیشتر بدانید