۱. قبلاز شروع
برنامههای Google Chat با Gemini چیست؟
برنامههای Google Chat با Gemini کارهای زیر را انجام میدهند:
- سرویسها و منابعتان را به Google Chat بیاورید تا کاربران بتوانند بدون ترک مکالمه اطلاعات دریافت کنند و اقدام انجام دهند.
- با مدل هوش مصنوعی زایای Gemini ادغام میشوند تا بتوانند در زمانهای خاصی دادههایی مانند نوشتار یا تصویر را ایجاد یا جستجو کنند و گردش کار شما را سادهتر کنند.
چرا برنامههای Google Chat را با Gemini ادغام کنیم؟
موارد استفاده معمول از مدلهای «هوش مصنوعی زایا» مانند Gemini در دستههای زیر قرار میگیرند:
- ایجاد و بهبود محتوا. نسخه بازاریابی تولید کنید، پستهای رسانههای اجتماعی بسازید، تصاویر واقعگرایانه ایجاد کنید، موسیقی بسازید، یا در ایجاد محتوای ویدیویی کمک بگیرید.
- جستجوی داده. اطلاعات آماری کلیدی را از پایگاه دانش بدون ساختار استخراج کنید، نوشتارهای طولانی را خلاصه کنید، محتواها را طبقهبندی کنید، یا زبانها را با دقت و سرعت بهبودیافته ترجمه کنید.
- مکالمه. مکالمههای طبیعی، آموزنده، و خلاقانه داشته باشید.
امکان ادغام این قابلیتها مستقیماً در میانای آشنای Google Chat فرصت بزرگی برای هرکسی است که میخواهد تجربه و بهرهوری کاربرانش را بهبود بخشد.
پیشنیازها
- دانش پایه درباره Apps Script، Google Cloud، و Node.js.
- دانش پایه درباره مفاهیم Google Chat، ازجمله گردانندههای رویداد، فرمانهای خط مورب، کادرهای گفتگو، کارتها، پیامها، اصالتسنجی برنامه، و میاناهای برنامهسازی کاربردی.
آنچه شما میسازید
در این codelab، سه برنامه Google Chat با Gemini میسازید تا سه مورد استفاده معرفیشده در بخش قبلی را پوشش دهید.
برنامه مدیریت مشکل (ایجاد و بهبود محتوا)
این برنامه کارهای زیر را انجام میدهد:
- مشکلات را از زمان ایجاد تا بسته شدن با تعاملات پایه، صفحه اصلی برنامه، و اصالتسنجی برنامه مدیریت میکند.
- پیامها را پایش میکند و با رویدادها و ابزارههای جانبی به فراگیر بودن کمک میکند.
از Gemini برای انجام کارهای زیر استفاده میکنید:
- گزارشهای مشکل را براساس سابقه پیام و جزئیات مشکل تولید کنید.
- کلمات غیرفراگیر را در پیامها با پیاموارههای محدودشده طبقهبندی کنید.
فناوریهای اصلی مورداستفاده عبارتند از Vertex AI، Gemini، Apps Script، و میاناهای برنامهسازی کاربردی Google Workspace (سرپرست، Chat، Docs، Events).



برنامه دانش (جستجوی داده)
این برنامه برای درک و پاسخ به سؤالات به زبان طبیعی و برگرداندن مراجع منبع از دادههای بدون ساختار به Gemini متکی است.
فناوریهای اصلی مورداستفاده عبارتاند از عامل مخزن داده Dialogflow CX، وبقلاب Dialogflow CX، Google Cloud Functions، و Gemini.

برنامه بازخورد (مکالمه)
این برنامه برای جمعآوری و ذخیره مرورها با مکالمه به زبان طبیعی به Gemini متکی است.
فناوریهای اصلی مورداستفاده عبارتاند از عامل Dialogflow CX، ابزار Dialogflow CX، OpenAPI، Google Cloud Functions، و Gemini.

آنچه میآموزید
- نحوه ادغام کردن برنامههای Google Chat با Gemini ازطریق Vertex AI.
- نحوه ادغام کردن برنامههای Google Chat با عاملهای Dialogflow CX.
- نحوه استفاده از جدیدترین ویژگیهای Google Chat: صفحه اصلی برنامه، «رویدادهای Google Chat»، و ابزارههای جانبی.
آنچه نیاز دارید
- تکمیل شروع سریع ساختن برنامه Google Chat با Apps Script. این codelab برپایه پروژه Apps Script و Google Cloud حاصل ساخته شده است.
۲. راهاندازی کردن
مقداردهی اولیه منابع
در این بخش، از مرورگر وب ترجیحیتان به منابع زیر دسترسی پیدا میکنید و آنها را پیکربندی میکنید.
پروژه Apps Script
در کنسول Apps Script، این مراحل را دنبال کنید:
- روی تنظیمات کلیک کنید و سپس Google Apps Script API را فعال کنید.

- پروژهتان را انتخاب کنید.
- روی تنظیمات پروژه کلیک کنید.
- چارگوش انتخاب نمایش فایل مانیفست «
appsscript.json» در ویرایشگر را انتخاب کنید. - نام پروژه به
Chat Apps Geminiتغییر داده شد.

پروژه Google Cloud
در کنسول Google Cloud، این مراحل را دنبال کنید:
- پروژهتان را انتخاب کنید.
- روی منو ☰ > میاناهای برنامهسازی کاربردی و سرویسها > صفحه رضایت OAuth > ویرایش برنامه کلیک کنید، سپس نام برنامه را روی
Chat Apps Geminiتنظیم کنید.
- به پیکربندی Google Chat API بروید و سپس نام برنامه و شرح را روی
Chat Apps Geminiتنظیم کنید.

Google Chat
در Google Chat، این مراحل را دنبال کنید:
- درصورت لزوم، گپی را با برنامه Google Chat خود شروع کنید.
- پیامی مثل
Helloارسال کنید تا مطمئن شوید کار میکند.

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

نصب و پیکربندی clasp
ما از clasp برای ویرایش و ارسال آسان نسخههای کد منبع از محیط محلی به پروژه Apps Script استفاده میکنیم.
- در محیط محلیتان، جدیدترین نسخههای
node،npm، وclaspرا نصب کنید.
npm install -g @google/clasp
- با حسابتان وارد سیستم شوید:
clasp login

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

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

Gemini
Gemini یک مدل زبانی بزرگ چندوجهی از Google است که ازطریق Vertex AI قابلدسترسی است. این ابزار به افراد کمک میکند تا پتانسیل انسانی خود را شکوفا کنند تا بتوانند تخیل خود را تقویت کنند، کنجکاوی خود را گسترش دهند، و بهرهوری خود را افزایش دهند.
سرویس Chat پیشرفته
سرویس Chat پیشرفته به شما امکان میدهد از Google Chat API در Apps Script استفاده کنید. این به اسکریپتها اجازه میدهد فضاهای Chat را پیدا، ایجاد، و اصلاح کنند، اعضا را به فضاها اضافه یا از آنها حذف کنند، و پیامهای حاوی نوشتار، کارت، پیوست، و واکنش را بخوانند یا پست کنند.
بررسی معماری

این برنامه Google Chat با Apps Script ساخته شده است. به این صورت کار میکند:
- کاربری پیامی را در پیام مستقیم یا در فضا به برنامه ارسال میکند.
- برنامه، که در پروژه Apps Script پیادهسازی شده است و با پروژه Google Cloud مرتبط است، پیام را پردازش میکند.
- این برنامه با میاناهای برنامهسازی کاربردی «سندنگار Google» و Google Chat ادغام میشود.
- این برنامه از سرویس ویژگیها برای حفظ دادهها در ویژگیهای اسکریپت استفاده میکند.
- برنامه پاسخی همگام، در پیام مستقیم یا در فضای اصلی، ارسال میکند.
بازبینی جریانها
ایجاد مشکل

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

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

بازبینی کد منبع
پروژه Apps Script حاوی اسکریپتهای زیر است:
-
Configuration: ثابتهایی که باید براساس محیط ویرایش شوند. ChatApp: رویدادهای تعاملی Google Chat را مدیریت میکند، ازجمله پیامها، کلیکهای کارت، فرمانهای خط مورب، و کادرهای گفتگو.Storage: توابع سودمندی که به «سرویسهای ویژگیها» متکی هستند.ChatAppAuth: توابع سودمندی که به اصالتسنجی برنامه Google Chat متکی هستند.-
Docs: توابع سودمندی که به «سندنگار Google» متکی هستند. -
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 === undefin>ed)
.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
فعال کردن میاناهای برنامهسازی کاربردی
- در کنسول Google Cloud، میاناهای برنامهسازی کاربردی سندنگار Google، کیت توسعه نرمافزار Google Admin، و Vertex AI را فعال کنید:
- روی منو ☰ > میاناهای برنامهسازی کاربردی و سرویسها > میاناهای برنامهسازی کاربردی و سرویسهای فعالشده کلیک کنید و سپس تأیید کنید که میاناهای برنامهسازی کاربردی فعال شدهاند.
راهاندازی حساب سرویس
در کنسول Google Cloud، این مراحل را دنبال کنید:
- روی منو ☰ > IAM و سرپرست > حسابهای سرویس > + ایجاد حساب سرویس کلیک کنید.

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

- حساب سرویس تازه ایجادشده را انتخاب کنید.
- برگه کلیدها را انتخاب کنید.
- روی افزودن کلید کلیک کنید.
- روی ایجاد کلید جدید کلیک کنید.
- JSON را انتخاب کنید.
- روی ایجاد کردن کلیک کنید.

کادر گفتگو بسته میشود و جفت کلید عمومی/خصوصی جدیدی که ایجاد کردهاید بهطور خودکار بهعنوان فایل JSON در محیط محلی شما بارگیری میشود. بعداً هنگام ویرایش کد منبع پروژه Apps Script از محتوای آن استفاده میکنید.
بهروزرسانی پیکربندی Google Chat API
در کنسول Google Cloud، این مراحل را دنبال کنید:
- فرمان خط مورب اضافه کنید.
- نام را روی
/createتنظیم کنید. - شناسه فرمان را روی
1تنظیم کنید. - شرح را روی
Create a new issueتنظیم کنید. - چارگوش انتخاب کادر گفتگویی را باز میکند را انتخاب کنید.
- فرمان خط مورب دیگری اضافه کنید.
- نام را روی
/closeتنظیم کنید. - شناسه فرمان را روی
2تنظیم کنید. - شرح را روی
Close an issueتنظیم کنید. - روی ذخیره کلیک کنید.

بهروزرسانی پروژه Apps Script
- دایرکتوری فعلی را در پایانه محلیتان به
issue-management/1-baselineتغییر دهید. حاوی کد منبع است. قبلاز ارسال کد منبع به پروژه Apps Script، باید چند مورد را پیکربندی کنید.
پیکربندی کد منبع
- ثابت JSON با نام
CHAT_CREDENTIALSرا در فایلConfiguration.jsروی محتوای فایل کلید خصوصی که قبلاً بارگیری کردهاید تنظیم کنید.

- در کنسول Google Cloud، روی منو ☰ > IAM و سرپرست > تنظیمات کلیک کنید.
- شناسه پروژه را کپی کنید.

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

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

- در دایرکتوری فعلی، فایل
.clasp.jsonایجاد کنید. <your-script-id>را با شناسه کپیشده جایگزین کنید.- نتیجه را در فایل
.clasp.jsonکپی کنید. - فایل
.clasp.jsonرا ذخیره کنید.
{
"scriptI<d": ">;your-script-id"
}
کد منبع Push
- فرمان زیر را اجرا کنید:
$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.
امتحان کنید
- در Google Chat،
Hello!را در پیام مستقیم به برنامه ارسال کنید. برنامه پاسخ نمیدهد، اما پیامی ظاهر میشود که پیکربندی را درخواست میکند.

- روی پیکربندی کلیک کنید.
- «حساب Google» خود را انتخاب کنید.
- اصالتسنجی کنید.
- دسترسی به برنامه را مرور و مجاز کنید.

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


- پیام مستقیم دیگری به برنامه ارسال کنید، اما با فرمان خط مورب
/create.

- در کادر گفتگو، عنوان را روی
Issue Title 1تنظیم کنید. - شرح را روی مشکل
Description 1تنظیم کنید. - روی ایجاد کردن کلیک کنید.

برنامه کارهای زیر را انجام میدهد:
- کادر گفتگو را میبندد.
- فضایی مختص مشکل تازه ایجادشده با همان عنوان ایجاد میکند.
- به فضای تازه ایجادشده میپیوندد.
- پیامی حاوی شرح مشکل در فضای جدیداً ایجادشده ارسال میکند.
- پیام مستقیمی حاوی پیوند فضای جدیداً ایجادشده برایتان ارسال میکند.

- در فضای جدیدی که ایجاد شده است، پیامی با فرمان خط مورب
/closeو وضوح موردنظر (مثلاًNot reproducible) ارسال کنید.

برنامه کارهای زیر را انجام میدهد:
- سند گزارشی در «سندنگار Google» ایجاد میکند.
- پیامی به فضای اختصاصدادهشده به مشکل ارسال میکند که حاوی پیوندی به سند گزارش جدیداً ایجادشده است.

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

۴. اختیاری: برنامه ۱: افزودن صفحه اصلی برنامه
مرور مفاهیم
صفحه اصلی برنامه پیام کارتی سفارشیسازیپذیری است که وقتی کاربر ازطریق پیام مستقیم با برنامه Chat به برگه صفحه اصلی دسترسی پیدا میکند، برنامه Chat آن را برای کاربر ارسال میکند. این پیام معمولاً برای نمایش اسناد برنامه یا نمای کلی استفاده میشود. ازنظر فنی، رویداد اختصاصیای برای رسیدگی وجود دارد و براساس همان اصول اصلی پیامهای کارتی است.

بازبینی جریانها
مدیریت مشکلات
بازبینی کد منبع
پروژه 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، این مراحل را دنبال کنید:
در محیط محلیتان، این مراحل را دنبال کنید:
- دایرکتوری فعلی را در پایانه به
issue-management/2-app-homeتغییر دهید. این فایل حاوی کد منبعی است که باید استفاده کنید. - فایل
issue-management/1-baseline/.clasp.jsonرا در دایرکتوری کنونیتان کپی کنید. - فایل
issue-management/1-baseline/Configuration.jsرا در فهرست راهنمای فعلیتان کپی کنید تا جایگزین فایل موجود شود. - فرمان زیر را اجرا کنید:
clasp push
امتحان کنید
در Google Chat، این مراحل را دنبال کنید:
- پیام مستقیمی با فرمان خط مورب
/createبه برنامه ارسال کنید. برنامه کادر گفتگویی را باز میکند. - عنوان را روی
Issue Title 2تنظیم کنید. - شرح را روی مشکل
Description 2تنظیم کنید. - روی ایجاد کردن کلیک کنید.

- برگه صفحه اصلی را از فضای خود با برنامه Google Chat انتخاب کنید. میتوانید جزئیات مشکلاتی را که ایجاد کردهاید ببینید.

۵. اختیاری: برنامه ۱: افزودن نظارت بر فضا
مرور مفاهیم
Pub/Sub
Pub/Sub یک سرویس پیامرسانی ناهمگام و مقیاسپذیر است که سرویسهای تولیدکننده پیام را از سرویسهای پردازشکننده آن پیامها جدا میکند. Pub/Sub به شما امکان میدهد سیستمهایی از تولیدکنندگان و مصرفکنندگان رویداد ایجاد کنید که ناشران و مشترکان نامیده میشوند. ناشران با پخش رویدادها بهصورت ناهمگام با مشترکین ارتباط برقرار میکنند، نه ازطریق فراخوانیهای رویه از راه دور (RPC) همگام.
ناشران رویدادها را بدون توجه به نحوه یا زمان پردازش این رویدادها به سرویس Pub/Sub ارسال میکنند. سپس Pub/Sub رویدادها را به همه سرویسهایی که به آنها واکنش نشان میدهند ارسال میکند. در سیستمهایی که ازطریق RPC ارتباط برقرار میکنند، ناشران باید منتظر بمانند تا مشترکین دادهها را دریافت کنند. بااینحال، ادغام ناهمگام در Pub/Sub انعطافپذیری و استحکام کل سیستم را افزایش میدهد.
موضوع: منبعی نامگذاریشده که نشاندهنده فید پیامها است. قبلاز اینکه بتوانید موضوعی را منتشر کنید یا در آن مشترک شوید، باید آن را ایجاد کنید.
اشتراک: برای دریافت پیامهای منتشرشده در یک موضوع، باید اشتراکی برای آن موضوع ایجاد کنید. کلاینت مشترک پیامهای منتشرشده در موضوع را دریافت و پردازش میکند. یک موضوع میتواند چندین اشتراک داشته باشد، اما یک اشتراک معین به یک موضوع تعلق دارد.
رویدادهای Google Workspace
رویدادهای Google Workspace نشاندهنده تغییرات در منابع Google Workspace هستند، مثلاً وقتی منابع ایجاد، بهروزرسانی، یا حذف میشوند. برنامهها میتوانند در منابع Google Workspace مشترک شوند تا رویدادهای مربوطه را بهصورت ناهمگام دریافت و پردازش کنند.

در اینجا نحوه ارائه رویدادها به برنامه ازطریق اشتراک توسط Google Workspace Events API آورده شده است:
- برنامه در منبعی در برنامه Google Workspace، مثل فضا، مشترک میشود.
- منبعی که برنامه در آن مشترک شده است تغییر میکند.
- برنامه Google Workspace رویدادی را به موضوعی در Pub/Sub ارسال میکند که بهعنوان نقطه پایانی اعلان برای اشتراک Google Workspace برنامه عمل میکند. این رویداد حاوی دادههایی درباره تغییرات منبع است.
- برنامه پیام Pub/Sub را که حاوی رویداد است پردازش میکند و درصورت لزوم اقدام میکند.
بازبینی جریانها
ایجاد مشکل (بهروزرسانی)

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

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

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

بازبینی کد منبع
پروژه 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
فعال کردن میاناهای برنامهسازی کاربردی
- در کنسول Google Cloud، Google Workspace Events و PubSub را فعال کنید.
- روی منو ☰ > میاناهای برنامهسازی کاربردی و سرویسها > میاناهای برنامهسازی کاربردی و سرویسهای فعالشده کلیک کنید و سپس تأیید کنید که هر دو فعال شدهاند.
شروع اشتراک
برای اینکه همه رویدادهای فضای کاری پست شوند، باید موضوع Pub/Sub ایجاد کنید و در آن مشترک شوید.
در کنسول Google Cloud، این مراحل را دنبال کنید:
- به منو ☰ > Pub/Sub > موضوعات بروید.
- روی ایجاد موضوع کلیک کنید.
- شناسه موضوع را روی
workspace-eventsتنظیم کنید. - چارگوش انتخاب افزودن اشتراک پیشفرض را انتخاب کنید.
- روی ایجاد کردن کلیک کنید.

برای اعطای دسترسی به انتشار پیامهای Pub/Sub در موضوع جدیدی که از Google Chat ایجاد کردهاید، این مراحل را دنبال کنید:
- موضوع را از فهرست انتخاب کنید.
- برگه اجازهها را انتخاب کنید.
chat-api-push@system.gserviceaccount.comرا به مدیران جدید اضافه کنید.- Pub/Sub Publisher را برای نقش انتخاب کنید.
- روی ذخیره کلیک کنید.

بهروزرسانی پروژه Apps Script
در کنسول Google Cloud، این مراحل را دنبال کنید:
- به منو ☰ > IAM و سرپرست > تنظیمات بروید.
- شناسه پروژه را کپی کنید.

در محیط محلیتان، این مراحل را دنبال کنید:
- دایرکتوری فعلی را در پایانه به
issue-management/3-message-monitoringتغییر دهید. این فایل حاوی کد منبعی است که نیاز دارید. - ثابت رشتهای با نام
PROJECT_IDرا در فایلConfiguration.jsروی شناسه پروژه کپیشده تنظیم کنید. - ثابت JSON با نام
CHAT_CREDENTIALSرا در فایلConfiguration.jsروی محتوای فایل کلید خصوصی که قبلاً بارگیری کردهاید تنظیم کنید. - فایل
issue-management/2-app-home/.clasp.jsonرا در دایرکتوری کنونیتان کپی کنید. - فرمان زیر را اجرا کنید:
clasp push
امتحان کنید
در Google Chat، این مراحل را دنبال کنید:
- پیام مستقیمی با فرمان خط مورب
/createبه برنامه ارسال کنید. برنامه کادر گفتگویی را باز میکند. - عنوان را روی
Issue Title 3تنظیم کنید. - شرح را روی مشکل
Description 3تنظیم کنید. - روی ایجاد کردن کلیک کنید.
- در فضای جدیداً ایجادشده، چند پیام درباره مشکل ارسال کنید.
- پیامی با فرمان خط مورب
/closeو وضوحی مثلFixedارسال کنید.
در کنسول Google Cloud، این مراحل را دنبال کنید:
- به منو ☰ > Pub/Sub > اشتراکها بروید.
- اشتراک workspace-events-sub را انتخاب کنید.
- برگه پیامها را انتخاب کنید.
- روی Pull کلیک کنید. جدول پیامهای مربوط به آنچه را که به فضای جدیداً ایجادشده ارسال کردهاید نمایش میدهد.

در کنسول Apps Script، این مراحل را دنبال کنید:
- پروژهتان را انتخاب کنید.
- ویرایشگر را انتخاب کنید.
- فایل
WorkspaceEvent.gsرا انتخاب کنید. processSubscriptionرا در بخش اجرا انتخاب کنید.- روی
Runکلیک کنید. در گزارش اجرا میتوانید ببینید که پیامها پردازش شدهاند.

در کنسول Google Cloud، این مراحل را دنبال کنید:
- به منو ☰ > Pub/Sub > اشتراکها بروید.
- اشتراک workspace-events-sub را انتخاب کنید.
- برگه پیامها را انتخاب کنید.
- روی Pull کلیک کنید. جدول دیگر پیامهای مربوط به آنچه را که به فضای جدیداً ایجادشده ارسال کردهاید نمایش نمیدهد.

- در Google Chat، در فضایی که به مشکل سوم اختصاص داده شده است و با فرمان خط مورب
/createایجاد کردهاید، چند پیام دیگر ارسال کنید که درباره مشکل بحث میکنند.
در کنسول Google Cloud، این مراحل را دنبال کنید:
- به منو ☰ > Pub/Sub > اشتراکها بروید.
- اشتراک workspace-events-sub را انتخاب کنید.
- برگه پیامها را انتخاب کنید.
- روی Pull کلیک کنید. جدول پیامهای مربوط به آنچه را که به فضای تازه ایجادشده ارسال کردهاید نمایش نمیدهد.
۶. اختیاری: برنامه ۱: افزودن راهنمای فراگیری
مرور مفاهیم
پیامواره هوش مصنوعی زایا هنر ساختن دستورالعملها یا سؤالات برای هدایت مدل هوش مصنوعی زایا بهسمت نوع خاصی از برونداد مطلوب است. یک روش معمول این است که با افزودن قوانین و شرایط در پیاموارهها، پاسخها را محدود کنید. این کار میتواند به ایمن، مرتبط، سازگار، و مطابق با انتظارات بودن برونداد کمک کند.
بازبینی جریانها
پردازش اشتراکها (بهروزرسانی)

بازبینی کد منبع
پروژه 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
در محیط محلیتان، این مراحل را دنبال کنید:
- دایرکتوری فعلی را در پایانه به
issue-management/4-inclusivity-helpتغییر دهید. این فایل حاوی کد منبعی است که نیاز دارید. - فایل
issue-management/3-message-monitoring/.clasp.jsonرا در دایرکتوری کنونیتان کپی کنید. - فایل
issue-management/3-message-monitoring/Configuration.jsرا در فهرست راهنمای فعلیتان کپی کنید تا جایگزین فایل موجود شود. - فرمان زیر را اجرا کنید:
clasp push
امتحان کنید
در Google Chat، این مراحل را دنبال کنید:
- پیام مستقیمی با فرمان خط مورب
/createبه برنامه ارسال کنید. برنامه کادر گفتگویی را باز میکند. - عنوان را روی
Issue Title 4تنظیم کنید. - شرح را روی مشکل
Description 4تنظیم کنید. - روی ایجاد کردن کلیک کنید.
- در فضای جدیدی که ایجاد شده است،
It happened to me last week as wellرا ارسال کنید.
در کنسول Apps Script، این مراحل را دنبال کنید:
- پروژهتان را انتخاب کنید.
- ویرایشگر را انتخاب کنید.
- فایل
WorkspaceEvent.gsرا انتخاب کنید. processSubscriptionرا در بخش اجرا انتخاب کنید.- روی اجرا کلیک کنید. در گزارش اجرا میتوانید ببینید که پیامها پردازش شدهاند.
در Google Chat، این مراحل را دنبال کنید:
- توجه کنید که برنامه هیچ راهنماییای درباره فراگیری در فضای جدیداً ایجادشده ارسال نکرده است.
- در فضای جدیداً ایجادشده، پیام
I had to add myself from the master to fix itرا ارسال کنید.
در کنسول Apps Script، این مراحل را دنبال کنید:
- پروژهتان را انتخاب کنید.
- ویرایشگر را انتخاب کنید.
- فایل
WorkspaceEvent.gsرا انتخاب کنید. processSubscriptionرا در بخش اجرا انتخاب کنید.- روی اجرا کلیک کنید. در گزارش اجرا میتوانید ببینید که پیامها پردازش شدهاند. در Google Chat، برنامه پیام راهنمای فراگیری را در فضای جدیداً ایجادشده ارسال کرد.

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

بازبینی جریانها
غیرفعال کردن راهنمای فراگیر

بازبینی کد منبع
پروژه 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
در محیط محلیتان، این مراحل را دنبال کنید:
- دایرکتوری فعلی را در پایانه به
issue-management/5-disable-helpتغییر دهید. این فایل حاوی کد منبعی است که نیاز دارید. - فایل
issue-management/4-inclusivity-help/.clasp.jsonرا در دایرکتوری کنونیتان کپی کنید. - فایل
issue-management/4-inclusivity-help/Configuration.jsرا در فهرست راهنمای فعلیتان کپی کنید تا جایگزین فایل موجود شود. - فرمان زیر را اجرا کنید:
clasp push
امتحان کنید
غیرفعال کردن راهنما
- در Google Chat، در فضایی که به مشکل چهارم اختصاص داده شده است و با فرمان خط مورب
/createایجاد کردهاید، پیامI had to add myself from the master to fixرا ارسال کنید.
در کنسول Apps Script، این مراحل را دنبال کنید:
- پروژهتان را انتخاب کنید.
- ویرایشگر را انتخاب کنید.
- فایل
WorkspaceEvent.gsرا انتخاب کنید. processSubscriptionرا در بخش اجرا انتخاب کنید.- روی اجرا کلیک کنید. در گزارش اجرا میتوانید ببینید که پیامها پردازش شدهاند.
در Google Chat، این مراحل را دنبال کنید:
- توجه داشته باشید که برنامه پیامی با راهنمایی درباره فراگیر بودن به فضای اختصاصدادهشده به مشکل با ابزاره جانبی ارسال کرده است.
- برای غیرفعال کردن راهنمای فراگیر، روی ابزاره لوازم جانبی کلیک کنید.

بررسی غیرفعالسازی
- در Google Chat، در فضایی که به مشکل چهارم اختصاص داده شده و با فرمان خط مورب
/createایجاد کردهاید، پیامI had to add myself from the master to fixرا ارسال کنید.
در کنسول Apps Script، این مراحل را دنبال کنید:
- پروژهتان را انتخاب کنید.
- ویرایشگر را انتخاب کنید.
- فایل
WorkspaceEvent.gsرا انتخاب کنید. processSubscriptionرا در بخش اجرا انتخاب کنید.- روی اجرا کلیک کنید. در گزارش اجرا میتوانید ببینید که پیامها پردازش شدهاند. در Google Chat، برنامه پیامی با راهنمایی فراگیر به فضای اختصاصدادهشده به مشکل ارسال نکرد زیرا غیرفعال شده بود.

۸. برنامه ۲: ساختن
مرور مفاهیم
زمینهسازی هوش مصنوعی زایا
هدف از این کار، واقعیتر و قابلاعتمادتر کردن مدلهای هوش مصنوعی ازطریق متصل کردن آنها به منابع دانش قابلتأیید است. این تکنیک به جلوگیری از تولید اطلاعات ساختگی توسط هوش مصنوعی کمک میکند و میتواند پاسخها را ازنظر بافتار مرتبطتر و کمتر سوگیرانه کند.
زبان طبیعی
هر زبانی که انسانها برای ارتباطات روزمره بهصورت گفتاری یا نوشتاری استفاده میکنند، برخلاف زبانهای مصنوعی یا رایانهای.
فضای ذخیرهسازی ابری
Cloud Storage امکان ذخیرهسازی و بازیابی هر مقدار داده را در هر زمان در سراسر جهان فراهم میکند. میتوان از آن برای طیف وسیعی از سناریوها استفاده کرد، ازجمله ارائه محتوای وبسایت، ذخیره دادهها برای بایگانی و بازیابی پساز فاجعه، یا توزیع اشیاء داده بزرگ به کاربران ازطریق بارگیری مستقیم.
مخزن داده Dialogflow CX
Dialogflow CX با مخازن داده ادغام میشود که مجموعهای از وبسایتها و اسناد هستند که توسط عوامل مخزن داده برای یافتن پاسخ سؤالات کاربر نهایی از دادههای خاص استفاده میشوند. برای یک سؤال مشخص، عامل ذخیرهسازی داده پاسخی را از محتوای منبع دادهشده جستجو میکند و یافتهها را در یک پاسخ منسجم خلاصه میکند. همچنین پیوندهای پشتیبانی به منابع پاسخ ارائه میدهد تا کاربر نهایی بتواند اطلاعات بیشتری کسب کند.
بررسی معماری

این برنامه Google Chat با Dialogflow CX ساخته شده است و بهصورت زیر کار میکند:
- کاربری پیامی را در پیام مستقیم یا در فضا به برنامه ارسال میکند.
- برنامه، که یک عامل Dialogflow CX است و با پروژه Google Cloud مرتبط است، پیام را پردازش میکند.
- برنامه با یک ذخیرهسازی داده واقع در Cloud Storage ادغام میشود.
- برنامه پاسخی همگام، در پیام مستقیم یا در فضای اصلی، ارسال میکند.
مرور جریانها
پاسخ به سؤال
بازبینی کد منبع
تنها منبعی که نیاز دارید کد نیست، بلکه دادههایی است که برای زمینهسازی استفاده میکنید.
google-chat-overview.pdf
حاوی اطلاعات ساختارنیافته برنامههای Google Chat، نسخه چاپی صفحهای از وبسایت توسعهدهندگان Google Workspace.

بهروزرسانی پروژه Google Cloud
در کنسول Google Cloud، این مراحل را دنبال کنید:
- فعال کردن Dialogflow و Cloud Storage API.
- Vertex AI Agent Builder API را فعال کنید.
- روی منو ☰ > میاناهای برنامهسازی کاربردی و سرویسها > میاناهای برنامهسازی کاربردی و سرویسهای فعالشده کلیک کنید و سپس تأیید کنید که همه میاناهای برنامهسازی کاربردی فعال شدهاند.
.
ایجاد عامل مخزن داده Dialogflow CX
راهاندازی دادههای دانش
در کنسول Google Cloud، این مراحل را دنبال کنید:
- روی منو ☰ > فضای ذخیرهسازی ابری > دستهها کلیک کنید.

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

- سبد gchat-knowledge را انتخاب کنید.
- روی بارگذاری فایلها کلیک کنید.
- فایل google-chat-overview.pdf را از محیط محلیتان بارگیری و انتخاب کنید.

ایجاد برنامه
در کنسول Google Cloud، این مراحل را دنبال کنید:
- روی منو ☰ > Agent builder > برنامهها کلیک کنید.
- روی برنامه جدید کلیک کنید.
- نوع گپ را انتخاب کنید.

Company nameرا روی نام شرکتتان تنظیم کنید.Agent nameرا رویknowledgeتنظیم کنید.- روی ادامه کلیک کنید.

- روی ایجاد ذخیرهگاه داده جدید کلیک کنید.
- «فضای ذخیرهسازی ابری» را بهعنوان منبع داده انتخاب کنید.

- فایل را انتخاب کنید.
- روی مرور کردن کلیک کنید.
- فایل
google-chat-overview.pdfرا انتخاب کنید. - روی ادامه کلیک کنید.
- نام ذخیرهسازی داده را روی
gchat-knowledge-dsتنظیم کنید. - روی ایجاد کردن کلیک کنید.

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

- پساز چند دقیقه، روی منو ☰ > سازنده عامل > برنامهها کلیک کنید و ببینید که میتوانید برنامه را مشاهده کنید.

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

تکمیل و آزمایش برنامه
در کنسول Dialogflow CX، این مراحل را دنبال کنید:
- پروژه Google Cloud خود را انتخاب کنید.
- عامل دانش را انتخاب کنید.

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

- روی آزمایش کردن نماینده کلیک کنید.
What is Google Chat?را ارسال کنید. عامل با چیزی معنادار پاسخ میدهد.

ادغام برنامه Google Chat
در کنسول Dialogflow CX، این مراحل را دنبال کنید:
- پروژه Google Cloud خود را انتخاب کنید.
- در ردیف عامل دانش، روی
> کپی کردن نام کلیک کنید.

در کنسول Google Cloud، این مراحل را دنبال کنید:
- به پیکربندی Google Chat API بروید.
- در بخش تنظیمات اتصال، Dialogflow را انتخاب کنید.
- در بخش تنظیمات Dialogflow، Dialogflow CX را انتخاب کنید.
- نام منبع «عامل» یا «محیط» را روی نام عاملی که کپی کردید تنظیم کنید.
- دو فرمان خط مورب را بردارید.

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

۹. اختیاری: برنامه ۲: افزودن منابع
مرور مفاهیم
وبقلاب Dialogflow CX
سرویسی که منطق کسبوکار را میزبانی میکند یا سرویسهای دیگر را فراخوانی میکند. درطول جلسه Dialogflow CX، وبقلابها میتوانند به دادههای استخراجشده توسط پردازش زبان طبیعی تکیه کنند تا پاسخهای پویا تولید کنند، دادههای جمعآوریشده را اعتبارسنجی کنند، یا کنشهایی را در پسبک فعال کنند.
توابع ابری
Cloud Functions برای ساختن پساندهای بدون سرور، پردازش همزمان دادهها، و ایجاد برنامههای هوشمند عالی است. هیچ سروری برای تأمین، مدیریت، وصله، یا بهروزرسانی وجود ندارد. این پایگاههای داده بهطور خودکار مقیاسبندی میشوند، بسیار دردسترس هستند، و تحملپذیری خطا دارند.
مرور جریانها
پاسخ به سؤال (بهروزرسانی)

بازبینی کد منبع
تنها کد منبعی که نیاز دارید تابع تطبیق پاسخهای نماینده با پیامهای Google Chat است. بهعنوان وبقلاب استفاده میشود.
package.json
// The function relies on the Cloud Functions framework to run.
{
"name": "agent-response-adapter",
"version": "0.0.1",
"dependencies": {
"@google-cloud/functions-framework": "^3.0.0"
},
...
}
index.js
/**
* Handles all incoming requests.
*
* It takes a Dialogflow CX agent response as input and returns a
* valid Google Chat card message with both the text and source links
*/
functions.http('agent-response-adapter', (request, res>ponse) = {
// 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.fo>rEach((citation) = {
// Avoid duplications.
if (linkTitles.indexO<f(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 (linkTitl<es.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، این مراحل را دنبال کنید:
- میاناهای برنامهسازی کاربردی Cloud Build، Cloud Functions، Cloud Logging، Artifact Registry، و Cloud Run را فعال کنید.
- روی منو ☰ > میاناهای برنامهسازی کاربردی و سرویسها > میاناهای برنامهسازی کاربردی و سرویسهای فعالشده کلیک کنید و سپس تأیید کنید که میاناهای برنامهسازی کاربردی فعال شدهاند.
بهروزرسانی عامل مخزن داده Dialogflow CX
باید یک Cloud Function را مستقر کنید و وبقلاب Dialogflow CX را بهروز کنید تا درصورت امکان با چندین منبع راهاندازی شود.
برگرداندن چند منبع
بهطور پیشفرض، عامل ذخیرهسازی داده جدید حداکثر یک منبع را برمیگرداند، اما میتوانید آن را تغییر دهید تا منابع بیشتری برگرداند.
در کنسول Dialogflow CX، این مراحل را دنبال کنید:
- پروژه Google Cloud خود را انتخاب کنید.
- عامل دانش را انتخاب کنید.
- صفحه شروع را انتخاب کنید.
- ویرایش ذخیرهسازی دادهها را انتخاب کنید.
- در بخش پاسخهای نماینده، گزینههای پاسخ ذخیرهسازی داده را روی
5تنظیم کنید. - روی ذخیره کلیک کنید.

راهاندازی تابع ابری
در کنسول Google Cloud، این مراحل را دنبال کنید:
- روی منو ☰ > Cloud Functions کلیک کنید.
- روی ایجاد تابع کلیک کنید.
- در بخش موارد پایهای، نام را روی
function-1تنظیم کنید. - در بخش اصالتسنجی، دکمه رادیویی «اجازه دادن به فراخوانیهای اصالتسنجینشده» را انتخاب کنید.
- در بخش تنظیمات زمان اجرا، ساخت، اتصالها، و امنیت، حداکثر تعداد نمونهها را روی
3تنظیم کنید. - روی بعدی کلیک کنید.

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

- نشانی وب را کپی کنید و چند دقیقه منتظر بمانید تا تابع مستقر شود.

راهاندازی وبقلاب
باید عامل Dialogflow CX را پیکربندی کنید تا از وبقلابی استفاده کند که تابع جدیداً مستقرشده را راهاندازی میکند.
در کنسول Dialogflow CX، این مراحل را دنبال کنید:
- پروژه Google Cloud خود را انتخاب کنید.
- عامل دانش را انتخاب کنید.
- مدیریت > وبقلابها > ایجاد را انتخاب کنید.
- نام نمایشی را روی
Google Chat Response Adapterتنظیم کنید. - نشانی وب وبقلاب را روی نشانی وبی که قبلاً کپی کردهاید تنظیم کنید.
- روی ذخیره کلیک کنید.

- روی ساختن کلیک کنید.
- صفحه شروع را انتخاب کنید.
- ویرایش ذخیرهسازی دادهها را انتخاب کنید.
- در بخش تنظیمات Webhook، روی کلید فعال کردن Webhook کلیک کنید.
- Google Chat Response Adapter for Webhook (آداپتور پاسخ Google Chat برای وبقلاب) را انتخاب کنید.
- برچسب را روی
arbitrary_tagتنظیم کنید. - روی ذخیره کلیک کنید.

برنامه آزمایشی
- در Google Chat،
What is Google Chat?را در پیام مستقیم به برنامه Google Chat ارسال کنید. نماینده با پاسخی معنادار و کارتی حاوی منابع (درصورت وجود) پاسخ میدهد.

۱۰. برنامه ۳: ساختن
مرور مفاهیم
تعاملهای مکالمهای
این تعاملها شامل تبادل اطلاعات یا ایدهها بین دو یا چند نفر ازطریق زبان طبیعی است. این امر با میاناهای فنی که اغلب به تبادلهای بدون حالت، بسیار ساختاریافته، و غیرقابلتحمل متکی هستند در تضاد است.
مشخصات OpenAPI
این ابزار روشی هماهنگ برای انتقال اطلاعات در هر مرحله از چرخه حیات API ارائه میدهد. این زبان مشخصات برای میاناهای برنامهسازی کاربردی HTTP است که ساختار و نحو را بهگونهای تعریف میکند که به زبان برنامهنویسیای که میانای برنامهسازی کاربردی در آن ایجاد شده است وابسته نباشد. مشخصات میانای برنامهسازی کاربردی معمولاً در YAML یا JSON نوشته میشود که امکان همرسانی و مصرف آسان مشخصات را فراهم میکند.
عامل Dialogflow CX
واحد سازنده پایه برنامههای عامل. یک برنامه عامل معمولاً دارای چندین عامل است که هر عامل برای انجام وظایف خاصی تعریف شده است. دادههای نماینده به مدل زبانی بزرگ ارائه میشود تا اطلاعات لازم برای پاسخ دادن به سؤالات و اجرای تکالیف را داشته باشد. هر نماینده میتواند اطلاعات ارائه دهد، پُرسمانها را به سرویسهای خارجی ارسال کند، یا رسیدگی به مکالمه را به جریان Dialogflow CX یا نماینده دیگری واگذار کند تا به کارهای فرعی رسیدگی کند.
ابزار Dialogflow CX
از ابزارها برای متصل کردن برنامههای نماینده به سیستمهای خارجی استفاده میشود. این سیستمها میتوانند دانش برنامههای عامل را تقویت کنند و آنها را قادر سازند تا تکالیف پیچیده را بهطور مؤثر اجرا کنند.
بررسی معماری

این برنامه Google Chat با Dialogflow CX ساخته شده است و بهصورت زیر کار میکند:
- کاربری پیامی را در پیام مستقیم یا در فضا به برنامه ارسال میکند.
- برنامه، که یک عامل Dialogflow CX است و با پروژه Google Cloud مرتبط است، پیام را پردازش میکند.
- برنامه با عامل ادغام میشود.
- برنامه پاسخی همگام، در پیام مستقیم یا در فضای اصلی، ارسال میکند.
مرور جریانها
جمعآوری مرور

بازبینی کد منبع
تنها کد منبعی که نیاز دارید تابع شبیهسازی سرویس پسبک است که نماینده بهعنوان ابزار استفاده میکند.
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, res>ponse) = {
response.send(9;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
یک Cloud Function را مستقر میکنید تا سرویس زیرینهای را شبیهسازی کنید که برنامه عامل Dialogflow CX باید بهعنوان ابزار با آن ادغام شود و آن را فراخوانی کند.
در کنسول Google Cloud، این مراحل را دنبال کنید:
- روی منو ☰ > Cloud Functions کلیک کنید.
- روی ایجاد تابع کلیک کنید.
- در بخش موارد پایهای، نام را روی
function-2تنظیم کنید. - در بخش اصالتسنجی، دکمه رادیویی اجازه دادن به فراخوانیهای اصالتسنجینشده را انتخاب کنید.
- در بخش تنظیمات زمان اجرا، ساخت، اتصالها، و امنیت، حداکثر تعداد نمونهها را روی
3تنظیم کنید. - روی بعدی کلیک کنید.

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

- نشانی وب را کپی کنید و چند دقیقه منتظر بمانید تا تابع مستقر شود.
ایجاد برنامه عامل Dialogflow CX
ایجاد برنامه
در کنسول Google Cloud، این مراحل را دنبال کنید:
- روی منو ☰ > Agent builder > برنامهها کلیک کنید.
- روی برنامه جدید کلیک کنید.
- نماینده را انتخاب کنید.
- نام نمایشی را روی
Feedback Appتنظیم کنید. - روی ایجاد کردن کلیک کنید.

راهاندازی ابزار
در کنسول Google Cloud، این مراحل را دنبال کنید:
- روی منو ☰ > Agent builder > برنامهها کلیک کنید.
- عامل برنامه بازخورد را انتخاب کنید.
- روی ابزارها > + ایجاد کردن کلیک کنید.
- نام را روی
reviewتنظیم کنید. - OpenAPI را انتخاب کنید.
- شرح را روی مقدار زیر تنظیم کنید:
The tool takes the number of stars as a parameter of the store review method and saves it in a database for later use.
$URLرا در فایل service-openapi.yaml بارگیری و با نشانی وبی که قبلاً کپی کردهاید جایگزین کنید.YAML Schemaرا روی محتوای ویرایششده فایلservice-openapi.yamlتنظیم کنید.- روی ذخیره کلیک کنید.

راهاندازی عامل
در کنسول Google Cloud، این مراحل را دنبال کنید:
- روی منو ☰ > Agent builder > برنامهها کلیک کنید.
- عامل برنامه بازخورد را انتخاب کنید.
- عوامل > عامل زایا پیشفرض را انتخاب کنید.
- نام نماینده را روی
Feedback collectorتنظیم کنید. 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.
- دستورالعملها را روی مقدار زیر تنظیم کنید:
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.
- روی ذخیره کلیک کنید.

برنامه آزمایشی
در کنسول Google Cloud، این مراحل را دنبال کنید:
- روی منو ☰ > Agent builder > برنامهها کلیک کنید.
- عامل برنامه بازخورد را انتخاب کنید.
- به پیشنمایش نماینده بروید.
- در بخش نماینده، جمعآوریکننده بازخورد را انتخاب کنید.
- در بخش انتخاب مدل زایا، gemini-pro را انتخاب کنید.
- برای شروع، پیام
Hello!را ارسال کنید.

در کنسول Google Cloud، این مراحل را دنبال کنید:
- روی منو ☰ > Cloud Functions کلیک کنید.
- تابع-۲ > گزارشها را انتخاب کنید. برخیاز گزارشها Google-Dialogflow را بهعنوان تماسگیرنده نشان میدهند.

ادغام کردن برنامه Google Chat
در کنسول Dialogflow CX، این مراحل را دنبال کنید:
- پروژه Google Cloud خودتان را انتخاب کنید.
- روی منوِ کنشهای نماینده
Feedback Appکلیک کنید. - روی کپی کردن نام کلیک کنید.
در کنسول Google Cloud، این مراحل را دنبال کنید:
- به پیکربندی Google Chat API بروید.
- نام منبع عامل یا محیط را روی نام عاملی که قبلاً کپی کردهاید تنظیم کنید.

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

۱۱. مرتبسازی
حذف پروژه Google Cloud
برای جلوگیری از تحمیل هزینه به «حساب Google Cloud» شما بابت منابع استفادهشده در این codelab، توصیه میکنیم پروژه Google Cloud را حذف کنید.
در کنسول Google Cloud، این مراحل را دنبال کنید:
- روی منو ☰ > IAM و سرپرست > تنظیمات کلیک کنید.
- روی خاموش کردن کلیک کنید.
- شناسه پروژه را وارد کنید.
- روی درهرصورت خاموش شود کلیک کنید.

حذف پروژه Apps Script
توصیه میکنیم پروژه Apps Script خود را نیز حذف کنید.
در کنسول Apps Script، این مراحل را دنبال کنید:
- پروژهتان را انتخاب کنید.
- روی منوِ کنشها کلیک کنید.
- روی برداشتن کلیک کنید.

۱۲. تبریک میگوییم
تبریک! با Gemini برنامه Google Chat ساختید!
بعد چه باید کرد؟
در این codelab فقط موارد استفاده ساده را نشان دادیم، اما حوزههای توسعه زیادی وجود دارد که ممکن است بخواهید در برنامههای Google Chat خود درنظر بگیرید، مانند موارد زیر:
- با مدلهای دیگر «هوش مصنوعی زایا»، ازجمله مدلهای سفارشی، ادغام میشود.
- از انواع دیگر رسانه، مانند صدا، تصویر، و ویدیو پشتیبانی میکند.
- از چندحالته بودن استفاده کنید.
- به پنجرههای زمینه طولانیتر و حلقههای بازخورد تکیه کنید.
- برنامههای Google Chat آماده تولید را در بازارگان منتشر کنید. منابع زیادی برای توسعهدهندگان دردسترس است، ازجمله ویدیوهای YouTube، وبسایتهای اسناد، نمونههای کد، و آموزشهای گامبهگام.
- Google Chat را برای سازمانتان فعال کنید. ویژگی حالت وارد کردن شروع به کار را آسانتر میکند.
بیشتر بدانید
- وبسایت اسناد توسعهدهندگان برای Google Chat
- ادغام Google Chat و Dialogflow CX
- مخزن GitHub برای همه نمونههای Google Chat
- حالت وارد کردن Google Chat
- وبسایت مستندات توسعهدهندگان برای Apps Script
- کانال YouTube توسعهدهندگان Google Workspace
- مرکز توسعهدهندگان Google Cloud
- مدلهای هوشوارهای زایا
- مدلهای سفارشی هوش مصنوعی زایا
- پنجرههای بافت طولانی هوش مصنوعی زایا
- حلقه بازخورد هوش مصنوعی زایا


