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



নলেজ অ্যাপ (ডেটা সার্চ)
এই অ্যাপটি ন্যাচারাল ল্যাঙ্গুয়েজে প্রশ্ন বুঝতে ও উত্তর দিতে এবং আনস্ট্রাকচার্ড ডেটা থেকে সোর্স রেফারেন্স ফিরিয়ে দিতে Gemini-র উপর নির্ভর করে।
ব্যবহৃত প্রধান প্রযুক্তিগুলি হল Dialogflow CX ডেটা স্টোর এজেন্ট, Dialogflow CX ওয়েবহুক, Google Cloud Functions ও Gemini।

Feedback অ্যাপ (কথোপকথন)
এই অ্যাপটি স্বাভাবিক ভাষায় কথোপকথনের মাধ্যমে রিভিউ সংগ্রহ ও স্টোর করার জন্য Gemini-র উপর নির্ভর করে।
ব্যবহৃত প্রধান প্রযুক্তিগুলি হল Dialogflow CX এজেন্ট, Dialogflow CX টুল, OpenAPI, Google Cloud Functions এবং Gemini।

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

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

Google Cloud প্রোজেক্ট
Google Cloud কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- আপনার প্রোজেক্ট বেছে নিন।
- মেনু ☰ > API ও পরিষেবা > 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-এ জেনারেটিভ AI তৈরি ও ব্যবহার করার জন্য প্রয়োজনীয় সবকিছুই রয়েছে, যার মধ্যে AI সলিউশন, এজেন্ট বিল্ডার, ১৩০টিরও বেশি ফাউন্ডেশন মডেল এবং একটি ইউনিফায়েড AI প্ল্যাটফর্ম অন্তর্ভুক্ত।

Gemini
Gemini হল Google-এর একটি মাল্টিমডেল LLM যা Vertex AI-এর মাধ্যমে অ্যাক্সেস করা যায়। এটি মানুষকে তাদের মানবিক সম্ভাবনাকে আনলক করতে সাহায্য করে যাতে তারা তাদের কল্পনাশক্তি বাড়াতে, তাদের কৌতূহল প্রসারিত করতে এবং তাদের উৎপাদনশীলতা বাড়াতে পারে।
উন্নত Chat পরিষেবা
উন্নত Chat পরিষেবা আপনাকে Apps স্ক্রিপ্টে Google Chat API ব্যবহার করতে দেয়। এর ফলে স্ক্রিপ্ট Chat স্পেস খুঁজতে, তৈরি করতে ও পরিবর্তন করতে, স্পেসে মেম্বার যোগ করতে বা সরাতে এবং টেক্সট, কার্ড, অ্যাটাচমেন্ট ও প্রতিক্রিয়া সহ মেসেজ পড়তে বা পোস্ট করতে পারে।
আর্কিটেকচার পর্যালোচনা করা

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

ডেডিকেটেড স্পেস থেকে সমস্যার সমাধান করা

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

সোর্স কোড পর্যালোচনা করুন
Apps Script প্রোজেক্টে নিম্নলিখিত স্ক্রিপ্ট থাকে:
Configuration: পরিবেশের উপর ভিত্তি করে এডিট করার জন্য কনস্ট্যান্ট।ChatApp: মেসেজ, কার্ড ক্লিক, স্ল্যাশ কমান্ড ও ডায়ালগ সহ Google Chat-এর ইন্টার্যাকশন ইভেন্ট ম্যানেজ করে।Storage: ইউটিলিটি ফাংশন যা প্রপার্টি পরিষেবার উপর নির্ভর করে।ChatAppAuth: Google Chat অ্যাপ যাচাইকরণের উপর নির্ভর করে এমন ইউটিলিটি ফাংশন।Docs: Google Docs-এর উপর নির্ভর করে এমন ইউটিলিটি ফাংশন।VertexAi: Vertex AI-এর উপর নির্ভর করে এমন ইউটিলিটি ফাংশন।
Gemini এবং চ্যাট স্পেস ইতিহাস সহ রিপোর্ট ডকুমেন্ট তৈরি করার সময় সক্রিয়ভাবে ব্যবহৃত অংশগুলি এখানে রয়েছে:
appsscript.json
// Enables the Admin SDK Directory and Chat services, which you need to retrieve
// messages and usernames.
"enabledAdvancedServices": [
...
{
"userSymbol": "AdminDirectory",
"version": "directory_v1",
"serviceId": "admin"
},
{
"userSymbol": "Chat",
"version": "v1",
"serviceId": "chat"
}
...
]
// Includes the OAuth scopes to request the Admin SDK Directory, Google Chat,
// Google Docs, and Vertex AI APIs.
"oauthScopes": [
...
"https://www.googleapis.com/auth/admin.directory.user.readonly",
"https://www.googleapis.com/auth/chat.messages.readonly",
"https://www.googleapis.com/auth/documents",
"https://www.googleapis.com/auth/cloud-platform",
...
]
Configuration.js
// Relies on two constants: the first one is the Google Cloud project ID and the
// second one is the Vertex AI location to be used.
...
const PROJECT_ID = 'replace-with-gcp-project-id';
const VERTEX_AI_LOCATION_ID = 'us-central1';
...
ChatApp.js
// The slash command process function retrieves history, generates content, and passes
// it to the report generator.
function processSlashCommand(event) {
...
if (event.message.slashCommand.commandId == CLOSE_COMMAND_ID
&& event.message.space.type !== "DM") {
...
const history = exportSpaceHistory(spaceId);
const summary = summarizeSpace(history);
const docUrl = createReport(
issue.title, issue.description, resolution, history, summary
);
...
}
...
}
/**
* Fetches and concatenates the 100 first space messages by using the Google Chat API.
*
* Messages with slash commands are filtered (app command invocations).
*
* @return {string} concatenate space messages in the format "Sender's name: Message"
*/
function exportSpaceHistory(spaceName) {
const messages = Chat.Spaces.Messages.list(spaceName, { 'pageSize': 100 }).messages;
// Returns results after fetching message sender display names.
let users = new Map();
return messages>
.filter(message = message.slashCommand === 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 প্রোজেক্ট আপডেট করা
API চালু করুন
- Google Cloud কনসোল থেকে Google Docs, Google Admin SDK এবং Vertex AI API চালু করুন:
- মেনু ☰ > API ও পরিষেবা > চালু করা API ও পরিষেবা বিকল্পে ক্লিক করুন এবং API চালু করা আছে কিনা তা কনফার্ম করুন।
পরিষেবা অ্যাকাউন্ট শুরু করুন
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 প্রোজেক্টে সোর্স কোড পুশ করার আগে, আপনাকে কয়েকটি জিনিস কনফিগার করতে হবে।
সোর্স কোড কনফিগার করুন
Configuration.jsফাইলেCHAT_CREDENTIALSনামের JSON কনস্ট্যান্টকে ব্যক্তিগত কী ফাইলের কন্টেন্টে সেট করুন যা আপনি আগে ডাউনলোড করেছেন।

- Google Cloud কনসোলে, মেনু ☰ > IAM ও অ্যাডমিন > সেটিংস বিকল্পে ক্লিক করুন।
- প্রোজেক্ট আইডি কপি করুন।

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

clasp সেটিংস কনফিগার করুন
সঠিক Apps Script প্রোজেক্টে সোর্স কোড পুশ করার জন্য clasp সেটিংস শুরু করতে, এইসব ধাপ অনুসরণ করুন:
- Apps Script কনসোল থেকে আপনার প্রোজেক্ট বেছে নিন।
- প্রোজেক্ট সেটিংস বেছে নিন।
- আইডি বিকল্পের মধ্যে, কপি করুন বিকল্পে ক্লিক করুন।

- বর্তমান ডিরেক্টরিতে, একটি
.clasp.jsonফাইল তৈরি করুন। <your-script-id>-এর জায়গায় কপি করা আইডি লিখুন।.clasp.jsonফাইলে ফলাফল কপি করুন।.clasp.jsonফাইল সেভ করুন।
{
"scriptI<d": ">;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.
এটি ব্যবহার করে দেখুন
- Google Chat-এ, অ্যাপে সরাসরি মেসেজ হিসেবে
Hello!পাঠান। অ্যাপটি উত্তর দেয় না, তবে একটি মেসেজ দেখা যায় যা কনফিগারেশন প্রম্পট করে।

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

এটি সফল হলে, আপনি ওয়েবপেজে একটি প্রাথমিক কনফার্মেশন স্ক্রিন এবং আপনার আসল মেসেজের জন্য অ্যাপ থেকে একটি প্রকৃত উত্তর দেখতে পাবেন।


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

- ডায়ালগে, শীর্ষক
Issue Title 1-এ সেট করুন। - বিবরণ
Description 1নম্বর সমস্যা হিসেবে সেট করুন। - তৈরি করুন বিকল্পে ক্লিক করুন।

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

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

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

- রিপোর্ট ডকুমেন্ট খুলুন। এতে প্রাথমিক তথ্য, ইতিহাস ও সারসংক্ষেপ থাকে।

৪. ঐচ্ছিক: অ্যাপ ১: অ্যাপ হোম যোগ করুন
ধারণা পর্যালোচনা করুন
অ্যাপ হোম হল একটি কাস্টমাইজ করা যায় এমন কার্ড মেসেজ যা 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 প্রোজেক্ট আপডেট করা
API চালু করুন
- Google Cloud কনসোলে, Google Workspace Events এবং PubSub চালু করুন।
- মেনু ☰ > API ও পরিষেবা > চালু করা API ও পরিষেবা বিকল্পে ক্লিক করুন এবং দুটিই চালু করা আছে কিনা তা কনফার্ম করুন।
সাবস্ক্রিপশন শুরু করুন
পোস্ট করার জন্য সব Workspace ইভেন্টের ক্ষেত্রে আপনাকে Pub/Sub বিষয় তৈরি ও সাবস্ক্রাইব করতে হবে।
Google Cloud কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- মেনু ☰ > Pub/Sub > বিষয় বিকল্পে যান।
- বিষয় তৈরি করুন বিকল্পে ক্লিক করুন।
- বিষয় আইডি
workspace-events-এ সেট করুন। - ডিফল্ট সাবস্ক্রিপশন যোগ করুন চেকবক্স বেছে নিন।
- তৈরি করুন বিকল্পে ক্লিক করুন।

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

Apps Script প্রোজেক্ট আপডেট করুন
Google Cloud কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- মেনু ☰ > IAM ও অ্যাডমিন > সেটিংস বিকল্পে যান।
- প্রোজেক্ট আইডি কপি করুন।

আপনার লোকাল এনভায়রনমেন্টে, এইসব ধাপ অনুসরণ করুন:
- আপনার টার্মিনালে বর্তমান ডিরেক্টরি পরিবর্তন করে
issue-management/3-message-monitoringকরুন। এতে আপনার প্রয়োজনীয় সোর্স কোড আছে। Configuration.jsফাইলেPROJECT_IDনামের স্ট্রিং কনস্ট্যান্টকে কপি করা প্রোজেক্ট আইডিতে সেট করুন।Configuration.jsফাইলেCHAT_CREDENTIALSনামের JSON কনস্ট্যান্টকে ব্যক্তিগত কী ফাইলের কন্টেন্টে সেট করুন যা আপনি আগে ডাউনলোড করেছেন।- আপনার বর্তমান ডিরেক্টরিতে
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 সাবস্ক্রিপশন বেছে নিন।
- মেসেজ ট্যাব বেছে নিন।
- টানুন বিকল্পে ক্লিক করুন। নতুন তৈরি করা স্পেসে আপনি যা পাঠিয়েছেন তার সাথে সম্পর্কিত মেসেজ টেবিলে দেখানো হয়।

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

Google Cloud কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- মেনু ☰ > Pub/Sub > সাবস্ক্রিপশন বিকল্পে যান।
- workspace-events-sub সাবস্ক্রিপশন বেছে নিন।
- মেসেজ ট্যাব বেছে নিন।
- পুল করুন বিকল্পে ক্লিক করুন। নতুন তৈরি করা স্পেসে আপনি যা পাঠিয়েছেন তার সাথে সম্পর্কিত মেসেজ টেবিলে আর দেখা যাবে না।

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

সোর্স কোড পর্যালোচনা করুন
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-এ, অ্যাপটি সমস্যাটির জন্য নির্দিষ্ট স্পেসে ইনক্লুসিভিটি সংক্রান্ত সহায়তা সহ কোনও মেসেজ পাঠায়নি কারণ এটি বন্ধ করা ছিল।

৮. অ্যাপ ২: তৈরি করুন
ধারণা পর্যালোচনা করুন
জেন AI গ্রাউন্ডিং
এটি AI মডেলকে যাচাইযোগ্য জ্ঞানের সোর্সের সাথে কানেক্ট করে আরও ফ্যাকচুয়াল ও নির্ভরযোগ্য করে তোলার ব্যাপারে। এই টেকনিক AI-কে তথ্য উদ্ভাবন করা থেকে বিরত রাখতে সাহায্য করে এবং উত্তরগুলিকে প্রাসঙ্গিক ও কম পক্ষপাতদুষ্ট করতে সাহায্য করতে পারে।
ন্যাচারাল ল্যাঙ্গুয়েজ
দৈনন্দিন যোগাযোগের জন্য মানুষের দ্বারা কথিত বা লিখিত যেকোনও ভাষা, কৃত্রিম বা কম্পিউটার-ভিত্তিক ভাষার বিপরীতে।
Cloud Storage
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 চালু করুন।
- মেনু ☰ > API ও পরিষেবা > চালু করা API ও পরিষেবা বিকল্পে ক্লিক করুন এবং তারপরে সব API চালু করা আছে কিনা তা কনফার্ম করুন।
।
Dialogflow CX ডেটা স্টোর এজেন্ট তৈরি করা
নলেজ ডেটা শুরু করা
Google Cloud কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- মেনু ☰ > ক্লাউড স্টোরেজ > বাকেট বিকল্পে ক্লিক করুন।

- তৈরি করুন বিকল্পে ক্লিক করুন।
- নাম
gchat-knowledge-এ সেট করুন। - তৈরি করুন বিকল্পে ক্লিক করুন।

- gchat-knowledge বাকেট বেছে নিন।
- ফাইল আপলোড করুন বিকল্পে ক্লিক করুন।
- আপনার লোকাল এনভায়রনমেন্ট থেকে google-chat-overview.pdf ফাইল ডাউনলোড করে বেছে নিন।

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

Company nameআপনার কোম্পানির নাম হিসেবে সেট করুন।knowledgeকোডেAgent nameকোড সেট করুন।- চালিয়ে যান বিকল্পে ক্লিক করুন।

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

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

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

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

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

অ্যাপ সম্পূর্ণ ও টেস্ট করা
Dialogflow CX কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- আপনার Google Cloud প্রোজেক্ট বেছে নিন।
- নলেজ এজেন্ট বেছে নিন।

- এজেন্ট সেটিংস > জেনারেটিভ AI > জেনারেটিভ এজেন্ট বিকল্প বেছে নিন।
- 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-এ, Google Chat অ্যাপে সরাসরি মেসেজে
What is Google Chat?পাঠান। এজেন্ট অর্থপূর্ণ কিছু দিয়ে উত্তর দেয়।

৯. ঐচ্ছিক: অ্যাপ ২: সোর্স যোগ করুন
ধারণা পর্যালোচনা করুন
Dialogflow CX ওয়েবহুক
এমন একটি পরিষেবা যা ব্যবসার লজিক হোস্ট করে বা অন্যান্য পরিষেবাকে কল করে। Dialogflow CX সেশন চলাকালীন, ডায়নামিক উত্তর তৈরি করতে, সংগৃহীত ডেটা যাচাই করতে বা ব্যাকএন্ডে অ্যাকশন ট্রিগার করতে, ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিংয়ের মাধ্যমে এক্সট্র্যাক্ট করা ডেটার উপর ওয়েবহুক নির্ভর করতে পারে।
Cloud Functions
সার্ভারলেস ব্যাকএন্ড তৈরি, রিয়েল-টাইম ডেটা প্রসেসিং ও ইন্টেলিজেন্ট অ্যাপ তৈরির জন্য 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 API চালু করুন।
- মেনু ☰ > API ও পরিষেবা > চালু করা API ও পরিষেবা বিকল্পে ক্লিক করুন এবং API চালু করা আছে কিনা তা কনফার্ম করুন।
Dialogflow CX ডেটা স্টোর এজেন্ট আপডেট করুন
আপনাকে একটি Cloud Function ডিপ্লয় করতে হবে এবং Dialogflow CX ওয়েবহুক আপডেট করতে হবে যাতে সম্ভব হলে একাধিক সোর্স থেকে এটি ট্রিগার করা যায়।
একাধিক সোর্স ফেরত দিন
ডিফল্ট হিসেবে, নতুন ডেটা স্টোর এজেন্ট সর্বাধিক একটি সোর্স দেখায়, তবে আপনি আরও সোর্স দেখার জন্য পরিবর্তন করতে পারেন।
Dialogflow CX কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- আপনার Google Cloud প্রোজেক্ট বেছে নিন।
- নলেজ এজেন্ট বেছে নিন।
- শুরুর পৃষ্ঠা বিকল্প বেছে নিন।
- ডেটা স্টোর এডিট করুন বিকল্প বেছে নিন।
- এজেন্ট রেসপন্স বিভাগে, ডেটা স্টোর রেসপন্স বিকল্প
5-এ সেট করুন। - সেভ করুন বিকল্পে ক্লিক করুন।

Cloud Function শুরু করা
Google Cloud কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- মেনু ☰ > Cloud Functions বিকল্পে ক্লিক করুন।
- ফাংশন তৈরি করুন বিকল্পে ক্লিক করুন।
- প্রাথমিক বিকল্পের অধীনে, নাম
function-1হিসেবে সেট করুন। - যাচাইকরণ বিকল্পের মধ্যে, যাচাই না করা ইনভোকেশনকে অনুমতি দিন রেডিও বোতাম বেছে নিন।
- রানটাইম, বিল্ড, কানেকশন ও নিরাপত্তা সেটিংস বিকল্পের মধ্যে ইনস্ট্যান্সের সর্বাধিক সংখ্যা
3-এ সেট করুন। - পরবর্তী বিকল্পে ক্লিক করুন।

- এন্ট্রি পয়েন্ট
agent-response-adapter-এ সেট করুন। - ডিফল্ট কন্টেন্ট package.json এবং index.js ফাইল দিয়ে পরিবর্তন করুন।
- ডিপ্লয় করুন বিকল্পে ক্লিক করুন।

- ফাংশনটি ডিপ্লয় করার জন্য কয়েক মিনিট অপেক্ষা করার সময় URL কপি করুন।

ওয়েবহুক শুরু করুন
নতুন ডিপ্লয় করা ফাংশন ট্রিগার করে এমন ওয়েবহুক ব্যবহার করার জন্য আপনাকে Dialogflow CX এজেন্ট কনফিগার করতে হবে।
Dialogflow CX কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- আপনার Google Cloud প্রোজেক্ট বেছে নিন।
- নলেজ এজেন্ট বেছে নিন।
- ম্যানেজ করুন > Webhooks > তৈরি করুন বিকল্প বেছে নিন।
- যে নাম দেখানো হবে সেটি
Google Chat Response Adapter-এ সেট করুন। - আপনি আগে যে URL কপি করেছেন সেটিতে ওয়েবহুক URL সেট করুন।
- সেভ করুন বিকল্পে ক্লিক করুন।

- তৈরি করুন বিকল্পে ক্লিক করুন।
- শুরুর পৃষ্ঠা বিকল্প বেছে নিন।
- ডেটা স্টোর এডিট করুন বিকল্প বেছে নিন।
- Webhook সেটিংস-এর অধীনে, Webhook চালু করুন টগল বোতামে ক্লিক করুন।
- ওয়েবহুকের জন্য Google Chat রেসপন্স অ্যাডাপ্টার বেছে নিন।
- ট্যাগ
arbitrary_tag-এ সেট করুন। - সেভ করুন বিকল্পে ক্লিক করুন।

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

১০. অ্যাপ ৩: তৈরি করুন
ধারণা পর্যালোচনা করুন
কথোপকথন সংক্রান্ত ইন্টার্যাকশন
ন্যাচারাল ল্যাঙ্গুয়েজের মাধ্যমে দুই বা তার বেশি ব্যক্তির মধ্যে তথ্য বা আইডিয়ার আদান-প্রদানকে কথোপকথন বলা হয়। এটি টেকনিক্যাল ইন্টারফেসের থেকে আলাদা যা প্রায়শই স্টেটলেস, অত্যন্ত স্ট্রাকচার্ড ও ইনটলারেন্ট এক্সচেঞ্জের উপর নির্ভর করে।
OpenAPI স্পেসিফিকেশন
এটি API লাইফসাইকেলের প্রতিটি ধাপের মাধ্যমে তথ্য বহন করার একটি সামঞ্জস্যপূর্ণ উপায় প্রদান করে। এটি HTTP API-এর জন্য একটি স্পেসিফিকেশন ল্যাঙ্গুয়েজ যা এমনভাবে স্ট্রাকচার ও সিনট্যাক্সকে সংজ্ঞায়িত করে যা API যে প্রোগ্রামিং ল্যাঙ্গুয়েজে তৈরি করা হয়েছে তার সাথে সম্পর্কিত নয়। API স্পেসিফিকেশন সাধারণত YAML বা JSON-এ লেখা হয়, যা স্পেসিফিকেশন সহজে শেয়ার ও ব্যবহার করার সুবিধা দেয়।
Dialogflow CX এজেন্ট
এজেন্ট অ্যাপের প্রাথমিক বিল্ডিং ব্লক। একটি এজেন্ট অ্যাপে সাধারণত অনেক এজেন্ট থাকে, যেখানে প্রতিটি এজেন্টকে নির্দিষ্ট টাস্ক ম্যানেজ করার জন্য সংজ্ঞায়িত করা হয়। এজেন্ট ডেটা LLM-কে প্রদান করা হয়, যাতে প্রশ্নের উত্তর দিতে এবং টাস্ক সম্পূর্ণ করতে প্রয়োজনীয় তথ্য তার কাছে থাকে। প্রতিটি এজেন্ট তথ্য প্রদান করতে, এক্সটার্নাল পরিষেবায় কোয়েরি পাঠাতে অথবা সাব-টাস্ক ম্যানেজ করার জন্য 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
ব্যাকএন্ড সার্ভিস মক শুরু করুন
আপনি ব্যাকএন্ড পরিষেবার সিমুলেশন করতে Cloud Function ডিপ্লয় করেন, যা Dialogflow CX এজেন্ট অ্যাপের ইন্টিগ্রেট ও টুল হিসেবে কল করার জন্য প্রয়োজন।
Google Cloud কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- মেনু ☰ > Cloud Functions বিকল্পে ক্লিক করুন।
- ফাংশন তৈরি করুন বিকল্পে ক্লিক করুন।
- প্রাথমিক বিকল্পের অধীনে, নাম
function-2হিসেবে সেট করুন। - যাচাইকরণ বিকল্পের অধীনে, যাচাই না করা ইনভোকেশনকে অনুমতি দিন রেডিও বোতামটি বেছে নিন।
- রানটাইম, বিল্ড, কানেকশন ও নিরাপত্তা সেটিংস বিকল্পের মধ্যে ইনস্ট্যান্সের সর্বাধিক সংখ্যা
3-এ সেট করুন। - পরবর্তী বিকল্পে ক্লিক করুন।

- এন্ট্রি পয়েন্ট
feedback-app-backend-এ সেট করুন। - ডিফল্ট কন্টেন্ট package.json এবং index.js ফাইল দিয়ে পরিবর্তন করুন।
- ডিপ্লয় করুন বিকল্পে ক্লিক করুন।

- ফাংশনটি ডিপ্লয় করার জন্য কয়েক মিনিট অপেক্ষা করার সময় URL কপি করুন।
Dialogflow CX এজেন্ট অ্যাপ তৈরি করা
অ্যাপ তৈরি করুন
Google Cloud কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- মেনু ☰ > এজেন্ট বিল্ডার > অ্যাপ বিকল্পে ক্লিক করুন।
- নতুন অ্যাপ বিকল্পে ক্লিক করুন।
- এজেন্ট বেছে নিন।
- যে নাম দেখানো হবে সেটি
Feedback App-এ সেট করুন। - তৈরি করুন বিকল্পে ক্লিক করুন।

টুল শুরু করুন
Google Cloud কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- মেনু ☰ > এজেন্ট বিল্ডার > অ্যাপ বিকল্পে ক্লিক করুন।
- Feedback App এজেন্ট বেছে নিন।
- টুল > + তৈরি করুন বিকল্পে ক্লিক করুন।
- নাম
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.
- service-openapi.yaml ফাইলে
$URLডাউনলোড করে আপনার আগে কপি করা URL দিয়ে সেটি পাল্টে দিন। service-openapi.yamlফাইলের এডিট করা কন্টেন্টেYAML Schemaসেট করুন।- সেভ করুন বিকল্পে ক্লিক করুন।

এজেন্ট শুরু করুন
Google Cloud কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- মেনু ☰ > এজেন্ট বিল্ডার > অ্যাপ বিকল্পে ক্লিক করুন।
- Feedback App এজেন্ট বেছে নিন।
- এজেন্ট > ডিফল্ট জেনারেটিভ এজেন্ট বিকল্প বেছে নিন।
- এজেন্টের নাম
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.
- সেভ করুন বিকল্পে ক্লিক করুন।

Test app
Google Cloud কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- মেনু ☰ > এজেন্ট বিল্ডার > অ্যাপ বিকল্পে ক্লিক করুন।
- Feedback App এজেন্ট বেছে নিন।
- এজেন্ট প্রিভিউ করুন বিকল্পে যান।
- এজেন্ট বিকল্পের অধীনে, মতামত সংগ্রহকারী বিকল্প বেছে নিন।
- জেনারেটিভ মডেল বেছে নিন বিকল্পের মধ্যে, gemini-pro বেছে নিন।
- শুরু করতে
Hello!মেসেজটি পাঠান।

Google Cloud কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- মেনু ☰ > Cloud Functions বিকল্পে ক্লিক করুন।
- function-2 > লগ বিকল্প বেছে নিন। কিছু লগে Google-Dialogflow-কে কলার হিসেবে দেখানো হয়।

Google Chat অ্যাপ ইন্টিগ্রেট করা
Dialogflow CX কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- আপনার Google Cloud প্রোজেক্ট বেছে নিন।
Feedback Appএজেন্টের অ্যাকশন মেনুতে ক্লিক করুন।- নাম কপি করুন বিকল্পে ক্লিক করুন।
Google Cloud কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- Google Chat API কনফিগারেশনে যান।
- এজেন্ট বা এনভায়রনমেন্ট রিসোর্সের নাম-এ আপনার আগে কপি করা এজেন্টের নাম সেট করুন।

- শুরু করতে, Google Chat-এ, Google Chat অ্যাপে সরাসরি মেসেজে
Hello!পাঠান। Dialogflow CX কনসোল থেকে আপনার পরীক্ষার মতোই এজেন্ট উত্তর দেয়।

১১. অপ্রয়োজনীয়গুলি মুছুন
Google Cloud প্রোজেক্ট মুছে ফেলা
এই কোডল্যাবে ব্যবহার করা রিসোর্সের জন্য আপনার Google Cloud অ্যাকাউন্টে চার্জ এড়াতে, আমরা আপনাকে Google Cloud প্রোজেক্ট মুছে ফেলার সাজেশন দিই।
Google Cloud কনসোলে, এই ধাপগুলি অনুসরণ করুন:
- মেনু ☰ > IAM ও অ্যাডমিন > সেটিংস বিকল্পে ক্লিক করুন।
- বন্ধ করুন বিকল্পে ক্লিক করুন।
- প্রোজেক্ট আইডি লিখুন।
- তবুও বন্ধ করুন বিকল্পে ক্লিক করুন।

Apps Script প্রোজেক্ট মুছে দিন
আমরা সাজেস্ট করি যে আপনি নিজের Apps Script প্রোজেক্টও মুছে দিন।
Apps Script কনসোলে, এইসব ধাপ অনুসরণ করুন:
- আপনার প্রোজেক্ট বেছে নিন।
- অ্যাকশন মেনুতে ক্লিক করুন।
- সরিয়ে দিন বিকল্পে ক্লিক করুন।

১২. অভিনন্দন
অভিনন্দন! আপনি Gemini-র সাহায্যে Google Chat অ্যাপ তৈরি করেছেন!
এর পরে কী হবে?
আমরা এই কোডল্যাবে শুধুমাত্র সহজ ব্যবহারের কেস দেখিয়েছি, তবে এমন অনেক ক্ষেত্র রয়েছে যা আপনি আপনার Google Chat অ্যাপে বিবেচনা করতে চাইতে পারেন, যেমন:
- কাস্টম সহ অন্যান্য জেনারেটিভ AI মডেলের সাথে ইন্টিগ্রেট করুন।
- অডিও, ছবি ও ভিডিওর মতো অন্যান্য ধরনের মিডিয়া সাপোর্ট করে।
- মাল্টিমোডালিটি ব্যবহার করুন।
- আরও দীর্ঘ কন্টেক্সট উইন্ডো ও ফিডব্যাক লুপের উপর নির্ভর করুন।
- মার্কেটপ্লেসে প্রোডাকশন-রেডি Google Chat অ্যাপ প্রকাশ করুন। ডেভেলপারদের জন্য YouTube ভিডিও, ডকুমেন্টেশন ওয়েবসাইট, কোড স্যাম্পেল ও টিউটোরিয়ালের মতো অনেক রিসোর্স উপলভ্য আছে।
- আপনার সংস্থার জন্য Google Chat চালু করুন। ইমপোর্ট মোড ফিচারটি শুরু করা সহজ করে তোলে।
আরও জানুন
- Google Chat-এর জন্য ডেভেলপার ডকুমেন্টেশন ওয়েবসাইট
- Google Chat ও Dialogflow CX ইন্টিগ্রেশন
- সব Google Chat স্যাম্পেলের জন্য GitHub রিপোজিটরি
- Google Chat ইমপোর্ট মোড
- Apps Script-এর জন্য ডেভেলপার ডকুমেন্টেশন ওয়েবসাইট
- Google Workspace ডেভেলপার YouTube চ্যানেল
- Google Cloud ডেভেলপার সেন্টার
- জেনারেটিভ AI মডেল
- জেনারেটিভ AI কাস্টম মডেল
- জেনারেটিভ AI-এর দীর্ঘ কনটেক্সট উইন্ডো
- জেনারেটিভ AI ফিডব্যাক লুপ


