با 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/chat-apps-gemini باز کنید و سپس به همان دایرکتوری در ترمینال خود بروید.

da9478df97c99194.png

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

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

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

8bc2434e6dc6f22a.png

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

e1d833eb4d5b3a8f.png

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

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

Vertex AI

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

c9e9c7a1945b22ac.png

جوزا

Gemini یک 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. فایل knowledge-app/grounding/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. محتوای پیش‌فرض را با فایل‌های موجود در دایرکتوری knowledge-app/agent-response-adapter جایگزین کنید.
  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 را روی URL که قبلاً کپی کرده اید تنظیم کنید.
  6. روی ذخیره کلیک کنید.

5F3C6804D52B87C1.PNG

  1. روی ساخت کلیک کنید.
  2. صفحه شروع را انتخاب کنید.
  3. فروشگاه های ویرایش داده ها را انتخاب کنید.
  4. در زیر تنظیمات WebHook ، روی Enable Webhook Toggle کلیک کنید.
  5. آداپتور پاسخ چت Google را برای Webhook انتخاب کنید.
  6. برچسب را روی arbitrary_tag تنظیم کنید.
  7. روی ذخیره کلیک کنید.

442fcaaec9b8f2e3.png

برنامه آزمایشی

  • در گپ Google ، 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. محتوای پیش فرض را با پرونده های موجود در فهرست feedback-app جایگزین کنید.
  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 در پرونده feedback-app/service-openapi.yaml با URL که قبلاً کپی کرده اید جایگزین کنید.
  2. YAML Schema را بر روی محتوای ویرایش شده پرونده feedback-app/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 ، شروع به کار را آسان تر می کند.

بیشتر بدانید