১. শুরু করার আগে
জেমিনির সাথে গুগল চ্যাট অ্যাপগুলি কী কী?
জেমিনি সহ গুগল চ্যাট অ্যাপগুলি নিম্নলিখিত কাজ করে:
- আপনার পরিষেবা এবং রিসোর্সগুলিকে Google Chat-এ আনুন, যা ব্যবহারকারীদের কথোপকথন থেকে বেরিয়ে না গিয়ে তথ্য পেতে এবং পদক্ষেপ নিতে সাহায্য করে।
- জেনারেটিভ এআই মডেল জেমিনির সাথে একীভূত করুন, যাতে তারা আপনার কর্মপ্রবাহকে সুবিন্যস্ত করার জন্য নির্দিষ্ট সময়ে টেক্সট বা ছবির মতো ডেটা তৈরি বা অনুসন্ধান করতে পারে।
কেন গুগল চ্যাট অ্যাপগুলিকে জেমিনির সাথে একীভূত করবেন?
জেমিনির মতো জেনারেটিভ এআই মডেলগুলির সাধারণ ব্যবহারের ক্ষেত্রে নিম্নলিখিত বিভাগগুলি অন্তর্ভুক্ত রয়েছে:
- কন্টেন্ট তৈরি এবং বর্ধন । মার্কেটিং কপি তৈরি করুন, সোশ্যাল মিডিয়া পোস্ট তৈরি করুন, বাস্তবসম্মত ছবি তৈরি করুন, সঙ্গীত রচনা করুন, অথবা ভিডিও কন্টেন্ট তৈরিতে সহায়তা করুন।
- তথ্য অনুসন্ধান । একটি অসংগঠিত জ্ঞান ভিত্তি থেকে মূল অন্তর্দৃষ্টি বের করুন, দীর্ঘ লেখার সারসংক্ষেপ করুন, বিষয়বস্তু শ্রেণীবদ্ধ করুন, অথবা উন্নত নির্ভুলতা এবং গতির সাথে ভাষা অনুবাদ করুন।
- কথোপকথন । স্বাভাবিক, তথ্যবহুল এবং সৃজনশীল কথোপকথনে অংশগ্রহণ করুন।
গুগল চ্যাটের পরিচিত ইন্টারফেসের মধ্যে এই ক্ষমতাগুলি সরাসরি একীভূত করার ক্ষমতা তাদের ব্যবহারকারীদের অভিজ্ঞতা এবং উৎপাদনশীলতা উন্নত করতে চান এমন যে কারও জন্য একটি বিশাল সুযোগ।
পূর্বশর্ত
- অ্যাপস স্ক্রিপ্ট , গুগল ক্লাউড এবং নোড.জেএস সম্পর্কে প্রাথমিক জ্ঞান।
- ইভেন্ট হ্যান্ডলার , স্ল্যাশ কমান্ড , ডায়ালগ , কার্ড , বার্তা , অ্যাপ প্রমাণীকরণ এবং API সহ গুগল চ্যাট ধারণাগুলির প্রাথমিক জ্ঞান।
তুমি যা বানাও
এই কোডল্যাবে, আপনি পূর্ববর্তী বিভাগে প্রবর্তিত তিনটি ব্যবহারের ক্ষেত্রে জেমিনি দিয়ে তিনটি গুগল চ্যাট অ্যাপ তৈরি করবেন।
সমস্যা ব্যবস্থাপনা অ্যাপ (বিষয়বস্তু তৈরি এবং বর্ধিতকরণ)
এই অ্যাপটি নিম্নলিখিত কাজ করে:
- মৌলিক মিথস্ক্রিয়া, অ্যাপ হোম এবং অ্যাপ প্রমাণীকরণের মাধ্যমে তৈরি থেকে বন্ধ পর্যন্ত সমস্যাগুলি পরিচালনা করে।
- বার্তাগুলি পর্যবেক্ষণ করে এবং ইভেন্ট এবং আনুষঙ্গিক উইজেটগুলির সাথে অন্তর্ভুক্তিমূলক সহায়তা প্রদান করে।
আপনি নিম্নলিখিত কাজগুলি করার জন্য মিথুন ব্যবহার করেন:
- বার্তার ইতিহাস এবং সমস্যার বিবরণের উপর ভিত্তি করে সমস্যা প্রতিবেদন তৈরি করুন।
- গেটেড প্রম্পট সহ বার্তাগুলিতে অ-সমেত শব্দগুলিকে শ্রেণীবদ্ধ করুন।
ব্যবহৃত প্রধান প্রযুক্তিগুলি হল Vertex AI, Gemini, Apps Script, এবং Google Workspace API (Admin, Chat, Docs, Events)।



জ্ঞান অ্যাপ (তথ্য অনুসন্ধান)
এই অ্যাপটি প্রাকৃতিক ভাষায় প্রশ্নগুলি বুঝতে এবং উত্তর দিতে এবং অসংগঠিত ডেটা থেকে উৎস রেফারেন্স ফেরত দিতে জেমিনির উপর নির্ভর করে।
ব্যবহৃত প্রধান প্রযুক্তিগুলি হল ডায়ালগফ্লো সিএক্স ডেটা স্টোর এজেন্ট, ডায়ালগফ্লো সিএক্স ওয়েবহুক, গুগল ক্লাউড ফাংশন এবং জেমিনি।

প্রতিক্রিয়া অ্যাপ (কথোপকথন)
এই অ্যাপটি স্বাভাবিক ভাষায় কথোপকথনের সাথে পর্যালোচনা সংগ্রহ এবং সংরক্ষণের জন্য জেমিনির উপর নির্ভর করে।
ব্যবহৃত প্রধান প্রযুক্তিগুলি হল ডায়ালগফ্লো সিএক্স এজেন্ট, ডায়ালগফ্লো সিএক্স টুল, ওপেনএপিআই, গুগল ক্লাউড ফাংশন এবং জেমিনি।

তুমি যা শিখো
- ভার্টেক্স এআই-এর মাধ্যমে জেমিনির সাথে গুগল চ্যাট অ্যাপগুলিকে কীভাবে একীভূত করবেন।
- কীভাবে গুগল চ্যাট অ্যাপগুলিকে ডায়ালগফ্লো সিএক্স এজেন্টের সাথে একীভূত করবেন।
- গুগল চ্যাটের সর্বশেষ বৈশিষ্ট্যগুলি কীভাবে ব্যবহার করবেন: অ্যাপ হোম, গুগল চ্যাট ইভেন্ট এবং আনুষঙ্গিক উইজেট।
তোমার যা দরকার
- অ্যাপস স্ক্রিপ্ট দিয়ে গুগল চ্যাট অ্যাপ তৈরির দ্রুত সমাপ্তি। এই কোডল্যাবটি অ্যাপস স্ক্রিপ্ট এবং গুগল ক্লাউড প্রকল্পের উপর ভিত্তি করে তৈরি।
2. সেট আপ করুন
রিসোর্স শুরু করুন
এই বিভাগে, আপনি আপনার পছন্দের ওয়েব ব্রাউজার থেকে নিম্নলিখিত সংস্থানগুলি অ্যাক্সেস এবং কনফিগার করতে পারবেন।
অ্যাপস স্ক্রিপ্ট প্রকল্প
অ্যাপস স্ক্রিপ্ট কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- সেটিংসে ক্লিক করুন এবং তারপর Google Apps Script API সক্ষম করুন।

- আপনার প্রকল্পটি নির্বাচন করুন।
- প্রজেক্ট সেটিংসে ক্লিক করুন।
- এডিটর চেকবক্সে "
appsscript.json" ম্যানিফেস্ট ফাইল দেখান নির্বাচন করুন। - প্রকল্পটির নাম পরিবর্তন করে
Chat Apps Geminiরাখুন।

গুগল ক্লাউড প্রকল্প
গুগল ক্লাউড কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- আপনার প্রকল্পটি নির্বাচন করুন।
- মেনু ☰ > API এবং পরিষেবা > OAuth সম্মতি স্ক্রিন > অ্যাপ সম্পাদনা করুন এ ক্লিক করুন, এবং তারপর অ্যাপের নাম
Chat Apps Geminiএ সেট করুন।
- গুগল চ্যাট এপিআই কনফিগারেশনে নেভিগেট করুন, এবং তারপর অ্যাপের নাম এবং বর্ণনাকে
Chat Apps Geminiতে সেট করুন।

গুগল চ্যাট
গুগল চ্যাটে , এই পদক্ষেপগুলি অনুসরণ করুন:
- প্রয়োজনে, আপনার গুগল চ্যাট অ্যাপ দিয়ে চ্যাট শুরু করুন।
- এটি কাজ করছে কিনা তা নিশ্চিত করার জন্য
Helloএর মতো একটি বার্তা পাঠান।

স্থানীয়ভাবে সোর্স কোড এবং রিসোর্স ডাউনলোড করুন
- এই GitHub সংগ্রহস্থলটি ডাউনলোড করুন।
- আপনার পছন্দের ডেভেলপমেন্ট পরিবেশে,
apps-scriptডিরেক্টরিটি খুলুন এবং তারপর আপনার টার্মিনালে একই ডিরেক্টরিতে নেভিগেট করুন।

clasp ইনস্টল এবং কনফিগার করুন
আমরা স্থানীয় পরিবেশ থেকে অ্যাপস স্ক্রিপ্ট প্রকল্পে সোর্স কোডের সংস্করণগুলি সহজেই সম্পাদনা এবং পুশ করার জন্য clasp ব্যবহার করি।
- আপনার স্থানীয় পরিবেশে,
node,npm, এবংclaspএর সর্বশেষ সংস্করণগুলি ইনস্টল করুন ।
npm install -g @google/clasp
- আপনার অ্যাকাউন্ট দিয়ে লগ ইন করুন :
clasp login

সফল হলে, আপনার ওয়েব ব্রাউজারে একটি মৌলিক নিশ্চিতকরণ স্ক্রিন দেখতে পাবেন এবং আপনার ক্লায়েন্ট শংসাপত্র সহ .clasprc.json ফাইলটি আপডেট করা হবে। আপনি আপনার টার্মিনালে এটি কোথায় অবস্থিত তা খুঁজে পেতে পারেন।

৩. অ্যাপ ১: বিল্ড
ধারণাগুলি পর্যালোচনা করুন
ভার্টেক্স এআই
ভার্টেক্স এআই জেনারেটিভ এআই তৈরি এবং ব্যবহার করার জন্য আপনার যা কিছু প্রয়োজন তা অফার করে, যার মধ্যে রয়েছে এআই সলিউশন, এজেন্ট বিল্ডার, ১৩০ টিরও বেশি ফাউন্ডেশন মডেল এবং একটি ইউনিফাইড এআই প্ল্যাটফর্ম।

মিথুন রাশি
জেমিনি হল গুগলের একটি মাল্টিমডাল এলএলএম যা ভার্টেক্স এআই এর মাধ্যমে অ্যাক্সেসযোগ্য। এটি মানুষকে তাদের মানবিক সম্ভাবনা উন্মোচন করতে সাহায্য করে যাতে তারা তাদের কল্পনাশক্তি বৃদ্ধি করতে পারে, তাদের কৌতূহল প্রসারিত করতে পারে এবং তাদের উৎপাদনশীলতা বৃদ্ধি করতে পারে।
উন্নত চ্যাট পরিষেবা
অ্যাডভান্সড চ্যাট পরিষেবা আপনাকে অ্যাপস স্ক্রিপ্টে গুগল চ্যাট এপিআই ব্যবহার করতে দেয়। এটি স্ক্রিপ্টগুলিকে চ্যাট স্পেস খুঁজে পেতে, তৈরি করতে এবং পরিবর্তন করতে, স্পেসে সদস্যদের যোগ করতে বা সরাতে এবং টেক্সট, কার্ড, সংযুক্তি এবং প্রতিক্রিয়া সহ বার্তা পড়তে বা পোস্ট করতে দেয়।
স্থাপত্য পর্যালোচনা করুন

এই Google Chat অ্যাপটি Apps Script দিয়ে তৈরি। এটি নিম্নলিখিতভাবে কাজ করে:
- একজন ব্যবহারকারী অ্যাপে একটি বার্তা পাঠান, হয় সরাসরি বার্তায় অথবা একটি স্পেসে।
- অ্যাপস স্ক্রিপ্ট প্রকল্পে বাস্তবায়িত এবং গুগল ক্লাউড প্রকল্পের সাথে যুক্ত এই অ্যাপটি বার্তাটি প্রক্রিয়া করে।
- অ্যাপটি গুগল ডক্স এবং গুগল চ্যাট এপিআই-এর সাথে একীভূত হয়।
- অ্যাপটি স্ক্রিপ্ট বৈশিষ্ট্যে ডেটা ধরে রাখার জন্য প্রোপার্টি পরিষেবা ব্যবহার করে।
- অ্যাপটি সরাসরি বার্তায় অথবা মূল স্থানে একটি সমলয় প্রতিক্রিয়া পাঠায়।
পর্যালোচনা প্রবাহ
সমস্যা তৈরি করুন

নির্দিষ্ট স্থান থেকে সমস্যার সমাধান করুন

নির্দিষ্ট স্থান থেকে সমস্যাটি বন্ধ করুন

সোর্স কোড পর্যালোচনা করুন
অ্যাপস স্ক্রিপ্ট প্রকল্পে নিম্নলিখিত স্ক্রিপ্টগুলি রয়েছে:
-
Configuration: পরিবেশের উপর ভিত্তি করে সম্পাদনা করার জন্য ধ্রুবক। -
ChatApp: মেসেজ, কার্ড ক্লিক, স্ল্যাশ কমান্ড এবং ডায়ালগ সহ Google Chat ইন্টারঅ্যাকশন ইভেন্ট পরিচালনা করে। -
Storage: প্রপার্টি পরিষেবার উপর নির্ভরশীল ইউটিলিটি ফাংশন। -
ChatAppAuth: ইউটিলিটি ফাংশন যা গুগল চ্যাট অ্যাপ প্রমাণীকরণের উপর নির্ভর করে। -
Docs: গুগল ডক্সের উপর নির্ভরশীল ইউটিলিটি ফাংশন। -
VertexAi: ভার্টেক্স এআই-এর উপর নির্ভরশীল ইউটিলিটি ফাংশন।
এবং জেমিনি এবং চ্যাট স্পেস ইতিহাসের সাথে রিপোর্ট ডকুমেন্ট তৈরি করার সময় সক্রিয়ভাবে ব্যবহৃত অংশগুলি এখানে দেওয়া হল:
অ্যাপস্ক্রিপ্ট.জেসন
// 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",
...
]
কনফিগারেশন.জেএস
// 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;
}
ডক্স.জেএস
// The report generator function adds two sections: the first one is for the summary and the second one is for history.
function createReport(..., history, summary) {
...
body.appendParagraph("Summary").setHeading(DocumentApp.ParagraphHeading.HEADING1);
body.appendParagraph(summary);
body.appendParagraph("History").setHeading(DocumentApp.ParagraphHeading.HEADING1);
body.appendParagraph(history);
...
}
গুগল ক্লাউড প্রোজেক্ট আপডেট করুন
API গুলি সক্ষম করুন
- গুগল ক্লাউড কনসোলে , গুগল ডক্স , গুগল অ্যাডমিন এসডিকে এবং ভার্টেক্স এআই এপিআই সক্ষম করুন:
- মেনু ☰ > API এবং পরিষেবা > সক্রিয় API এবং পরিষেবাগুলিতে ক্লিক করুন এবং তারপরে নিশ্চিত করুন যে API গুলি সক্ষম করা আছে।
পরিষেবা অ্যাকাউন্ট শুরু করুন
গুগল ক্লাউড কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- মেনু ☰ > IAM & Admin > পরিষেবা অ্যাকাউন্ট > + পরিষেবা অ্যাকাউন্ট তৈরি করুন এ ক্লিক করুন।

- পরিষেবা অ্যাকাউন্টের নাম
chat-appএ সেট করুন। - পরিষেবা অ্যাকাউন্টের বিবরণ
Chat app authএ সেট করুন। - তৈরি করুন এবং চালিয়ে যান ক্লিক করুন।
- সম্পন্ন ক্লিক করুন। আপনাকে পরিষেবা অ্যাকাউন্ট পৃষ্ঠায় পুনঃনির্দেশিত করা হবে এবং আপনি আপনার তৈরি করা পরিষেবা অ্যাকাউন্টটি দেখতে পাবেন।

- নতুন তৈরি করা পরিষেবা অ্যাকাউন্টটি নির্বাচন করুন।
- কী ট্যাবটি নির্বাচন করুন।
- কী যোগ করুন ক্লিক করুন।
- নতুন কী তৈরি করুন ক্লিক করুন।
- JSON নির্বাচন করুন।
- তৈরি করুন ক্লিক করুন।

ডায়ালগটি বন্ধ হয়ে যায় এবং আপনার নতুন তৈরি পাবলিক/প্রাইভেট কী জোড়া স্বয়ংক্রিয়ভাবে আপনার স্থানীয় পরিবেশে JSON ফাইল হিসেবে ডাউনলোড হয়। আপনি যখন আপনার অ্যাপস স্ক্রিপ্ট প্রকল্পের সোর্স কোড সম্পাদনা করেন তখন আপনি এর সামগ্রীটি পরে ব্যবহার করেন।
Google Chat API কনফিগারেশন আপডেট করুন
গুগল ক্লাউড কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- একটি স্ল্যাশ কমান্ড যোগ করুন।
- নামটি
/createএ সেট করুন। - কমান্ড আইডি
1তে সেট করুন। - বর্ণনাকে
Create a new issueহিসেবে সেট করুন। - একটি ডায়ালগ খোলে চেকবক্সটি নির্বাচন করুন।
- আরেকটি স্ল্যাশ কমান্ড যোগ করুন।
- নাম
/closeএ সেট করুন। - কমান্ড আইডি
2তে সেট করুন। - বর্ণনাকে "
Close an issueএ সেট করুন। - সংরক্ষণ করুন ক্লিক করুন।

অ্যাপস স্ক্রিপ্ট প্রজেক্ট আপডেট করুন
- আপনার স্থানীয় টার্মিনালের বর্তমান ডিরেক্টরিটি
issue-management/1-baselineএ পরিবর্তন করুন। এতে সোর্স কোড রয়েছে। আপনার অ্যাপস স্ক্রিপ্ট প্রকল্পে সোর্স কোডটি পুশ করার আগে, আপনাকে কয়েকটি জিনিস কনফিগার করতে হবে।
সোর্স কোড কনফিগার করুন
-
Configuration.jsফাইলেCHAT_CREDENTIALSনামক JSON ধ্রুবকটিকে আপনার পূর্বে ডাউনলোড করা প্রাইভেট কী ফাইলের সামগ্রীতে সেট করুন।

- গুগল ক্লাউড কনসোলে , মেনু ☰ > IAM এবং অ্যাডমিন > সেটিংস এ ক্লিক করুন।
- প্রকল্পের আইডি কপি করুন।

-
Configuration.jsফাইলেPROJECT_IDনামের স্ট্রিং ধ্রুবকটিকে প্রজেক্ট আইডিতে সেট করুন।

clasp সেটিংস কনফিগার করুন
সোর্স কোডটিকে সঠিক অ্যাপস স্ক্রিপ্ট প্রজেক্টে পুশ করার জন্য clasp সেটিংস শুরু করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
- অ্যাপস স্ক্রিপ্ট কনসোলে , আপনার প্রকল্পটি নির্বাচন করুন।
- প্রকল্প সেটিংস নির্বাচন করুন।
- IDs এর অধীনে, Copy এ ক্লিক করুন।

- বর্তমান ডিরেক্টরিতে, একটি
.clasp.jsonফাইল তৈরি করুন। -
<your-script-id>কপি করা আইডি দিয়ে প্রতিস্থাপন করুন। - ফলাফলটি
.clasp.jsonফাইলে কপি করুন। -
.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.
চেষ্টা করে দেখুন
- গুগল চ্যাটে , অ্যাপে সরাসরি বার্তায়
Hello!পাঠান। অ্যাপটি উত্তর দেয় না, কিন্তু একটি বার্তা আসে যা কনফিগারেশনের অনুরোধ করে।

- কনফিগার ক্লিক করুন।
- আপনার গুগল অ্যাকাউন্ট নির্বাচন করুন।
- প্রমাণীকরণ করুন।
- অ্যাপটি পর্যালোচনা করুন এবং অ্যাক্সেসের অনুমতি দিন।

সফল হলে, আপনি ওয়েব পৃষ্ঠায় একটি মৌলিক নিশ্চিতকরণ স্ক্রিন দেখতে পাবেন এবং অ্যাপ থেকে আপনার মূল বার্তার একটি প্রকৃত প্রতিক্রিয়া দেখতে পাবেন।


- অ্যাপে আরেকটি সরাসরি বার্তা পাঠান, কিন্তু স্ল্যাশ কমান্ড
/createদিয়ে।

- ডায়ালগে, Title কে
Issue Title 1এ সেট করুন। - বর্ণনাকে ইস্যু
Description 1এ সেট করুন। - তৈরি করুন ক্লিক করুন।

অ্যাপটি নিম্নলিখিত কাজগুলি করে:
- ডায়ালগ বন্ধ করে।
- একই শিরোনামে নতুন তৈরি সংখ্যার জন্য নিবেদিত একটি স্থান তৈরি করে।
- নতুন তৈরি স্থানটিতে যোগদান করে।
- নতুন তৈরি হওয়া জায়গায় সমস্যার বর্ণনা সম্বলিত একটি বার্তা পাঠায়।
- নতুন তৈরি স্পেসের লিঙ্ক সহ আপনাকে সরাসরি একটি বার্তা পাঠায়।

- নতুন তৈরি করা জায়গায়, স্ল্যাশ কমান্ড
/closeএবং রেজোলিউশন সহ একটি বার্তা পাঠান যেমনNot reproducible।

অ্যাপটি নিম্নলিখিত কাজগুলি করে:
- গুগল ডক্সে একটি রিপোর্ট ডকুমেন্ট তৈরি করে।
- নতুন তৈরি রিপোর্ট ডকুমেন্টের লিঙ্ক সহ সমস্যাটির জন্য নিবেদিত স্থানে একটি বার্তা পাঠায়।

- রিপোর্ট ডকুমেন্টটি খুলুন। এতে মৌলিক তথ্য, ইতিহাস এবং একটি সারাংশ রয়েছে।

৪. ঐচ্ছিক: অ্যাপ ১: অ্যাপ হোম যোগ করুন
ধারণাগুলি পর্যালোচনা করুন
অ্যাপ হোম হল একটি কাস্টমাইজেবল কার্ড মেসেজ যা একটি চ্যাট অ্যাপ ব্যবহারকারীকে পাঠায় যখন ব্যবহারকারী চ্যাট অ্যাপের মাধ্যমে সরাসরি মেসেজ থেকে হোম ট্যাব অ্যাক্সেস করে। এটি সাধারণত অ্যাপ ডকুমেন্টেশন বা একটি ওভারভিউ প্রদর্শনের জন্য ব্যবহৃত হয়। প্রযুক্তিগতভাবে, এটি পরিচালনা করার জন্য একটি ডেডিকেটেড ইভেন্ট রয়েছে এবং এটি কার্ড মেসেজের মতো একই মূল নীতির উপর ভিত্তি করে।

পর্যালোচনা প্রবাহ
সমস্যাগুলি পরিচালনা করুন
সোর্স কোড পর্যালোচনা করুন
অ্যাপস স্ক্রিপ্ট প্রজেক্টটি সম্পাদনা করা প্রয়োজন।
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
}}]}};
}
গুগল ক্লাউড প্রোজেক্ট আপডেট করুন
গুগল ক্লাউড কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
আপনার স্থানীয় পরিবেশে, এই পদক্ষেপগুলি অনুসরণ করুন:
- আপনার টার্মিনালের বর্তমান ডিরেক্টরিটি
issue-management/2-app-homeএ পরিবর্তন করুন। এতে আপনার ব্যবহার করার জন্য প্রয়োজনীয় সোর্স কোড রয়েছে। - আপনার বর্তমান ডিরেক্টরিতে
issue-management/1-baseline/.clasp.jsonফাইলটি কপি করুন। - আপনার বর্তমান ডিরেক্টরিতে
issue-management/1-baseline/Configuration.jsফাইলটি অনুলিপি করুন যাতে এটি বিদ্যমান ডিরেক্টরিকে প্রতিস্থাপন করে। - নিম্নলিখিত কমান্ডটি চালান:
clasp push
চেষ্টা করে দেখুন
গুগল চ্যাটে , এই পদক্ষেপগুলি অনুসরণ করুন:
- অ্যাপটিতে
/createস্ল্যাশ কমান্ড দিয়ে সরাসরি একটি বার্তা পাঠান। অ্যাপটি একটি ডায়ালগ খুলবে। - শিরোনামকে
Issue Title 2তে সেট করুন। - বর্ণনাকে ইস্যু
Description 2তে সেট করুন। - তৈরি করুন ক্লিক করুন।

- Google Chat অ্যাপ ব্যবহার করে আপনার স্পেস থেকে হোম ট্যাবটি নির্বাচন করুন। আপনি যে সমস্যাগুলি তৈরি করেছেন তার বিবরণ দেখতে পাবেন।

৫. ঐচ্ছিক: অ্যাপ ১: স্থান পর্যবেক্ষণ যোগ করুন
ধারণাগুলি পর্যালোচনা করুন
পাব/সাব
পাব/সাব হল একটি অ্যাসিঙ্ক্রোনাস এবং স্কেলেবল মেসেজিং পরিষেবা যা সেই বার্তাগুলি প্রক্রিয়াকরণকারী পরিষেবাগুলি থেকে বার্তা তৈরিকারী পরিষেবাগুলিকে আলাদা করে। পাব/সাব আপনাকে ইভেন্ট প্রযোজক এবং ভোক্তাদের একটি সিস্টেম তৈরি করতে দেয়, যাকে বলা হয় প্রকাশক এবং গ্রাহক । প্রকাশকরা সিঙ্ক্রোনাস রিমোট প্রসিডিউর কল (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 সাবস্ক্রিপশনের জন্য বিজ্ঞপ্তির শেষ বিন্দু হিসেবে কাজ করে। ইভেন্টটিতে রিসোর্সে কী পরিবর্তন হয়েছে তার ডেটা থাকে।
- অ্যাপটি ইভেন্টটি ধারণকারী পাব/সাব বার্তাটি প্রক্রিয়া করে এবং প্রয়োজনে পদক্ষেপ নেয়।
পর্যালোচনা প্রবাহ
সমস্যা তৈরি করুন (আপডেট)

নির্দিষ্ট স্থান থেকে সমস্যা সমাধান করুন (আপডেট)

নির্দিষ্ট স্থান থেকে সমস্যাটি বন্ধ করুন (আপডেট)

সাবস্ক্রিপশন প্রক্রিয়া করুন

সোর্স কোড পর্যালোচনা করুন
অ্যাপস স্ক্রিপ্ট প্রজেক্টটি সম্পাদনা করা প্রয়োজন।
অ্যাপস্ক্রিপ্ট.জেসন
// Enables the Workspace Events service.
"enabledAdvancedServices": [
...
{
"userSymbol": "WorkspaceEvents",
"version": "v1",
"serviceId": "workspaceevents"
}
...
]
কনফিগারেশন.জেএস
// Adds two constants: the first one is the Pub/Sub topic ID and the second one
// is the Pub/Sub subscription ID to be used to retrieve Google Workspace events.
...
const GWS_PUBSUB_TOPIC_ID = `projects/${PROJECT_ID}/topics/workspace-events`;
const GWS_PUBSUB_SUBSCRIPTION_ID =
`projects/${PROJECT_ID}/subscriptions/workspace-events-sub`;
...
ChatApp.js সম্পর্কে
// Edits the function to delete the subscription at issue closure.
function processSlashCommand(event) {
...
if (event.message.slashCommand.commandId == CLOSE_COMMAND_ID
&& event.message.space.type !== "DM") {
...
deleteSubscription(issue.subscriptionId);
...
}
...
}
// Edits the function to create the subscription.
function createIssue(event) {
...
const subscriptionId = createSpaceSubscription(spaceUrl);
const createdIssue = saveCreatedIssue(..., subscriptionId);
...
}
// Edits the function to delete the subscription.
function onRemoveFromSpace(event) {
...
deleteSubscription(issue.subscriptionId);
...
}
স্টোরেজ.জেএস
// Edits the function to keep track of the subscription ID.
function saveCreatedIssue(..., spaceId, subscriptionId) {
...
appProperties.setProperty(spaceId, JSON.stringify({
...
subscriptionId: subscriptionId,
...
}));
...
}
ওয়ার্কস্পেসইভেন্ট.জেএস
/**
* Creates a new subscription to Google Workspace Events associated to a
* Google Chat space.
*
* The subscription scope includes message creation events and resources.
*
* @param {string} spaceId the space ID to create a subscription for
* @return the ID of the newly created subscription
*/
function createSpaceSubscription(spaceId) {
const operation = WorkspaceEvents.Subscriptions.create({
targetResource: `//chat.googleapis.com/${spaceId}`,
eventTypes: ["google.workspace.chat.message.v1.created"],
notificationEndpoint: { pubsubTopic: GWS_PUBSUB_TOPIC_ID },
payloadOptions: { includeResource: true },
});
return operation.response.name;
}
/**
* Processes events from subscription by using the Google Cloud PubSub API.
*
* It pulls and acknowledges each event.
*/
function processSubscription() {
const response = UrlFetchApp.fetch(
`https://pubsub.googleapis.com/v1/${GWS_PUBSUB_SUBSCRIPTION_ID}:pull`,
{
method: "POST",
contentType: "application/json",
headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() },
payload: JSON.stringify({ maxMessages: 10 })
}
);
const messages = JSON.parse(response.getContentText()).receivedMessages;
for (var messageIndex in messages) {
const message = messages[messageIndex];
const ceType = message.message.attributes["ce-type"];
const dataStr = Utilities.newBlob(Utilities.base64Decode(message.message.data))
.getDataAsString();
if (ceType === "google.workspace.events.subscription.v1.expirationReminder") {
// Renews subscription.
renewSubscription(JSON.parse(dataStr).subscription.name);
} else if (ceType === "google.workspace.chat.message.v1.created") {
// Processes the message text when it's sent in a space.
const chatMessage = JSON.parse(dataStr).message;
if (chatMessage.sender.type !== "BOT") {
console.log("Message was processed.");
}
}
// Acknowledges successful processing to avoid getting it again next time.
ackSubscription(message.ackId);
}
}
/**
* Acknowledges a subscription event by using the Google Cloud PubSub API.
*
* @param {string} ackId the ID of the event acknowledgment to send
*/
function ackSubscription(ackId) {
UrlFetchApp.fetch(
`https://pubsub.googleapis.com/v1/${GWS_PUBSUB_SUBSCRIPTION_ID}:acknowledge`,
{
method: "POST",
contentType: "application/json",
headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() },
payload: JSON.stringify({
ackIds: [ackId]
})
}
);
}
/**
* Renews a subscription to Google Workspace Events.
*
* The default time to live option is used.
*
* @param {string} subscriptionId the ID of the subscription to renew
*/
function renewSubscription(subscriptionId) {
WorkspaceEvents.Subscriptions.patch({ttl: '0s'}, subscriptionId);
}
/**
* Deletes a subscription to Google Workspace Events.
*
* @param {string} subscriptionId the ID of the subscription to delete
*/
function deleteSubscription(subscriptionId) {
WorkspaceEvents.Subscriptions.remove(subscriptionId);
}
গুগল ক্লাউড প্রোজেক্ট আপডেট করুন
API গুলি সক্ষম করুন
- গুগল ক্লাউড কনসোলে, গুগল ওয়ার্কস্পেস ইভেন্টস এবং পাবসব সক্ষম করুন।
- মেনু ☰ > API এবং পরিষেবা > সক্রিয় API এবং পরিষেবাগুলিতে ক্লিক করুন এবং তারপরে নিশ্চিত করুন যে উভয়ই সক্ষম।
সাবস্ক্রিপশন শুরু করুন
সমস্ত কর্মক্ষেত্রের ইভেন্ট পোস্ট করার জন্য আপনাকে একটি পাব/সাব বিষয় তৈরি করতে হবে এবং সাবস্ক্রাইব করতে হবে।
গুগল ক্লাউড কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- মেনু ☰ > পাব/সাব > বিষয়গুলিতে যান।
- বিষয় তৈরি করুন ক্লিক করুন।
- টপিক আইডি
workspace-eventsএ সেট করুন। - একটি ডিফল্ট সাবস্ক্রিপশন যোগ করুন চেকবক্সটি নির্বাচন করুন।
- তৈরি করুন ক্লিক করুন।

গুগল চ্যাট থেকে আপনার নতুন তৈরি করা বিষয়ে পাব/সাব বার্তা প্রকাশের অ্যাক্সেস দিতে, এই পদক্ষেপগুলি অনুসরণ করুন:
- তালিকা থেকে বিষয় নির্বাচন করুন।
- অনুমতি ট্যাবটি নির্বাচন করুন।
- নতুন প্রিন্সিপালে
chat-api-push@system.gserviceaccount.comযোগ করুন। - ভূমিকার জন্য পাব/সাব প্রকাশক নির্বাচন করুন।
- সংরক্ষণ করুন ক্লিক করুন।

অ্যাপস স্ক্রিপ্ট প্রজেক্ট আপডেট করুন
গুগল ক্লাউড কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- মেনু ☰ > IAM & Admin > সেটিংস এ যান।
- প্রকল্পের আইডি কপি করুন।

আপনার স্থানীয় পরিবেশে, এই পদক্ষেপগুলি অনুসরণ করুন:
- আপনার টার্মিনালের বর্তমান ডিরেক্টরিটি
issue-management/3-message-monitoringএ পরিবর্তন করুন। এতে আপনার প্রয়োজনীয় সোর্স কোড রয়েছে। -
Configuration.jsফাইলেPROJECT_IDনামের স্ট্রিং ধ্রুবকটি কপি করা প্রজেক্ট আইডিতে সেট করুন। -
Configuration.jsফাইলেCHAT_CREDENTIALSনামক JSON ধ্রুবকটিকে আপনার আগে ডাউনলোড করা প্রাইভেট কী ফাইলের সামগ্রীতে সেট করুন। - আপনার বর্তমান ডিরেক্টরিতে
issue-management/2-app-home/.clasp.jsonফাইলটি কপি করুন। - নিম্নলিখিত কমান্ডটি চালান:
clasp push
চেষ্টা করে দেখুন
গুগল চ্যাটে , এই পদক্ষেপগুলি অনুসরণ করুন:
- অ্যাপটিতে
/createস্ল্যাশ কমান্ড দিয়ে সরাসরি একটি বার্তা পাঠান। অ্যাপটি একটি ডায়ালগ খুলবে। - শিরোনামকে
Issue Title 3এ সেট করুন। - বর্ণনাকে ইস্যু
Description 3তে সেট করুন। - তৈরি করুন ক্লিক করুন।
- নতুন তৈরি স্থানে, সমস্যাটি নিয়ে আলোচনা করে কয়েকটি বার্তা পাঠান।
- স্ল্যাশ কমান্ড
/closeএবং রেজোলিউশন যেমনFixedসহ একটি বার্তা পাঠান।
গুগল ক্লাউড কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- মেনু ☰ > পাব/সাব > সাবস্ক্রিপশন এ যান।
- সাবস্ক্রিপশন workspace-events-sub নির্বাচন করুন।
- বার্তা ট্যাবটি নির্বাচন করুন।
- টানুন ক্লিক করুন। টেবিলটি নতুন তৈরি স্পেসে আপনি যা পাঠিয়েছেন তার সাথে সম্পর্কিত বার্তাগুলি প্রদর্শন করে।

অ্যাপস স্ক্রিপ্ট কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- আপনার প্রকল্পটি নির্বাচন করুন।
- সম্পাদক নির্বাচন করুন।
-
WorkspaceEvent.gsফাইলটি নির্বাচন করুন। - রান বিভাগে
processSubscriptionনির্বাচন করুন। -
Runক্লিক করুন। এক্সিকিউশন লগ থেকে আপনি দেখতে পাবেন যে বার্তাগুলি প্রক্রিয়া করা হয়েছে।

গুগল ক্লাউড কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- মেনু ☰ > পাব/সাব > সাবস্ক্রিপশন এ যান।
- সাবস্ক্রিপশন workspace-events-sub নির্বাচন করুন।
- বার্তা ট্যাবটি নির্বাচন করুন।
- টানুন ক্লিক করুন। টেবিলটি আর নতুন তৈরি স্পেসে আপনার পাঠানো বার্তাগুলির সাথে সম্পর্কিত বার্তাগুলি প্রদর্শন করে না।

- গুগল চ্যাটে ,
/createকমান্ড ব্যবহার করে তৈরি করা তৃতীয় ইস্যুর জন্য নিবেদিত স্থানে, সমস্যাটি নিয়ে আলোচনা করে আরও কয়েকটি বার্তা পাঠান।
গুগল ক্লাউড কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- মেনু ☰ > পাব/সাব > সাবস্ক্রিপশন এ যান।
- সাবস্ক্রিপশন workspace-events-sub নির্বাচন করুন।
- বার্তা ট্যাবটি নির্বাচন করুন।
- টানুন ক্লিক করুন। টেবিলটি নতুন তৈরি স্পেসে আপনি যা পাঠিয়েছেন তার সাথে সম্পর্কিত বার্তাগুলি প্রদর্শন করে না।
৬. ঐচ্ছিক: অ্যাপ ১: অন্তর্ভুক্তিমূলক সহায়তা যোগ করুন
ধারণাগুলি পর্যালোচনা করুন
জেনারেটিভ এআই প্রম্পটিং হলো একটি জেনারেটিভ এআই মডেলকে নির্দিষ্ট ধরণের কাঙ্ক্ষিত আউটপুটের দিকে পরিচালিত করার জন্য নির্দেশাবলী বা প্রশ্ন তৈরি করার শিল্প। একটি সাধারণ অভ্যাস হল প্রম্পটে নিয়ম এবং শর্তাবলী যোগ করে উত্তরগুলিকে গেট করা । এটি আউটপুটকে নিরাপদ, প্রাসঙ্গিক, সামঞ্জস্যপূর্ণ এবং প্রত্যাশার সাথে সামঞ্জস্যপূর্ণ করতে সাহায্য করতে পারে।
পর্যালোচনা প্রবাহ
সাবস্ক্রিপশন প্রক্রিয়া করুন (আপডেট)

সোর্স কোড পর্যালোচনা করুন
অ্যাপস স্ক্রিপ্ট প্রজেক্টটি সম্পাদনা করা প্রয়োজন।
ওয়ার্কস্পেসইভেন্ট.জেএস
// 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;
}
অ্যাপস স্ক্রিপ্ট প্রজেক্ট আপডেট করুন
আপনার স্থানীয় পরিবেশে, এই পদক্ষেপগুলি অনুসরণ করুন:
- আপনার টার্মিনালের বর্তমান ডিরেক্টরিটি
issue-management/4-inclusivity-helpএ পরিবর্তন করুন। এতে আপনার প্রয়োজনীয় সোর্স কোড রয়েছে। - আপনার বর্তমান ডিরেক্টরিতে
issue-management/3-message-monitoring/.clasp.jsonফাইলটি কপি করুন। - আপনার বর্তমান ডিরেক্টরিতে
issue-management/3-message-monitoring/Configuration.jsফাইলটি অনুলিপি করুন যাতে এটি বিদ্যমান ডিরেক্টরিকে প্রতিস্থাপন করে। - নিম্নলিখিত কমান্ডটি চালান:
clasp push
চেষ্টা করে দেখুন
গুগল চ্যাটে , এই পদক্ষেপগুলি অনুসরণ করুন:
- অ্যাপটিতে
/createস্ল্যাশ কমান্ড দিয়ে সরাসরি একটি বার্তা পাঠান। অ্যাপটি একটি ডায়ালগ খুলবে। - শিরোনামকে
Issue Title 4এ সেট করুন। - বর্ণনাকে ইস্যু
Description 4তে সেট করুন। - তৈরি করুন ক্লিক করুন।
- নতুন তৈরি করা জায়গায়,
It happened to me last week as well।
অ্যাপস স্ক্রিপ্ট কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- আপনার প্রকল্পটি নির্বাচন করুন।
- সম্পাদক নির্বাচন করুন।
-
WorkspaceEvent.gsফাইলটি নির্বাচন করুন। - রান বিভাগে
processSubscriptionনির্বাচন করুন। - Run এ ক্লিক করুন। এক্সিকিউশন লগ থেকে আপনি দেখতে পাবেন যে বার্তাগুলি প্রক্রিয়া করা হয়েছে।
গুগল চ্যাটে , এই পদক্ষেপগুলি অনুসরণ করুন:
- লক্ষ্য করুন যে অ্যাপটি নতুন তৈরি করা স্থানে কোনও অন্তর্ভুক্তিমূলক সহায়তা পাঠায়নি।
- নতুন তৈরি করা জায়গায়,
I had to add myself from the master to fix it।
অ্যাপস স্ক্রিপ্ট কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- আপনার প্রকল্পটি নির্বাচন করুন।
- সম্পাদক নির্বাচন করুন।
-
WorkspaceEvent.gsফাইলটি নির্বাচন করুন। - রান বিভাগে
processSubscriptionনির্বাচন করুন। - Run এ ক্লিক করুন। এক্সিকিউশন লগ থেকে আপনি দেখতে পাবেন যে বার্তাগুলি প্রক্রিয়া করা হয়েছে। Google Chat- এ, অ্যাপটি নতুন তৈরি স্পেসে একটি অন্তর্ভুক্তিমূলক সহায়তা বার্তা পাঠিয়েছে।

৭. ঐচ্ছিক: অ্যাপ ১: পছন্দ যোগ করুন
.
ধারণাগুলি পর্যালোচনা করুন
একটি অ্যাক্সেসরি উইজেট হল একটি বর্ডারলেস উইজেট যা একটি অ্যাপ দ্বারা প্রেরিত বার্তার নীচে সংযুক্ত থাকে। এটি সাধারণত বার্তার নির্দিষ্ট প্রেক্ষাপটে ব্যবহারকারীর দ্রুত প্রতিক্রিয়া সক্ষম করার জন্য ব্যবহৃত হয়। প্রযুক্তিগতভাবে, এটি কার্ড বোতামগুলির মতো একই মূল নীতির উপর ভিত্তি করে।

পর্যালোচনা প্রবাহ
অন্তর্ভুক্তিমূলক সহায়তা অক্ষম করুন

সোর্স কোড পর্যালোচনা করুন
অ্যাপস স্ক্রিপ্ট প্রজেক্টটি সম্পাদনা করা প্রয়োজন।
ChatApp.js সম্পর্কে
// Edits the function to handle the inclusivity help disablement action for a
// given space.
function onCardClick(event) {
...
if (event.action.actionMethodName === "disableInclusivityHelp") {
disableInclusivityHelp(event.common.parameters.spaceId);
}
}
স্টোরেজ.জেএস
// Edits the function to keep track of the inclusivity help setting.
function saveCreatedIssue(title, description, spaceId, subscriptionId) {
appProperties.setProperty(spaceId, JSON.stringify({
...
inclusivityHelp: true,
...
}));
...
}
/**
* Disables inclusivity help in a space.
*
* @param {string} spaceId the ID of dedicated space of the issue
*/
function disableInclusivityHelp(spaceId) {
var issue = JSON.parse(appProperties.getProperty(spaceId));
issue.inclusivityHelp = false;
appProperties.setProperty(spaceId, JSON.stringify(issue));
}
/**
* Checks whether the app should help with inclusivity in a given space.
*
* @param {string} spaceId the ID of dedicated space of the issue
* @return whether the app should help with inclusivity
*/
function shouldHelpWithInclusivity(spaceId) {
return JSON.parse(appProperties.getProperty(spaceId)).inclusivityHelp;
}
ওয়ার্কস্পেসইভেন্ট.জেএস
// 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
}]
}}
}]}}]
}, ...);
...
}
...
}
...
}
...
}
অ্যাপস স্ক্রিপ্ট প্রজেক্ট আপডেট করুন
আপনার স্থানীয় পরিবেশে, এই পদক্ষেপগুলি অনুসরণ করুন:
- আপনার টার্মিনালের বর্তমান ডিরেক্টরিটি
issue-management/5-disable-helpএ পরিবর্তন করুন। এতে আপনার প্রয়োজনীয় সোর্স কোড রয়েছে। - আপনার বর্তমান ডিরেক্টরিতে
issue-management/4-inclusivity-help/.clasp.jsonফাইলটি কপি করুন। - আপনার বর্তমান ডিরেক্টরিতে
issue-management/4-inclusivity-help/Configuration.jsফাইলটি অনুলিপি করুন যাতে এটি বিদ্যমান ডিরেক্টরিকে প্রতিস্থাপন করে। - নিম্নলিখিত কমান্ডটি চালান:
clasp push
চেষ্টা করে দেখুন
সাহায্য বন্ধ করুন
- গুগল চ্যাটে , চতুর্থ সংখ্যার জন্য নিবেদিত স্থান যা আপনি স্ল্যাশ কমান্ড
/createদিয়ে তৈরি করেছেন, সেই বার্তাটি পাঠানI had to add myself from the master to fix।
অ্যাপস স্ক্রিপ্ট কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- আপনার প্রকল্পটি নির্বাচন করুন।
- সম্পাদক নির্বাচন করুন।
-
WorkspaceEvent.gsফাইলটি নির্বাচন করুন। - রান বিভাগে
processSubscriptionনির্বাচন করুন। - Run এ ক্লিক করুন। এক্সিকিউশন লগ থেকে আপনি দেখতে পাবেন যে বার্তাগুলি প্রক্রিয়া করা হয়েছে।
গুগল চ্যাটে , এই পদক্ষেপগুলি অনুসরণ করুন:
- লক্ষ্য করুন যে অ্যাপটি একটি আনুষঙ্গিক উইজেট সহ সমস্যাটির জন্য নিবেদিত স্থানে অন্তর্ভুক্তিমূলক সহায়তা সহ একটি বার্তা পাঠিয়েছে।
- অন্তর্ভুক্তিমূলক সহায়তা নিষ্ক্রিয় করতে আনুষঙ্গিক উইজেটে ক্লিক করুন।

অক্ষমতা পরীক্ষা করুন
- গুগল চ্যাটে , চতুর্থ সংখ্যার জন্য নিবেদিত স্থান যা আপনি স্ল্যাশ কমান্ড
/createদিয়ে তৈরি করেছেন, সেই বার্তাটি পাঠানI had to add myself from the master to fix।
অ্যাপস স্ক্রিপ্ট কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- আপনার প্রকল্পটি নির্বাচন করুন।
- সম্পাদক নির্বাচন করুন।
-
WorkspaceEvent.gsফাইলটি নির্বাচন করুন। - রান বিভাগে
processSubscriptionনির্বাচন করুন। - Run এ ক্লিক করুন। এক্সিকিউশন লগ থেকে আপনি দেখতে পাবেন যে বার্তাগুলি প্রক্রিয়া করা হয়েছে। Google Chat- এ, অ্যাপটি সমস্যাটির জন্য নিবেদিত স্থানটিতে অন্তর্ভুক্তিমূলক সহায়তা সহ কোনও বার্তা পাঠায়নি কারণ এটি অক্ষম ছিল।

৮. অ্যাপ ২: বিল্ড
ধারণাগুলি পর্যালোচনা করুন
জেনারেশন এআই গ্রাউন্ডিং
এটি AI মডেলগুলিকে জ্ঞানের যাচাইযোগ্য উৎসের সাথে সংযুক্ত করে আরও বাস্তবসম্মত এবং নির্ভরযোগ্য করে তোলার বিষয়ে। এই কৌশলটি AI কে তথ্য উদ্ভাবন থেকে বিরত রাখতে সাহায্য করে এবং প্রতিক্রিয়াগুলিকে প্রাসঙ্গিকভাবে প্রাসঙ্গিক এবং কম পক্ষপাতদুষ্ট করতে সাহায্য করতে পারে।
স্বাভাবিক ভাষা
কৃত্রিম বা কম্পিউটার-ভিত্তিক ভাষার বিপরীতে, দৈনন্দিন যোগাযোগের জন্য মানুষের দ্বারা কথিত বা লিখিত যেকোনো ভাষা।
ক্লাউড স্টোরেজ
ক্লাউড স্টোরেজ বিশ্বব্যাপী যেকোনো সময় যেকোনো পরিমাণ ডেটা সংরক্ষণ এবং পুনরুদ্ধারের অনুমতি দেয়। এটি বিভিন্ন পরিস্থিতিতে ব্যবহার করা যেতে পারে, যার মধ্যে রয়েছে ওয়েবসাইটের বিষয়বস্তু পরিবেশন করা, আর্কাইভাল এবং দুর্যোগ পুনরুদ্ধারের জন্য ডেটা সংরক্ষণ করা, অথবা সরাসরি ডাউনলোডের মাধ্যমে ব্যবহারকারীদের কাছে বৃহৎ ডেটা অবজেক্ট বিতরণ করা।
ডায়ালগফ্লো সিএক্স ডেটা স্টোর
ডায়ালগফ্লো সিএক্স ডেটা স্টোরের সাথে একীভূত হয় যা ওয়েবসাইট এবং ডকুমেন্টের সংগ্রহ যা ডেটা স্টোর এজেন্টরা নির্দিষ্ট ডেটা থেকে ব্যবহারকারীর প্রশ্নের উত্তর খুঁজে পেতে ব্যবহার করে। একটি নির্দিষ্ট প্রশ্নের জন্য, ডেটা স্টোর এজেন্ট প্রদত্ত উৎস সামগ্রী থেকে একটি উত্তর অনুসন্ধান করে এবং ফলাফলগুলিকে একটি সুসংগত প্রতিক্রিয়ায় সারসংক্ষেপ করে। এটি শেষ ব্যবহারকারীকে আরও জানতে প্রতিক্রিয়ার উৎসগুলির সহায়ক লিঙ্কও প্রদান করে।
স্থাপত্য পর্যালোচনা করুন

এই গুগল চ্যাট অ্যাপটি ডায়ালগফ্লো সিএক্স দিয়ে তৈরি এবং নিম্নলিখিতভাবে কাজ করে:
- একজন ব্যবহারকারী অ্যাপে একটি বার্তা পাঠান, হয় সরাসরি বার্তায় অথবা একটি স্পেসে।
- অ্যাপটি, যা একটি ডায়ালগফ্লো সিএক্স এজেন্ট এবং একটি গুগল ক্লাউড প্রকল্পের সাথে যুক্ত, বার্তাটি প্রক্রিয়া করে।
- অ্যাপটি ক্লাউড স্টোরেজে অবস্থিত একটি ডেটা স্টোরের সাথে একীভূত হয়।
- অ্যাপটি সরাসরি বার্তায় অথবা মূল স্থানে একটি সমলয় প্রতিক্রিয়া পাঠায়।
পর্যালোচনা প্রবাহ
প্রশ্নের উত্তর দিন
সোর্স কোড পর্যালোচনা করুন
আপনার কেবলমাত্র কোডের প্রয়োজন নেই, বরং গ্রাউন্ডিংয়ের জন্য ব্যবহৃত ডেটা।
গুগল-চ্যাট-ওভারভিউ.পিডিএফ
এতে Google Workspace ডেভেলপার ওয়েবসাইটের একটি পৃষ্ঠার মুদ্রিত সংস্করণ, Google Chat অ্যাপের অসংগঠিত তথ্য রয়েছে।

গুগল ক্লাউড প্রোজেক্ট আপডেট করুন
গুগল ক্লাউড কনসোলে, এই পদক্ষেপগুলি অনুসরণ করুন:
- Dialogflow এবং Cloud Storage API গুলি সক্ষম করুন।
- Vertex AI Agent Builder API সক্রিয় করুন।
- মেনু ☰ > API এবং পরিষেবা > সক্রিয় API এবং পরিষেবাগুলিতে ক্লিক করুন এবং তারপরে নিশ্চিত করুন যে সমস্ত API সক্রিয় আছে।
.
Dialogflow CX ডেটা স্টোর এজেন্ট তৈরি করুন
জ্ঞানের তথ্য শুরু করুন
গুগল ক্লাউড কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- মেনু ☰ > ক্লাউড স্টোরেজ > বাকেটস এ ক্লিক করুন।

- তৈরি করুন ক্লিক করুন।
- নামটি
gchat-knowledgeএ সেট করুন। - তৈরি করুন ক্লিক করুন।
![6b38c6d4d2c41bba.png - [অনলাইন].](https://codelabs.developers.google.com/static/codelabs/chat-apps-gemini/img/6b38c6d4d2c41bba.png?hl=bn)
- gchat-knowledge বাকেটটি নির্বাচন করুন।
- ফাইল আপলোড করুন এ ক্লিক করুন।
- আপনার স্থানীয় পরিবেশ থেকে google-chat-overview.pdf ফাইলটি ডাউনলোড করুন এবং নির্বাচন করুন।

অ্যাপ তৈরি করুন
গুগল ক্লাউড কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- মেনু ☰ > এজেন্ট বিল্ডার > অ্যাপস এ ক্লিক করুন।
- নতুন অ্যাপে ক্লিক করুন।
- চ্যাটের ধরণটি নির্বাচন করুন।

- আপনার কোম্পানির নামের সাথে
Company nameসেট করুন। -
Agent nameknowledgeএ সেট করুন। - চালিয়ে যান ক্লিক করুন।

- নতুন ডেটা স্টোর তৈরি করুন ক্লিক করুন।
- ডেটা উৎস হিসেবে ক্লাউড স্টোরেজ নির্বাচন করুন।

- ফাইল নির্বাচন করুন।
- ব্রাউজ করুন এ ক্লিক করুন।
-
google-chat-overview.pdfফাইলটি নির্বাচন করুন। - চালিয়ে যান ক্লিক করুন।
- ডেটা স্টোরের নাম
gchat-knowledge-dsএ সেট করুন। - তৈরি করুন ক্লিক করুন।

- টেবিলে gchat-knowledge-ds ডেটা স্টোর নির্বাচন করুন।
- তৈরি করুন ক্লিক করুন।

- কয়েক মিনিট পর, মেনু ☰ > এজেন্ট বিল্ডার > অ্যাপস-এ ক্লিক করুন এবং লক্ষ্য করুন যে আপনি অ্যাপটি দেখতে পাচ্ছেন।

- মেনু ☰ > এজেন্ট বিল্ডার > ডেটা স্টোরে ক্লিক করুন।
- gchat-knowledge-ds ডেটা স্টোরে ক্লিক করুন। ডকুমেন্টের সংখ্যা
1, যা নির্দেশ করে যে এটি প্রস্তুত।

অ্যাপটি সম্পূর্ণ করুন এবং পরীক্ষা করুন
Dialogflow CX কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- আপনার গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন।
- নলেজ এজেন্ট নির্বাচন করুন।

- এজেন্ট সেটিংস > জেনারেটিভ এআই > জেনারেটিভ এজেন্ট নির্বাচন করুন।
- মডেলটি টেক্সট বাইসন থেকে জেমিনি প্রো তে স্যুইচ করুন।
- সংরক্ষণ করুন ক্লিক করুন।

- টেস্ট এজেন্ট ক্লিক করুন।
- পাঠান
What is Google Chat?। এজেন্ট অর্থপূর্ণ কিছু দিয়ে উত্তর দেয়।

গুগল চ্যাট অ্যাপ ইন্টিগ্রেট করুন
Dialogflow CX কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- আপনার গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন।
- নলেজ এজেন্টের সারিতে, ক্লিক করুন
> নাম কপি করুন ।

গুগল ক্লাউড কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- Google Chat API কনফিগারেশনে যান।
- সংযোগ সেটিংসের অধীনে, ডায়ালগফ্লো নির্বাচন করুন।
- Dialogflow সেটিংস এর অধীনে, Dialogflow CX নির্বাচন করুন।
- আপনার কপি করা এজেন্টের নামের সাথে এজেন্ট বা পরিবেশ রিসোর্সের নাম সেট করুন।
- দুটি স্ল্যাশ কমান্ড মুছে ফেলুন।

- গুগল চ্যাটে , গুগল চ্যাট অ্যাপে সরাসরি বার্তায়
What is Google Chat?পাঠান। এজেন্ট অর্থপূর্ণ কিছু দিয়ে সাড়া দেয়।

৯. ঐচ্ছিক: অ্যাপ ২: উৎস যোগ করুন
ধারণাগুলি পর্যালোচনা করুন
ডায়ালগফ্লো সিএক্স ওয়েবহুক
একটি পরিষেবা যা ব্যবসায়িক লজিক হোস্ট করে অথবা অন্যান্য পরিষেবা কল করে। একটি Dialogflow CX সেশনের সময়, ওয়েবহুকগুলি প্রাকৃতিক ভাষা প্রক্রিয়াকরণের মাধ্যমে নিষ্কাশিত ডেটার উপর নির্ভর করে গতিশীল প্রতিক্রিয়া তৈরি করতে, সংগৃহীত ডেটা যাচাই করতে বা ব্যাকএন্ডে অ্যাকশন ট্রিগার করতে পারে।
ক্লাউড ফাংশন
ক্লাউড ফাংশনগুলি সার্ভারলেস ব্যাকএন্ড তৈরি, রিয়েল-টাইম ডেটা প্রসেসিং এবং বুদ্ধিমান অ্যাপ তৈরির জন্য দুর্দান্ত। প্রোভিশন, ম্যানেজমেন্ট, প্যাচ বা আপডেট করার জন্য কোনও সার্ভার নেই। এগুলি স্বয়ংক্রিয়ভাবে স্কেল হয় এবং অত্যন্ত উপলব্ধ এবং ত্রুটি-সহনশীল।
পর্যালোচনা প্রবাহ
প্রশ্নের উত্তর দিন (আপডেট)

সোর্স কোড পর্যালোচনা করুন
আপনার একমাত্র সোর্স কোডটি প্রয়োজন যা হল গুগল চ্যাট বার্তাগুলিতে এজেন্ট প্রতিক্রিয়াগুলিকে অভিযোজিত করার ফাংশন। এটি একটি ওয়েবহুক হিসাবে ব্যবহৃত হয়।
প্যাকেজ.জেসন
// 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"
},
...
}
ইনডেক্স.জেএস
/**
* 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
}}]
}]}
}]
}}]
}});
});
গুগল ক্লাউড প্রোজেক্ট আপডেট করুন
গুগল ক্লাউড কনসোলে, এই পদক্ষেপগুলি অনুসরণ করুন:
- ক্লাউড বিল্ড, ক্লাউড ফাংশন, ক্লাউড লগিং, আর্টিফ্যাক্ট রেজিস্ট্রি এবং ক্লাউড রান API সক্ষম করুন।
- মেনু ☰ > API এবং পরিষেবা > সক্রিয় API এবং পরিষেবাগুলিতে ক্লিক করুন এবং তারপরে নিশ্চিত করুন যে API গুলি সক্রিয় আছে।
Dialogflow CX ডেটা স্টোর এজেন্ট আপডেট করুন
সম্ভব হলে একাধিক উৎস ব্যবহার করে এটি চালু করার জন্য আপনাকে একটি ক্লাউড ফাংশন স্থাপন করতে হবে এবং Dialogflow CX ওয়েবহুক আপডেট করতে হবে।
একাধিক উৎস ফেরত দিন
ডিফল্টরূপে, একটি নতুন ডেটা স্টোর এজেন্ট সর্বাধিক একটি উৎস প্রদান করে, তবে আপনি আরও বেশি উৎস পরিবর্তন করতে পারেন।
Dialogflow CX কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- আপনার গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন।
- নলেজ এজেন্ট নির্বাচন করুন।
- শুরু পৃষ্ঠা নির্বাচন করুন।
- ডেটা স্টোর সম্পাদনা করুন নির্বাচন করুন।
- এজেন্ট রেসপন্স বিভাগের অধীনে, ডেটা স্টোর রেসপন্স অপশনগুলিকে
5এ সেট করুন। - সংরক্ষণ করুন ক্লিক করুন।

ক্লাউড ফাংশন শুরু করুন
গুগল ক্লাউড কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:
- মেনু ☰ > ক্লাউড ফাংশন ক্লিক করুন।
- Create function এ ক্লিক করুন।
- Basics এর অধীনে, নামটি
function-1এ সেট করুন। - প্রমাণীকরণের অধীনে, অপ্রমাণিত আহ্বানগুলিকে অনুমতি দিন রেডিও বোতামটি নির্বাচন করুন।
- রানটাইম, বিল্ড, সংযোগ এবং সুরক্ষা সেটিংস এর অধীনে, সর্বাধিক উদাহরণের সংখ্যা
3এ সেট করুন। - পরবর্তী ক্লিক করুন।

- এন্ট্রি পয়েন্টকে
agent-response-adapterএ সেট করুন। - Replace the default content with the files package.json and index.js .
- Click Deploy .

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

Initiate webhook
You need to configure the Dialogflow CX agent to use a webhook that triggers the newly deployed function.
In the Dialogflow CX console , follow these steps:
- Select your Google Cloud project.
- Select the knowledge agent.
- Select Manage > Webhooks > Create .
- Set Display name to
Google Chat Response Adapter. - Set Webhook URL to the URL that you copied previously.
- সংরক্ষণ করুন ক্লিক করুন।

- Click Build .
- Select Start page .
- Select Edit data stores .
- Under Webhook settings , click the Enable webhook toggle.
- Select Google Chat Response Adapter for Webhook .
- Set tag to
arbitrary_tag. - সংরক্ষণ করুন ক্লিক করুন।

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

10. App 3: Build
Review concepts
Conversational interactions
They are the back-and-forth exchanges of information or ideas between two or more people through natural language. This contrasts to technical interfaces that often rely on stateless, highly structured, and intolerant exchanges.
OpenAPI Specification
It provides a consistent means to carry information through each stage of the API lifecycle. It is a specification language for HTTP APIs that defines structure and syntax in a way that is not wedded to the programming language the API is created in. API specifications are typically written in YAML or JSON, allowing for easy sharing and consumption of the specification.
Dialogflow CX agent
The basic building block of agent apps . An agent app typically has many agents , where each agent is defined to handle specific tasks. The agent data is provided to the LLM, so it has the information it needs to answer questions and execute tasks. Each agent can provide information, send queries to external services, or defer conversation handling to a Dialogflow CX flow or another agent to handle sub-tasks.
Dialogflow CX tool
Tools are used to connect agent apps to external systems. These systems can augment the knowledge of agent apps and empower them to execute complex tasks efficiently.
Review architecture

This Google Chat app is built with Dialogflow CX and works as follows:
- A user sends a message to the app, either in a direct message or in a space.
- The app, which is a Dialogflow CX agent and is associated with a Google Cloud project, processes the message.
- The app integrates with an agent.
- The app sends a synchronous response, either in a direct message or in the original space.
Review flows
Collect review

Review source code
The only source code that you need is the function to mock the backend service that the agent uses as a tool.
package.json
// The function relies on the Cloud Functions framework to run.
{
"name": "feedback-app-backend",
"version": "0.0.1",
"dependencies": {
"@google-cloud/functions-framework": "^3.0.0"
},
...
}
index.js
/**
* Handles all incoming requests.
*
* It always returns OK in plain text.
*/
functions.http('feedback-app-backend', (request, response) => {
response.send('OK');
});
service-openapi.yaml
// Defines the backend service structure and how to request it.
openapi: 3.1.0
info:
title: Review Store
license:
name: Apache 2.0
identifier: Apache-2.0
version: 0.0.1
servers:
- url: https://us-central1-project-0.cloudfunctions.net
paths:
/store-review:
post:
operationId: storeReview
summary: Store a new review
requestBody:
content:
application/json:
schema:
type: object
properties:
stars:
type: integer
format: int64
responses:
'200':
description: success
content:
application/json:
schema:
type: string
Initiate backend service mock
You deploy a Cloud Function to simulate a backend service that the Dialogflow CX agent app needs to integrate and call as a tool.
In the Google Cloud console , follow these steps:
- Click Menu ☰ > Cloud Functions .
- Click Create function .
- Under Basics , set name to
function-2. - Under Authentication , select the Allow unauthenticated invocations radio button.
- Under Runtime, build, connections and security settings , set Maximum number of instances to
3. - Click Next .

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

- Copy the URL while you wait a couple minutes for the function to deploy.
Create Dialogflow CX agent app
Create app
In the Google Cloud console , follow these steps:
- Click Menu ☰ > Agent builder > Apps .
- Click New app .
- Select Agent .
- Set Display name to
Feedback App. - Click Create .

Initiate tool
In the Google Cloud console , follow these steps:
- Click Menu ☰ > Agent builder > Apps .
- Select the Feedback App agent.
- Click Tools > + Create .
- Set Name to
review. - Select OpenAPI .
- Set description to the following value:
The tool takes the number of stars as a parameter of the store review method and saves it in a database for later use.
- Download and replace
$URLin the file service-openapi.yaml with the URL that you copied previously. - Set
YAML Schemato the edited content of theservice-openapi.yamlfile. - সংরক্ষণ করুন ক্লিক করুন।

Initiate agent
In the Google Cloud console , follow these steps:
- Click Menu ☰ > Agent builder > Apps .
- Select the Feedback App agent.
- Select Agents > Default Generative Agent .
- Set Agent name to
Feedback collector. - Set
goalto the following value:
You are an agent that collects reviews from Google Chat app developers. A review may be between 0 and 5 stars. The more stars, the more positive the review.
- Set instructions to the following value:
If the developer didn't provide the number of stars, ask for the number of stars.
After the developer provides the number of stars of the review, confirm the number with the developer and use ${TOOL: review} to store the review with the number of stars.
If ${TOOL: review} fails, apologize and ask to try again later. Otherwise, thank the developer for the review.
- সংরক্ষণ করুন ক্লিক করুন।

Test app
In the Google Cloud console , follow these steps:
- Click Menu ☰ > Agent builder > Apps .
- Select the Feedback App agent.
- Go to Preview agent .
- Under Agent , select Feedback collector .
- Under Select generative model , select gemini-pro .
- Send the message
Hello!to start.

In the Google Cloud console , follow these steps:
- Click Menu ☰ > Cloud Functions .
- Select function-2 > Logs . Some logs show Google-Dialogflow as caller.

Integrate Google Chat app
In the Dialogflow CX console , follow these steps:
- Select your Google Cloud project.
- Click the action menu of the
Feedback Appagent. - Click Copy name .
In the Google Cloud console , follow these steps:
- Go to the Google Chat API configuration.
- Set Agent or Environment resource name to the agent name that you copied previously.

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

11. Clean up
Delete Google Cloud project
To avoid incurring charges to your Google Cloud Account for the resources used in this codelab, we recommend that you delete the Google Cloud project.
In the Google Cloud console , follow these steps:
- Click Menu ☰ > IAM & Admin > Settings .
- Click Shut down .
- Enter the project ID.
- Click Shut down anyway .

Delete Apps Script project
We recommend that you delete your Apps Script project, too.
In the Apps Script console , follow these steps:
- Select your project.
- Click the action menu.
- Click Remove .

১২. অভিনন্দন
Congratulations! You built Google Chat apps with Gemini!
এরপর কী?
We only showcased simple use cases in this codelab, but there are plenty of expansion areas that you might want to consider in your Google Chat apps, such as the following:
- Integrate with other Generative AI models, including customs.
- Support other types of media, such as audio, image, and video.
- Use multimodality.
- Rely on longer context windows and feedback loops.
- Publish production-ready Google Chat apps on the marketplace. There are plenty of resources available for developers such as YouTube videos, documentation websites, code samples, and tutorials.
- Enable Google Chat for your organization. The import mode feature makes it easier to get started.
আরও জানুন
- Developers documentation website for Google Chat
- Google Chat and Dialogflow CX integration
- GitHub repository for all Google Chat samples
- Google Chat import mode
- Developers documentation website for Apps Script
- Google Workspace Developers YouTube channel
- Google Cloud Developer Center
- Generative AI Models
- Generative AI Custom Models
- Generative AI long context windows
- Generative AI feedback loop


