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

1. قبل از شروع

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

برنامه‌های چت Google با Gemini کارهای زیر را انجام می‌دهند:

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

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

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

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

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

پیش نیازها

آنچه می سازید

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

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

این برنامه کارهای زیر را انجام می دهد:

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

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

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

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

22efdecff4601417.png

2d127c63518673b2.png

9aea694937f2f3ed.png

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

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

9468866bfe848bb8.png

برنامه بازخورد (مکالمه)

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

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

99a7a0295f122f31.png

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

  • نحوه ادغام برنامه های Google Chat با Gemini از طریق Vertex AI.
  • نحوه ادغام برنامه های 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 ، این مراحل را دنبال کنید:

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

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

a71f040755da3b8b.png

چت گوگل

در Google Chat ، این مراحل را دنبال کنید:

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

9625418251528ae9.png

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

  1. این مخزن GitHub را دانلود کنید.

  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

3. برنامه 1: ساخت

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

Vertex AI

Vertex AI هر آنچه را که برای ساخت و استفاده از هوش مصنوعی مولد نیاز دارید ارائه می دهد، از جمله راه حل های هوش مصنوعی، سازنده عامل، بیش از 130 مدل پایه و یک پلتفرم هوش مصنوعی یکپارچه.

c9e9c7a1945b22ac.png

جوزا

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

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

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

بررسی معماری

8c9c7b7328a69ea6.png

این برنامه Google Chat با Apps Script ساخته شده است. به صورت زیر عمل می کند:

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

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

مسئله ایجاد کنید

7ca0e8ba3c8255bb.png

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

51b47714c378a24b.png

بستن شماره از فضای اختصاصی

89e50228deeab0f9.png

کد منبع را مرور کنید

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

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

API ها را فعال کنید

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

  1. روی Menu ☰ > APIs & Services > Enabled APIs & Services کلیک کنید و سپس تأیید کنید که APIها فعال هستند.

حساب سرویس را راه اندازی کنید

در کنسول Google Cloud ، این مراحل را دنبال کنید:

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

74cf57426419f39.png

  1. نام حساب سرویس را روی chat-app تنظیم کنید.
  2. شرح حساب سرویس را روی Chat app auth تنظیم کنید.
  3. روی ایجاد و ادامه کلیک کنید.
  4. روی Done کلیک کنید. شما به صفحه حساب‌های سرویس هدایت می‌شوید و می‌توانید حساب سرویسی را که ایجاد کرده‌اید ببینید.

ca0468f1f93990f9.png

  1. حساب سرویس جدید ایجاد شده را انتخاب کنید.
  2. تب Keys را انتخاب کنید.
  3. روی افزودن کلید کلیک کنید.
  4. روی ایجاد کلید جدید کلیک کنید.
  5. JSON را انتخاب کنید.
  6. روی ایجاد کلیک کنید.

9f7e6ea020978ab0.png

گفتگو بسته می شود و جفت کلید عمومی/خصوصی تازه ایجاد شده شما به صورت خودکار در محیط محلی شما به عنوان یک فایل JSON دانلود می شود. وقتی کد منبع پروژه Apps Script خود را ویرایش می کنید، بعداً از محتوای آن استفاده می کنید.

پیکربندی Google Chat API را به‌روزرسانی کنید

در کنسول Google Cloud ، این مراحل را دنبال کنید:

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

bee2e7b63659ab33.png

پروژه Apps Script را به روز کنید

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

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

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

d721f6bff73c5304.png

  1. در کنسول Google Cloud ، روی Menu ☰ > IAM & Admin > Settings کلیک کنید.

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

82592fa0bd113469.png

  1. ثابت رشته ای با نام PROJECT_ID در فایل Configuration.js را روی ID پروژه قرار دهید.

383cee561130ceba.png

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

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

  1. در کنسول Apps Script ، پروژه خود را انتخاب کنید.
  2. تنظیمات پروژه را انتخاب کنید.
  3. در قسمت شناسه ها ، روی Copy کلیک کنید.

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. در گفتگو، عنوان را روی Issue Title 1 تنظیم کنید.
  2. توضیحات را روی Issue 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: افزودن صفحه اصلی برنامه

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

App home یک پیام کارتی قابل تنظیم است که برنامه Chat هنگامی که کاربر از طریق یک پیام مستقیم با برنامه Chat به برگه Home دسترسی پیدا می کند، برای کاربر ارسال می کند. این معمولاً برای نمایش مستندات برنامه یا یک نمای کلی استفاده می شود. از نظر فنی، یک رویداد اختصاصی برای رسیدگی وجود دارد و بر اساس همان اصول اصلی پیام های کارت است.

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 ، این مراحل را دنبال کنید:

  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. توضیحات را روی Issue Description 2 تنظیم کنید.
  4. روی ایجاد کلیک کنید.

3b2a8690e758f965.png

  1. با برنامه Google Chat، برگه Home را از فضای خود انتخاب کنید. می توانید جزئیات مسائلی را که ایجاد کرده اید مشاهده کنید.

ed8e32da0e6f2ac6.png

5. اختیاری: برنامه 1: اضافه کردن نظارت بر فضا

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

میخانه / فرعی

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

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

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

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

رویدادهای Google Workspace

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

7816e477b112bfb6.png

در اینجا نحوه ارائه رویدادها توسط Google Workspace Events API به یک برنامه از طریق اشتراک آمده است:

  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 را به روز کنید

API ها را فعال کنید

  1. در کنسول Google Cloud، رویدادهای Google Workspace و PubSub را فعال کنید.

  1. روی Menu ☰ > APIs & services > Enabled APIs & services کلیک کنید و سپس تأیید کنید که هر دو فعال هستند.

شروع اشتراک

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

در کنسول Google Cloud ، این مراحل را دنبال کنید:

  1. به منو ☰ > Pub/Sub > Topics بروید.

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

b39f9a0aec7c9939.png

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

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

8d4016c37532503.png

پروژه Apps Script را به روز کنید

در کنسول Google Cloud ، این مراحل را دنبال کنید:

  1. به Menu ☰ > IAM & Admin > Settings بروید.

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

82592fa0bd113469.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

آن را امتحان کنید

در Google Chat ، این مراحل را دنبال کنید:

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

در کنسول Google Cloud ، این مراحل را دنبال کنید:

  1. به منو ☰ > Pub/Sub > اشتراک ها بروید.

  1. اشتراک Workspace-events-sub را انتخاب کنید.
  2. تب Messages را انتخاب کنید.
  3. روی Pull کلیک کنید. جدول پیام های مربوط به آنچه را که به فضای ایجاد شده جدید ارسال کرده اید را نشان می دهد.

82631c9792d83889.png

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

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

c612e8fa2bd0a163.png

در کنسول Google Cloud ، این مراحل را دنبال کنید:

  1. به منو ☰ > Pub/Sub > اشتراک ها بروید.

  1. اشتراک Workspace-events-sub را انتخاب کنید.
  2. تب Messages را انتخاب کنید.
  3. روی Pull کلیک کنید. جدول دیگر پیام های مربوط به آنچه را که به فضای ایجاد شده جدید ارسال کرده اید نمایش نمی دهد.

e185454cac862a7b.png

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

در کنسول Google Cloud ، این مراحل را دنبال کنید:

  1. به منو ☰ > Pub/Sub > اشتراک ها بروید.

  1. اشتراک Workspace-events-sub را انتخاب کنید.
  2. تب Messages را انتخاب کنید.
  3. روی Pull کلیک کنید. جدول پیام های مربوط به آنچه را که به فضای ایجاد شده جدید ارسال کرده اید نمایش نمی دهد.

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. توضیحات را روی Issue Description 4 تنظیم کنید.
  4. روی ایجاد کلیک کنید.
  5. در فضای جدید ایجاد شده، It happened to me last week as well ارسال کنید.

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

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

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

آن را امتحان کنید

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

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

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

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

در Google Chat ، این مراحل را دنبال کنید:

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

de722cff1928dec9.png

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

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

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

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

347d659db53b73e9.png

8. برنامه 2: ساخت

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

اتصال زمین با هوش مصنوعی ژنرال

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

زبان طبیعی

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

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

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 است، نسخه‌ای چاپ شده از یک صفحه از وب‌سایت توسعه‌دهندگان Google Workspace.

e9b91c4587b1a3a0.png

پروژه Google Cloud را به روز کنید

در کنسول Google Cloud، این مراحل را دنبال کنید:

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

  1. Vertex AI Agent Builder API را فعال کنید.

  1. روی Menu ☰ > APIs & services > Enabled APIs & services کلیک کنید و سپس تأیید کنید که همه APIS فعال هستند.

.

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

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

در کنسول Google Cloud ، این مراحل را دنبال کنید:

  1. برای منو ☰ > Cloud Storage > Buckets کلیک کنید.

4f15978ae9f1b687.png

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

6b38c6d4d2c41bba.png

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

df89acb22e1762af.png

برنامه ایجاد کنید

در کنسول Google Cloud ، این مراحل را دنبال کنید:

  1. روی Menu ☰ > Agent builder > Apps کلیک کنید.

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

44276003074bcf14.png

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

c4fedfd7556f723b.png

  1. روی ایجاد فروشگاه داده جدید کلیک کنید.
  2. Cloud Storage را به عنوان منبع داده انتخاب کنید.

6e2440ecf0f8f9bd.png

  1. فایل را انتخاب کنید.
  2. روی Browse کلیک کنید.
  3. فایل google-chat-overview.pdf را انتخاب کنید.
  4. روی Continue کلیک کنید.
  5. نام فروشگاه داده را روی gchat-knowledge-ds تنظیم کنید.
  6. روی ایجاد کلیک کنید.

a675df7490b83900.png

  1. ذخیره داده gchat-knowledge-ds را در جدول انتخاب کنید.
  2. روی ایجاد کلیک کنید.

f121d580771ed96.png

  1. پس از چند دقیقه، روی Menu ☰ > Agent builder > Apps کلیک کنید و متوجه شوید که می توانید برنامه را ببینید.

d929a7431dd84968.png

  1. روی Menu ☰ > Agent builder > Data stores کلیک کنید.

  1. روی فروشگاه داده gchat-knowledge-ds کلیک کنید. تعداد اسناد 1 است که نشان دهنده آماده بودن آن است.

558319790a0accf2.png

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

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

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

ca9b2fb4be92e8e4.png

  1. Agent settings > Generative AI > Generative agent را انتخاب کنید.
  2. مدل را از Text Bison به Gemini Pro تغییر دهید.
  3. روی ذخیره کلیک کنید.

68cc4713ec9b25a0.png

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

8e3a2cb02469041a.png

برنامه Google Chat را یکپارچه کنید

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

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

e19f61185158110d.png

در کنسول Google Cloud ، این مراحل را دنبال کنید:

  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

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

توابع ابری

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

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

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

92767c07c7b252aa.png

کد منبع را مرور کنید

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

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، این مراحل را دنبال کنید:

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

  1. روی Menu ☰ > APIs & services > Enabled APIs & services کلیک کنید و سپس تأیید کنید که APIها فعال هستند.

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

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

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

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

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

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

f5932d03057df645.png

عملکرد Cloud را راه اندازی کنید

در کنسول Google Cloud ، این مراحل را دنبال کنید:

  1. روی Menu ☰ > Cloud Functions کلیک کنید.

  1. روی Create function کلیک کنید.
  2. در زیر مبانی ، نام را روی function-1 تنظیم کنید.
  3. در بخش احراز هویت ، دکمه رادیویی Allow unauthenticated invocations را انتخاب کنید.
  4. در بخش Runtime، ساخت، اتصالات و تنظیمات امنیتی ، حداکثر تعداد نمونه ها را روی 3 تنظیم کنید.
  5. روی Next کلیک کنید.

bd3790a9285f9c07.png

  1. نقطه ورود را روی agent-response-adapter تنظیم کنید.
  2. فایل های package.json و index.js را جایگزین محتوای پیش فرض کنید.
  3. روی Deploy کلیک کنید.

b379bb8ca0fc1079.png

  1. در حالی که چند دقیقه صبر می کنید تا تابع اجرا شود، URL را کپی کنید.

eaae08cf048b9b1c.png

وب هوک را راه اندازی کنید

شما باید عامل Dialogflow CX را پیکربندی کنید تا از یک هوکی استفاده کند که عملکرد تازه مستقر شده را فعال می کند.

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

  1. پروژه Google Cloud خود را انتخاب کنید.
  2. عامل دانش را انتخاب کنید.
  3. مدیریت > Webhooks > ایجاد را انتخاب کنید.
  4. نام نمایشی را روی Google Chat Response Adapter تنظیم کنید.
  5. URL Webhook را روی نشانی اینترنتی که قبلاً کپی کرده اید تنظیم کنید.
  6. روی ذخیره کلیک کنید.

5f3c6804d52b87c1.png

  1. روی ساخت کلیک کنید.
  2. صفحه شروع را انتخاب کنید.
  3. ویرایش ذخیره‌های داده را انتخاب کنید.
  4. در تنظیمات Webhook ، روی دکمه فعال کردن webhook کلیک کنید.
  5. آداپتور Google Chat Response Adapter برای Webhook را انتخاب کنید.
  6. تگ را روی arbitrary_tag تنظیم کنید.
  7. روی ذخیره کلیک کنید.

442fcaaec9b8f2e3.png

برنامه تست

  • در Google Chat ارسال کنید What is Google Chat? در یک پیام مستقیم به برنامه Google Chat. نماینده با چیزی معنادار و کارتی با منابع، در صورت وجود، پاسخ می دهد.

9468866BFE848BB8.PNG

10. برنامه 3: ساخت

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

تعامل مکالمه

آنها مبادلات عقب و جلو از اطلاعات یا ایده های بین دو یا چند نفر از طریق زبان طبیعی هستند. این در تضاد با رابط های فنی است که اغلب به مبادلات بدون تابعیت ، بسیار ساختار یافته و غیرقابل تحمل متکی هستند.

مشخصات OpenAPI

این وسیله ای ثابت برای حمل اطلاعات از طریق هر مرحله از چرخه عمر API فراهم می کند. این یک زبان مشخصات برای API های HTTP است که ساختار و نحو را به شکلی تعریف می کند که به زبان برنامه نویسی که API در آن ایجاد شده است ، عروسی نمی شود. مشخصات API به طور معمول در YAML یا JSON نوشته شده است و امکان اشتراک و مصرف آسان مشخصات را فراهم می کند.

DIALOGFLOW CX عامل

بلوک ساختمانی اصلی برنامه های عامل . یک برنامه عامل به طور معمول دارای عوامل زیادی است که در آن هر عامل برای انجام کارهای خاص تعریف می شود. داده های عامل به LLM ارائه می شود ، بنابراین اطلاعاتی را که برای پاسخ به سؤالات و اجرای وظایف لازم دارد ، دارد. هر نماینده می تواند اطلاعاتی را ارائه دهد ، نمایش داده شدگان را به خدمات خارجی ارسال کند ، یا جابجایی مکالمه را به یک جریان گفتگو CX یا یک عامل دیگر برای رسیدگی به کارهای فرعی ارائه دهد.

ابزار CX DIALOGFLOW

از ابزارها برای اتصال برنامه های عامل به سیستم های خارجی استفاده می شود. این سیستم ها می توانند دانش برنامه های عامل را تقویت کرده و آنها را قادر به انجام کارهای پیچیده به طور مؤثر کنند.

معماری را مرور کنید

9d3342d12f3b4dda.png

این برنامه Google Chat با DialogFlow CX ساخته شده است و به شرح زیر است:

  1. کاربر پیام را به برنامه ارسال می کند ، چه در یک پیام مستقیم یا در یک فضا.
  2. این برنامه که یک عامل CX Dialogflow است و با یک پروژه 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');
});

سرویس-باز .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

شروع مسخره خدمات پس زمینه

شما یک تابع ابری را برای شبیه سازی یک سرویس باطن که برنامه Agent DialogFlow CX برای ادغام و تماس با آن به عنوان ابزاری استفاده می کند ، مستقر می کنید.

در کنسول Google Cloud ، این مراحل را دنبال کنید:

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

  1. روی ایجاد تابع کلیک کنید.
  2. تحت اصول اولیه ، نام را روی function-2 تنظیم کنید.
  3. تحت تأیید اعتبار ، دکمه رادیویی Ally Ally Aptencation را انتخاب کنید.
  4. در زمان اجرا ، ساخت ، اتصالات و تنظیمات امنیتی ، حداکثر تعداد موارد را به 3 تنظیم کنید.
  5. روی Next کلیک کنید.

E8CF0EE7441BF634.PNG

  1. نقطه ورود را روی feedback-app-backend تنظیم کنید.
  2. محتوای پیش فرض را با Package.json و index.js جایگزین کنید.
  3. روی استقرار کلیک کنید.

bdb5cf9f503aa7f6.png

  1. URL را کپی کنید در حالی که چند دقیقه صبر می کنید تا عملکرد مستقر شود.

ایجاد برنامه عامل CX DIALOGFLOW

ایجاد برنامه

در کنسول Google Cloud ، این مراحل را دنبال کنید:

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

  1. روی برنامه جدید کلیک کنید.
  2. عامل را انتخاب کنید.
  3. نام نمایش را روی Feedback App تنظیم کنید.
  4. روی ایجاد کلیک کنید.

7EF3DBACEE96C5AA.PNG

ابزار اولیه

در کنسول Google Cloud ، این مراحل را دنبال کنید:

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

  1. عامل برنامه بازخورد را انتخاب کنید.
  2. بر روی Tools> + ایجاد کنید .
  3. نام را برای review تنظیم کنید.
  4. OpenAPI را انتخاب کنید.
  5. توضیحات را روی مقدار زیر تنظیم کنید:
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. $URL در پرونده service-openapi.yaml با URL که قبلاً کپی کرده اید بارگیری و جایگزین کنید.
  2. YAML Schema را روی محتوای ویرایش شده پرونده service-openapi.yaml تنظیم کنید.
  3. روی ذخیره کلیک کنید.

58085D6D56B603F7.PNG

عامل اولیه

در کنسول Google Cloud ، این مراحل را دنبال کنید:

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

  1. عامل برنامه بازخورد را انتخاب کنید.
  2. Agents> Agent Default Generative را انتخاب کنید.
  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. دستورالعمل ها را روی مقدار زیر تنظیم کنید:
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 ، این مراحل را دنبال کنید:

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

  1. عامل برنامه بازخورد را انتخاب کنید.
  2. به نماینده پیش نمایش بروید.
  3. در زیر نماینده ، جمع آوری بازخورد را انتخاب کنید.
  4. تحت مدل Select Generative ، Gemini-Pro را انتخاب کنید.
  5. ارسال پیام Hello! برای شروع

90CA8CB7B2C1CB4B.PNG

در کنسول Google Cloud ، این مراحل را دنبال کنید:

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

  1. Function-2> Logs را انتخاب کنید. برخی از گزارش ها Google-dialogflow را به عنوان تماس گیرنده نشان می دهند.

48bfdf1788004d18.png

برنامه Google Chat را ادغام کنید

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

  1. پروژه Google Cloud خود را انتخاب کنید.
  2. روی منوی عمل عامل Feedback App کلیک کنید.
  3. روی نام کپی کلیک کنید.

در کنسول Google Cloud ، این مراحل را دنبال کنید:

  1. به پیکربندی API Google Chat بروید.

  1. نام منبع یا نام منابع محیط را روی نام نماینده ای که قبلاً کپی کرده اید تنظیم کنید.

df16619a1cb85cf8.png

  • در گپ گوگل ، Hello! در یک پیام مستقیم به برنامه Google Chat برای شروع. نماینده به طور مشابه به آزمون شما از کنسول گفتگو CX پاسخ می دهد.

99a7a0295f122f31.png

11. تمیز کردن

پروژه Google Cloud را حذف کنید

برای جلوگیری از تحمل هزینه های Google Cloud برای منابع مورد استفاده در این CodeLab ، توصیه می کنیم پروژه Google Cloud را حذف کنید.

در کنسول Google Cloud ، این مراحل را دنبال کنید:

  1. روی منو ☰> IAM & Admin> تنظیمات کلیک کنید.

  1. روی خاموش کردن کلیک کنید.
  2. شناسه پروژه را وارد کنید.
  3. به هر حال روی خاموش کردن کلیک کنید.

407699a4e03afea6.png

پروژه اسکریپت برنامه ها را حذف کنید

توصیه می کنیم پروژه اسکریپت برنامه های خود را نیز حذف کنید.

در کنسول اسکریپت برنامه ها ، این مراحل را دنبال کنید:

  1. پروژه خود را انتخاب کنید.
  2. روی منوی Action کلیک کنید.
  3. روی حذف کلیک کنید.

FA3A42D7D2201EB9.png

12. تبریک می گویم

تبریک می گویم! شما برنامه های گپ Google را با جمینی ساخته اید!

بعدش چی؟

ما فقط موارد استفاده ساده را در این CodeLab به نمایش گذاشتیم ، اما زمینه های انبساط زیادی وجود دارد که ممکن است بخواهید در برنامه های Google Chat خود در نظر بگیرید ، مانند موارد زیر:

  • با سایر مدلهای تولید کننده هوش مصنوعی از جمله گمرک ادغام شوید.
  • از انواع دیگر رسانه ها مانند صدا ، تصویر و فیلم پشتیبانی کنید.
  • از multimodality استفاده کنید.
  • به ویندوزهای زمینه طولانی تر و حلقه های بازخورد اعتماد کنید.
  • برنامه های گپ Google آماده تولید را در بازار منتشر کنید. منابع زیادی برای توسعه دهندگان مانند فیلم های YouTube ، وب سایت های اسناد ، نمونه کد و آموزش در دسترس است.
  • Google Chat را برای سازمان خود فعال کنید. ویژگی Mode Import ، شروع به کار را آسان تر می کند.

بیشتر بدانید

،

1. قبل از شروع

برنامه های گپ Google با جمینی چیست؟

برنامه های چت Google با جمینی موارد زیر را انجام می دهند:

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

چرا برنامه های گپ Google را با جمینی ادغام می کنیم؟

موارد استفاده معمولی از مدل های AI تولیدی مانند جمینی در دسته های زیر قرار می گیرند:

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

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

پیش نیازها

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

در این CodeLab ، شما سه برنامه Google Chat را با جمینی می سازید تا سه مورد استفاده معرفی شده در بخش قبلی را پوشش دهد.

برنامه مدیریت شماره (ایجاد محتوا و تقویت)

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

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

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

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

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

22EFDECFF4601417.PNG

2D127C63518673B2.png

9aea694937f2f3ed.png

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

فن آوری های اصلی مورد استفاده عبارتند از: DialogFlow CX Data Agent Agent ، DialogFlow CX Webhook ، عملکردهای Google Cloud و Gemini.

9468866BFE848BB8.PNG

برنامه بازخورد (مکالمه)

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

فن آوری های اصلی مورد استفاده عبارتند از: DialogFlow CX Agent ، DialogFlow CX Tool ، OpenAPI ، عملکردهای Google Cloud و Gemini.

99a7a0295f122f31.png

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

  • نحوه ادغام برنامه های گپ Google با Gemini از طریق Vertex AI.
  • نحوه ادغام برنامه های Google Chat با DialogFlow CX Agents.
  • نحوه استفاده از جدیدترین ویژگی های Google Chat: App Home ، Google Chat Events و ابزارک های لوازم جانبی.

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

2. تنظیم کنید

منابع اولیه

در این بخش ، منابع زیر را از مرورگر وب مورد نظر خود دسترسی و پیکربندی می کنید.

برنامه اسکریپت برنامه ها

در کنسول اسکریپت برنامه ها ، این مراحل را دنبال کنید:

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

EA06C593B347B9D1.png

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

12C1485BD248B766.PNG

پروژه Google Cloud

در کنسول Google Cloud ، این مراحل را دنبال کنید:

  1. پروژه خود را انتخاب کنید.
  2. روی منو کلیک کنید ☰> APIS & Services> صفحه رضایت OAUTH> ویرایش برنامه ، و سپس نام برنامه را روی Chat Apps Gemini قرار دهید.

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

A71F040755DA3B8B.png

چت گوگل

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

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

9625418251528AE9.png

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

  1. این مخزن GitHub را بارگیری کنید.

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

DA9478DF97C99194.PNG

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

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

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

8bc2434e6dc6f22a.png

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

E1D833EB4D5B3a8f.png

3. برنامه 1: ساخت

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

Vertex AI

Vertex AI همه چیز را برای ساخت و استفاده از AI تولیدی ، از جمله راه حل های AI ، سازنده عامل ، بیش از 130 مدل بنیاد و یک سکوی یکپارچه هوش مصنوعی ارائه می دهد.

c9e9c7a1945b22ac.png

جوزا

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

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

سرویس چت پیشرفته به شما امکان می دهد از Google Chat API در اسکریپت برنامه ها استفاده کنید. این به اسکریپت ها اجازه می دهد تا فضاهای چت را پیدا کنند ، ایجاد و اصلاح کنند ، اعضای را به فضاها اضافه یا حذف کنند و پیام ها را با متن ، کارت ، پیوست ها و واکنش ها بخوانند یا ارسال کنند.

معماری را مرور کنید

8C9C7B7328A69EA6.PNG

این برنامه Google Chat با اسکریپت برنامه ها ساخته شده است. به صورت زیر عمل می کند:

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

بررسی جریان

ایجاد مسئله

7ca0e8ba3c8255bb.png

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

51b47714c378a24b.png

مسئله نزدیک از فضای اختصاصی

89E50228DEEAB0F9.PNG

کد منبع را مرور کنید

پروژه اسکریپت برنامه ها شامل اسکریپت های زیر است:

  • Configuration : ثابت برای ویرایش بر اساس محیط.
  • ChatApp : رویدادهای تعامل گپ Google را شامل می شود ، از جمله پیام ها ، کلیک کارت ، دستورات بریده و گفتگو.
  • Storage : توابع ابزار که به خدمات Properties متکی هستند.
  • ChatAppAuth : توابع ابزار که به تأیید اعتبار برنامه Google CHAT اعتماد دارند.
  • Docs : توابع ابزار که به Docs Google متکی هستند.
  • VertexAi : توابع ابزار که به راس AI متکی هستند.

و در اینجا قسمت هایی که به طور فعال هنگام تولید اسناد گزارش با تاریخ های جمینی و تاریخچه چت مورد استفاده قرار می گیرند:

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

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 را به روز کنید

API را فعال کنید

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

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

حساب خدمات را شروع کنید

در کنسول Google Cloud ، این مراحل را دنبال کنید:

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

74CF57426419F39.PNG

  1. نام حساب خدمات را روی chat-app تنظیم کنید.
  2. توضیحات حساب خدمات را روی Chat app auth تنظیم کنید.
  3. روی ایجاد و ادامه کلیک کنید.
  4. روی Done کلیک کنید. شما به صفحه حسابهای سرویس هدایت می شوید و می توانید حساب خدمات ایجاد شده را مشاهده کنید.

CA0468F1F9390F9.PNG

  1. حساب سرویس تازه ایجاد شده را انتخاب کنید.
  2. برگه کلیدها را انتخاب کنید.
  3. روی افزودن کلید کلیک کنید.
  4. روی ایجاد کلید جدید کلیک کنید.
  5. JSON را انتخاب کنید.
  6. روی ایجاد کلیک کنید.

9F7E6EA020978AB0.PNG

گفتگو بسته می شود و جفت کلید عمومی/خصوصی تازه ایجاد شده شما به طور خودکار به عنوان یک فایل JSON در محیط محلی شما بارگیری می شود. شما بعداً هنگام ویرایش کد منبع پروژه اسکریپت برنامه های خود از محتوای آن استفاده می کنید.

پیکربندی API Google را به روز کنید

در کنسول Google Cloud ، این مراحل را دنبال کنید:

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

Bee2e7B63659AB33.png

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

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

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

  1. JSON FINASION نام CHAT_CREDENTIALS را در پرونده Configuration.js روی محتوای پرونده کلید خصوصی که قبلاً بارگیری کرده اید تنظیم کنید.

d721f6bff73c5304.png

  1. در کنسول Google Cloud ، روی منو ☰> IAM & Admin> تنظیمات کلیک کنید.

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

82592FA0BD113469.png

  1. String Fired نامگذاری شده PROJECT_ID در پرونده Configuration.js روی شناسه پروژه تنظیم کنید.

383cee561130ceba.png

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

برای اولیه سازی تنظیمات clasp برای فشار دادن کد منبع به پروژه اسکریپت برنامه های سمت راست ، این مراحل را دنبال کنید:

  1. در کنسول اسکریپت برنامه ها ، پروژه خود را انتخاب کنید.
  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. حساب Google خود را انتخاب کنید.
  3. احراز هویت
  4. دسترسی به برنامه را مرور کنید و اجازه دهید.

4a2fd7ac5918bf1a.png

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

ACB9065568FE47D2.png

2d6ef9c62f47e082.png

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

Be3f3c6eb0f929c1.png

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

22EFDECFF4601417.PNG

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

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

3253CEC2392E281F.PNG

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

132CC4ACFC10B98C.PNG

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

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

2D127C63518673B2.png

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

9aea694937f2f3ed.png

4. اختیاری: برنامه 1: اضافه کردن برنامه به خانه

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

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

65f56f70f67a32e4.png

بررسی جریان

مدیریت مسائل

10663F5FC107FB3F.PNG

کد منبع را مرور کنید

پروژه اسکریپت برنامه ها باید ویرایش شود.

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 ، این مراحل را دنبال کنید:

  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

آن را امتحان کنید

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

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

3B2A8690E758F965.PNG

  1. برگه خانه را از فضای خود با برنامه Google Chat انتخاب کنید. جزئیات موضوعاتی را که ایجاد کرده اید می توانید مشاهده کنید.

ed8e32da0e6f2ac6.png

5. اختیاری: برنامه 1: نظارت بر فضا را اضافه کنید

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

میخانه / فرعی

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

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

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

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

رویدادهای فضای کاری Google

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

7816E477B112BFB6.PNG

در اینجا نحوه ارائه API رویدادهای Google Workspace API از طریق اشتراک ، رویدادها را به یک برنامه ارائه می دهد:

  1. این برنامه در یک منبع در یک برنامه فضای کاری Google ، مانند یک فضا مشترک است.
  2. منبعی که برنامه مشترک است تغییر می کند.
  3. برنامه Google WorksPace رویدادی را به موضوعی در Pub/Sub ارائه می دهد ، که به عنوان نقطه پایانی اعلان برای اشتراک برنامه Google Google برنامه است. این رویداد حاوی داده هایی در مورد آنچه در منبع تغییر کرده است.
  4. برنامه پیام میخانه/SUB را که شامل رویداد است پردازش می کند و در صورت لزوم اقدام می کند.

بررسی جریان

ایجاد شماره (به روز رسانی)

6d7a9d7a68666a80.png

مشکل عیب یابی از فضای اختصاصی (بروزرسانی)

17E60F052F222456.PNG

شماره نزدیک از فضای اختصاصی (بروزرسانی)

742D490EA0B6FE3A.PNG

اشتراک پردازش

DE3017100DEC6401.PNG

کد منبع را مرور کنید

پروژه اسکریپت برنامه ها باید ویرایش شود.

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

ذخیره سازی

// 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 را به روز کنید

API را فعال کنید

  1. در کنسول Google Cloud ، رویدادهای فضای کاری Google و PubSub را فعال کنید.

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

اشتراک را شروع کنید

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

در کنسول Google Cloud ، این مراحل را دنبال کنید:

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

  1. روی ایجاد موضوع کلیک کنید.
  2. تنظیم شناسه موضوع را روی workspace-events تنظیم کنید.
  3. کادر انتخاب Add A Default اشتراک را انتخاب کنید.
  4. روی ایجاد کلیک کنید.

B39F9A0AEC7C9939.PNG

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

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

8D4016C37532503.png

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

در کنسول Google Cloud ، این مراحل را دنبال کنید:

  1. به منو بروید ☰> IAM & Admin> تنظیمات .

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

82592FA0BD113469.png

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

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

آن را امتحان کنید

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

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

در کنسول Google Cloud ، این مراحل را دنبال کنید:

  1. به منو بروید ☰> میخانه/زیر> اشتراک ها .

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

82631C9792D83889.PNG

در کنسول اسکریپت برنامه ها ، این مراحل را دنبال کنید:

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

c612e8fa2bd0a163.png

در کنسول Google Cloud ، این مراحل را دنبال کنید:

  1. به منو بروید ☰> میخانه/زیر> اشتراک ها .

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

E185454CAC862A7B.PNG

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

در کنسول Google Cloud ، این مراحل را دنبال کنید:

  1. به منو بروید ☰> میخانه/زیر> اشتراک ها .

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

6. اختیاری: برنامه 1: اضافه کردن کمک به انحصار

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

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

بررسی جریان

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

780D0802F77DD180.PNG

کد منبع را مرور کنید

پروژه اسکریپت برنامه ها باید ویرایش شود.

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. ارسال پیام مستقیم با دستور Slash /create به برنامه. برنامه گفتگو را باز می کند.
  2. عنوان را برای Issue Title 4 تنظیم کنید.
  3. توضیحات مربوط به شماره Description 4 را تنظیم کنید.
  4. روی ایجاد کلیک کنید.
  5. در فضای تازه ایجاد شده ، It happened to me last week as well .

در کنسول اسکریپت برنامه ها ، این مراحل را دنبال کنید:

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

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

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

در کنسول اسکریپت برنامه ها ، این مراحل را دنبال کنید:

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

7936342847ACBE2D.PNG

7. اختیاری: برنامه 1: ترجیحات اضافه کنید

.

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

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

eebe88238f6b13f.png

بررسی جریان

کمک به انحصار کمک کنید

1BB7A8592EE6221E.PNG

کد منبع را مرور کنید

پروژه اسکریپت برنامه ها باید ویرایش شود.

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

ذخیره سازی

// 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

آن را امتحان کنید

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

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

در کنسول اسکریپت برنامه ها ، این مراحل را دنبال کنید:

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

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

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

de722cff1928dec9.png

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

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

در کنسول اسکریپت برنامه ها ، این مراحل را دنبال کنید:

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

347D659DB53B73E9.png

8. برنامه 2: ساخت

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

Gen Ai Grounding

این در مورد ایجاد مدل های هوش مصنوعی واقعی تر و قابل اعتماد تر با اتصال آنها به منابع دانش قابل اثبات است. این تکنیک به جلوگیری از اختراع هوش مصنوعی کمک می کند و می تواند به پاسخگویی به متن متناسب و کمتر مغرضانه کمک کند.

زبان طبیعی

Any language spoken or written by humans for everyday communication, in contrast to artificial or computer-based languages.

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

Cloud Storage allows worldwide storage and retrieval of any amount of data at any time. It can be used for a range of scenarios, including serving website content, storing data for archival and disaster recovery, or distributing large data objects to users through direct download.

Dialogflow CX data store

Dialogflow CX integrates with data stores that are collections of websites and documents used by data store agents to find answers for end user's questions from specific data. For a given question, the data store agent searches for an answer from the given source content and summarizes the findings into a coherent response. It also provides supporting links to the sources of the response for the end user to learn more.

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 a data store located in Cloud Storage.
  4. The app sends a synchronous response, either in a direct message or in the original space.

Review flows

Answer question

aad9fb5a7ca48956.png

Review source code

The only source that you need isn't code, but rather data that you use for grounding.

google-chat-overview.pdf

Contains the unstructured information of Google Chat apps, a printed version of a page from the Google Workspace developers website.

e9b91c4587b1a3a0.png

Update Google Cloud project

In the Google Cloud console, follow these steps:

  1. Enable the Dialogflow and Cloud Storage APIs.

  1. Enable the Vertex AI Agent Builder API.

  1. Click Menu ☰ > APIs & services > Enabled APIs & services and then confirm that all APIS are enabled.

.

Create Dialogflow CX data store agent

Initiate knowledge data

In the Google Cloud console , follow these steps:

  1. Click to Menu ☰ > Cloud Storage > Buckets .

4f15978ae9f1b687.png

  1. روی ایجاد کلیک کنید.
  2. Set name to gchat-knowledge .
  3. روی ایجاد کلیک کنید.

6b38c6d4d2c41bba.png

  1. Select the gchat-knowledge bucket.
  2. Click Upload files .
  3. Download and select the google-chat-overview.pdf file from your local environment.

df89acb22e1762af.png

Create app

In the Google Cloud console , follow these steps:

  1. Click Menu ☰ > Agent builder > Apps .

  1. Click New app .
  2. Select the Chat type.

44276003074bcf14.png

  1. Set Company name to your company name.
  2. Set Agent name to knowledge .
  3. روی Continue کلیک کنید.

c4fedfd7556f723b.png

  1. Click Create new data store .
  2. Select Cloud Storage as the data source.

6e2440ecf0f8f9bd.png

  1. فایل را انتخاب کنید.
  2. روی Browse کلیک کنید.
  3. Select the google-chat-overview.pdf file.
  4. روی Continue کلیک کنید.
  5. Set the data store name to gchat-knowledge-ds .
  6. روی ایجاد کلیک کنید.

a675df7490b83900.png

  1. Select the gchat-knowledge-ds data store in the table.
  2. روی ایجاد کلیک کنید.

f121d580771ed96.png

  1. After a couple of minutes, click Menu ☰ > Agent builder > Apps and notice that you can see the app.

d929a7431dd84968.png

  1. Click Menu ☰ > Agent builder > Data stores .

  1. Click the gchat-knowledge-ds data store. The number of documents is 1 , which indicates that it's ready.

558319790a0accf2.png

Complete and test app

In the Dialogflow CX console , follow these steps:

  1. Select your Google Cloud project.
  2. Select the knowledge agent.

ca9b2fb4be92e8e4.png

  1. Select Agent settings > Generative AI > Generative agent .
  2. Switch the model from Text Bison to Gemini Pro .
  3. روی ذخیره کلیک کنید.

68cc4713ec9b25a0.png

  1. Click Test agent .
  2. Send What is Google Chat? . The agent responds with something meaningful.

8e3a2cb02469041a.png

Integrate Google Chat app

In the Dialogflow CX console , follow these steps:

  1. Select your Google Cloud project.
  2. In the row of the knowledge agent, click 1e7ede7abae4aa3c.png > Copy name .

e19f61185158110d.png

In the Google Cloud console , follow these steps:

  1. Go to Google Chat API configuration.

  1. Under Connection settings , select Dialogflow .
  2. Under Dialogflow settings , select Dialogflow CX .
  3. Set Agent or Environment resource name to the agent name that you copied.
  4. Remove the two slash commands.

505ff39a50880904.png

  1. In Google Chat , send What is Google Chat? in a direct message to the Google Chat app. The agent responds with something meaningful.

abda9e43b81fb0ea.png

9. Optional: App 2: Add sources

Review concepts

Dialogflow CX webhook

A service that hosts business logic or calls other services. During a Dialogflow CX session, webhooks can rely on the data extracted by natural language processing to generate dynamic responses, validate collected data, or trigger actions on the backend.

توابع ابری

Cloud Functions are great for building serverless backends, doing real-time data processing, and creating intelligent apps. There are no servers to provision, manage, patch, or update. They automatically scale, and are highly available and fault-tolerant.

Review flows

Answer question (update)

92767c07c7b252aa.png

Review source code

The only source code that you need is the function to adapt agent responses to Google Chat messages. It's used as a webhook.

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

Update Google Cloud project

In the Google Cloud console, follow these steps:

  1. Enable the Cloud Build, Cloud Functions, Cloud Logging, Artifact Registry, and Cloud Run APIs.

  1. Click Menu ☰ > APIs & services > Enabled APIs & services and then confirm that the APIs are enabled.

Update Dialogflow CX data store agent

You need to deploy a Cloud Function and update the Dialogflow CX webhook to trigger it with multiple sources when possible.

Return multiple sources

By default, a new data store agent only returns one source at maximum, but you can change for more.

In the Dialogflow CX console , follow these steps:

  1. Select your Google Cloud project.
  2. Select the knowledge agent.
  3. Select Start page .
  4. Select Edit data stores .
  5. Under the Agent responses section , set Data store response options to 5 .
  6. روی ذخیره کلیک کنید.

f5932d03057df645.png

Initiate Cloud Function

In the Google Cloud console , follow these steps:

  1. Click Menu ☰ > Cloud Functions .

  1. Click on Create function .
  2. Under Basics , set name to function-1 .
  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. روی Next کلیک کنید.

bd3790a9285f9c07.png

  1. Set Entry point to 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. روی ذخیره کلیک کنید.

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. روی ذخیره کلیک کنید.

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

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. روی Next کلیک کنید.

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. روی ایجاد کلیک کنید.

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. روی ذخیره کلیک کنید.

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. روی ذخیره کلیک کنید.

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! برای شروع

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. روی حذف کلیک کنید.

fa3a42d7d2201eb9.png

12. 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.

بیشتر بدانید