1. ওভারভিউ
এই কোডল্যাবে, আপনি শিখবেন কিভাবে বটকিট টুলকিট ব্যবহার করে একটি স্ল্যাক বট তৈরি করতে হয় এবং এটি Google ক্লাউডে চালাতে হয়। আপনি একটি লাইভ স্ল্যাক চ্যানেলে বটের সাথে ইন্টারঅ্যাক্ট করতে সক্ষম হবেন।
আপনি কি শিখবেন
- কীভাবে স্ল্যাকে একটি বট কাস্টম ইন্টিগ্রেশন তৈরি করবেন
- সিক্রেট ম্যানেজারের সাথে কীভাবে আপনার স্ল্যাক গোপনীয়তাগুলি সুরক্ষিত করবেন
- ক্লাউড রানে কীভাবে একটি স্ল্যাক বট স্থাপন করবেন, একটি সম্পূর্ণরূপে পরিচালিত গণনা প্ল্যাটফর্ম যা স্বয়ংক্রিয়ভাবে আপনার রাষ্ট্রহীন পাত্রে স্কেল করে
আপনি কি প্রয়োজন হবে
- একটি Google ক্লাউড প্রকল্প
- একটি ব্রাউজার যেমন ক্রোম বা ফায়ারফক্স
আপনি কিভাবে এই টিউটোরিয়াল ব্যবহার করবেন?
আপনি Google ক্লাউডের সাথে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?
2. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
- Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।
- প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি সবসময় এটি আপডেট করতে পারেন.
- প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রকল্প আইডি উল্লেখ করতে হবে (সাধারণত
PROJECT_ID
হিসাবে চিহ্নিত)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করতে পারেন, এবং এটি উপলব্ধ কিনা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকে। - আপনার তথ্যের জন্য, একটি তৃতীয় মান আছে, একটি প্রকল্প নম্বর , যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
- এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ হবে না, যদি কিছু হয়। এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে সংস্থানগুলি বন্ধ করতে, আপনি আপনার তৈরি করা সংস্থানগুলি মুছতে বা প্রকল্প মুছতে পারেন। নতুন Google ক্লাউড ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷
ক্লাউড শেল শুরু করুন
যদিও Google ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই টিউটোরিয়ালে আপনি Cloud Shell ব্যবহার করবেন, একটি কমান্ড লাইন পরিবেশ যা ক্লাউডে চলছে।
ক্লাউড শেল সক্রিয় করুন
- ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন .
যদি এটি আপনার প্রথমবার ক্লাউড শেল শুরু হয়, তাহলে এটি কী তা বর্ণনা করে আপনাকে একটি মধ্যবর্তী স্ক্রীন উপস্থাপন করা হবে। যদি আপনি একটি মধ্যবর্তী স্ক্রীনের সাথে উপস্থাপিত হন, তবে চালিয়ে যান ক্লিক করুন।
ক্লাউড শেলের সাথে সংযোগ করতে এবং সংযোগ করতে এটির মাত্র কয়েক মুহূর্ত লাগবে৷
এই ভার্চুয়াল মেশিনটি প্রয়োজনীয় সমস্ত বিকাশের সরঞ্জাম দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5 GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার অনেক কাজ, যদি সব না হয়, ব্রাউজার দিয়ে করা যেতে পারে।
একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি প্রমাণীকৃত হয়েছেন এবং প্রকল্পটি আপনার প্রকল্প আইডিতে সেট করা আছে।
- আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list
কমান্ড আউটপুট
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- gcloud কমান্ড আপনার প্রকল্প সম্পর্কে জানে তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project
কমান্ড আউটপুট
[core] project = <PROJECT_ID>
যদি এটি না হয়, আপনি এই কমান্ড দিয়ে এটি সেট করতে পারেন:
gcloud config set project <PROJECT_ID>
কমান্ড আউটপুট
Updated property [core/project].
3. API গুলি সক্রিয় করুন৷
ক্লাউড শেল থেকে, আর্টিফ্যাক্ট রেজিস্ট্রি, ক্লাউড বিল্ড, ক্লাউড রান এবং সিক্রেট ম্যানেজার এপিআই সক্ষম করুন:
gcloud services enable \ artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com \ secretmanager.googleapis.com
এটি এটির মতো একটি সফল বার্তা আউটপুট করে:
Operation "operations/..." finished successfully.
এখন, আপনি আপনার অ্যাপ্লিকেশন প্রস্তুত এবং স্থাপন করতে প্রস্তুত...
4. একটি স্ল্যাক ওয়ার্কস্পেস তৈরি করুন
আপনার একটি স্ল্যাক ওয়ার্কস্পেস প্রয়োজন যেখানে আপনাকে কাস্টম ইন্টিগ্রেশন তৈরি করার অনুমতি দেওয়া হয়েছে। আপনি যদি এই টিউটোরিয়ালের জন্য ব্যবহার করতে চান এমন একটি ওয়ার্কস্পেস না থাকলে আপনি বিনামূল্যে একটি ওয়ার্কস্পেস তৈরি করতে পারেন।
5. একটি স্ল্যাক বট ব্যবহারকারী তৈরি করুন
একজন বট ব্যবহারকারী স্ল্যাকের বার্তা শুনতে, বার্তা পোস্ট করতে এবং ফাইল আপলোড করতে পারে। এই কোডল্যাবে, আপনি একটি সাধারণ শুভেচ্ছা বার্তা পোস্ট করার জন্য একটি বট তৈরি করবেন।
একটি নতুন স্ল্যাক অ্যাপ তৈরি করুন
- স্ল্যাক অ্যাপস ম্যানেজমেন্ট পৃষ্ঠায় যান।
- উপরের ডানদিকে কোণায় নতুন অ্যাপ তৈরি করুন বোতামে ক্লিক করুন।
- অ্যাপটিকে একটি নাম দিন, যেমন "কিটেনবট"।
- স্ল্যাক টিমটি বেছে নিন যেখানে আপনি এটি ইনস্টল করতে চান।
একটি বট ব্যবহারকারী তৈরি করুন
- বৈশিষ্ট্যের অধীনে বাম পাশের প্যানেলে অ্যাপ হোমে যান
- রিভিউ স্কোপস টু অ্যাড ক্লিক করে আপনার বট টোকেনে একটি সুযোগ বরাদ্দ করুন
- বট টোকেন স্কোপে নিচে স্ক্রোল করুন এবং একটি OAuth স্কোপ যোগ করুন ক্লিক করুন।
chat:write
- উপরে স্ক্রোল করুন এবং আপনার ওয়ার্কস্পেস বোতামে অ্যাপ ইনস্টল করুন ক্লিক করুন।
- এটি আপনার দলে অ্যাপটি ইনস্টল করবে, আপনার তৈরি করা বট ব্যবহারকারীকে যোগ করবে এবং একটি বট টোকেন তৈরি করবে।
- যখন অনুরোধ করা হয়, আপনার কর্মক্ষেত্রে চ্যাট করার জন্য বটটিকে অনুমোদন করতে " অনুমতি দিন " এ ক্লিক করুন৷
বার্তা এবং কমান্ড সক্রিয় করুন
- ট্যাব দেখাতে নিচে স্ক্রোল করুন এবং নিশ্চিত করুন যে উভয় বিকল্প সক্রিয় আছে:
ক্লায়েন্ট সাইনিং গোপন পান
- সেটিংসের অধীনে মৌলিক তথ্যে যান।
- সাইনিং সিক্রেটে নীচে স্ক্রোল করুন, দেখান ক্লিক করুন এবং তারপর আপনার ক্লিপবোর্ডে গোপনটি অনুলিপি করুন:
- একটি পরিবেশ পরিবর্তনশীল মধ্যে গোপন সংরক্ষণ করুন:
CLIENT_SIGNING_SECRET=PASTE_THE_SIGNING_SECRET
বট টোকেন পান
- বৈশিষ্ট্যের অধীনে OAuth এবং অনুমতিগুলিতে যান।
- আপনার ক্লিপবোর্ডে বট ব্যবহারকারী OAuth অ্যাক্সেস টোকেন পাঠ্য অনুলিপি করতে অনুলিপি বোতামে ক্লিক করুন।
- একটি পরিবেশ পরিবর্তনশীল মধ্যে বট টোকেন সংরক্ষণ করুন:
BOT_TOKEN=PASTE_THE_BOT_TOKEN
চিন্তা করবেন না। আপনি যদি এই টোকেনগুলি আবার পেতে চান তাহলে আপনি অ্যাপস ম্যানেজমেন্ট পৃষ্ঠা থেকে এই কনফিগারেশন পৃষ্ঠায় ফিরে আসতে পারেন ।
6. আপনার গোপনীয়তা সুরক্ষিত
আমরা নিশ্চিত করতে চাই যে আপনার বট টোকেন এবং আপনার ক্লায়েন্ট সাইনিং সিক্রেট নিরাপদে সংরক্ষণ করা হয়েছে। সেগুলোকে সোর্স কোডে হার্ড-কোডিং করলে এই গোপনীয়তাগুলোকে সংস্করণ নিয়ন্ত্রণে প্রকাশ করে বা ডকার ইমেজে এম্বেড করে ভুলবশত উন্মোচিত হওয়ার সম্ভাবনা থাকে।
সিক্রেট ম্যানেজার API কী, পাসওয়ার্ড, সার্টিফিকেট এবং অন্যান্য সংবেদনশীল ডেটা সংরক্ষণের জন্য একটি নিরাপদ এবং সুবিধাজনক পদ্ধতি প্রদান করে। সিক্রেট ম্যানেজার Google ক্লাউড জুড়ে গোপনীয়তা পরিচালনা, অ্যাক্সেস এবং অডিট করার জন্য একটি কেন্দ্রীয় স্থান এবং সত্যের একক উৎস প্রদান করে।
আপনার গোপনীয়তা তৈরি করুন
নিম্নলিখিত কমান্ডের সাথে আপনার ক্লায়েন্ট সাইনিং সিক্রেট এবং বট টোকেন সংরক্ষণ করুন:
- ক্লায়েন্ট সাইনিং গোপন
echo -n $CLIENT_SIGNING_SECRET | gcloud secrets create client-signing-secret \ --replication-policy automatic \ --data-file -
- বট টোকেন
echo -n $BOT_TOKEN | gcloud secrets create bot-token \ --replication-policy automatic \ --data-file -
আপনার গোপনীয়তা অ্যাক্সেস করুন
আসুন নিশ্চিত করি যে আপনার গোপনীয়তাগুলি সঠিকভাবে তৈরি করা হয়েছে এবং আপনার অনুমতিগুলি কাজ করছে৷ নিম্নলিখিত কমান্ড দিয়ে আপনার গোপনীয়তা অ্যাক্সেস করুন:
echo $(gcloud secrets versions access 1 --secret client-signing-secret) echo $(gcloud secrets versions access 1 --secret bot-token)
এছাড়াও আপনি Google ক্লাউড কনসোলে আপনার গোপনীয়তা দেখতে এবং পরিচালনা করতে পারেন৷
7. নমুনা কোড পান
কমান্ড-লাইনে ক্লাউড শেল-এ, গিটহাব সংগ্রহস্থল ক্লোন করতে নিম্নলিখিত কমান্ডটি চালান:
git clone https://github.com/googlecodelabs/cloud-slack-bot.git
cloud-slack-bot/start
ডিরেক্টরি পরিবর্তন করুন।
cd cloud-slack-bot/start
কোড বোঝা
kittenbot.js
ফাইলটি আপনার পছন্দের কমান্ড লাইন এডিটর (nano, vim, emacs...) দিয়ে খুলুন অথবা ক্লাউড শেল এডিটরের বর্তমান ফোল্ডারটি সরাসরি খুলতে নিম্নলিখিত কমান্ডটি দিয়ে খুলুন:
cloudshell workspace .
kittenbot কোড দুটি প্রধান ফাংশন আছে. একটি হল গোপনীয়তা পুনরুদ্ধার করা, এবং অন্যটি হল বট চালানো।
প্রথমত, আমরা নির্ভরতা আমদানি করি:
kittenbot.js
const { Botkit } = require('botkit');
const {
SlackAdapter,
SlackEventMiddleware,
} = require('botbuilder-adapter-slack');
const { SecretManagerServiceClient } = require('@google-cloud/secret-manager');
SlackAdapter এবং SlackEventMiddleware হল প্যাকেজ যা বটকিটকে প্রসারিত করে এবং বটকে স্ল্যাক এপিআই-এ এবং থেকে সহজে বার্তা অনুবাদ করতে দেয়। সিক্রেট ম্যানেজার ক্লায়েন্ট আপনাকে আগের ধাপে সেভ করা গোপন তথ্য অ্যাক্সেস করার অনুমতি দেবে।
এর পরে আমাদের গোপনীয়তা পুনরুদ্ধারের জন্য আমাদের ফাংশন রয়েছে:
/**
* Returns the secret string from Google Cloud Secret Manager
* @param {string} name The name of the secret.
* @return {Promise<string>} The string value of the secret.
*/
async function accessSecretVersion(name) {
const client = new SecretManagerServiceClient();
const projectId = process.env.PROJECT_ID;
const [version] = await client.accessSecretVersion({
name: `projects/${projectId}/secrets/${name}/versions/1`,
});
// Extract the payload as a string.
const payload = version.payload.data.toString('utf8');
return payload;
}
এই ফাংশনটি বটকে প্রমাণীকরণের জন্য প্রয়োজনীয় গোপনীয়তার স্ট্রিং মান প্রদান করে।
পরবর্তী ফাংশন বট শুরু করে:
/**
* Function to initialize kittenbot.
*/
async function kittenbotInit() {
const adapter = new SlackAdapter({
clientSigningSecret: await accessSecretVersion('client-signing-secret'),
botToken: await accessSecretVersion('bot-token'),
});
adapter.use(new SlackEventMiddleware());
const controller = new Botkit({
webhook_uri: '/api/messages',
adapter: adapter,
});
controller.ready(() => {
controller.hears(
['hello', 'hi', 'hey'],
['message', 'direct_message'],
async (bot, message) => {
await bot.reply(message, 'Meow. :smile_cat:');
}
);
});
}
ফাংশনের প্রথম অংশটি গোপনীয়তার সাথে SlackAdapter কনফিগার করে এবং তারপর বার্তা গ্রহণের জন্য একটি শেষ পয়েন্ট নির্দিষ্ট করে। তারপরে, একবার কন্ট্রোলার চালু হলে, বট "হ্যালো", "হাই", বা "হেই" সহ "মিউ। 😺" সহ যেকোনো বার্তার উত্তর দেবে।
অ্যাপ ম্যানিফেস্টে এই নির্দিষ্ট অংশগুলি দেখুন:
package.json
{
// ...
"scripts": {
"start": "node kittenbot.js",
// ...
},
"engines": {
"node": "16"
},
// ...
}
আপনি ক্লাউড রানের মাধ্যমে সরাসরি উৎস থেকে একটি Node.js অ্যাপ স্থাপন করতে পারেন। হুড অধীনে নিম্নলিখিত ঘটবে:
- ক্লাউড রান একটি কন্টেইনার ইমেজ তৈরি করতে ক্লাউড বিল্ডকে কল করে ( সোর্স কোড থেকে ডিপ্লোয়িং দেখুন)।
- যদি একটি
Dockerfile
সোর্স কোড ডিরেক্টরিতে উপস্থিত থাকে, ক্লাউড বিল্ড এটি একটি ধারক চিত্র তৈরি করতে ব্যবহার করে। - যেহেতু এটি নেই, তাই ক্লাউড বিল্ড বিল্ডপ্যাকগুলিকে উত্স বিশ্লেষণ করতে এবং একটি উত্পাদন-প্রস্তুত চিত্র স্বয়ংক্রিয়ভাবে তৈরি করতে কল করে৷
- Buildpacks
package.json
ম্যানিফেস্ট সনাক্ত করে এবং একটি Node.js ইমেজ তৈরি করে। -
scripts.start
ক্ষেত্র নির্ধারণ করে যে অ্যাপটি কীভাবে শুরু হবে। -
engines.node
ফিল্ড কনটেইনার বেস ইমেজের Node.js সংস্করণ নির্ধারণ করে। - স্থাপনার সময়, পরিচিত নিরাপত্তা সংশোধনগুলি স্বয়ংক্রিয়ভাবে প্রয়োগ করা হয়।
আপনি অ্যাপটি স্থাপন করতে প্রস্তুত!
8. অ্যাপটি স্থাপন করুন
স্ল্যাক ইভেন্টস এপিআই ইভেন্ট সম্পর্কে বহির্গামী বার্তা পাঠাতে ওয়েবহুক ব্যবহার করে। আপনি যখন স্ল্যাক অ্যাপ কনফিগার করবেন, তখন আপনাকে পিং করার জন্য স্ল্যাক API-এর জন্য একটি সর্বজনীনভাবে অ্যাক্সেসযোগ্য URL প্রদান করতে হবে।
ক্লাউড রান ওয়েবহুক লক্ষ্য হোস্ট করার জন্য একটি ভাল সমাধান। এটি আপনাকে আপনার পছন্দের যেকোনো ভাষা বা রানটাইম ব্যবহার করার অনুমতি দেয় এবং এটি একযোগে প্রদান করে, যার অর্থ আপনার অ্যাপ্লিকেশন অনেক বেশি ভলিউম পরিচালনা করতে সক্ষম হবে।
আপনার প্রকল্প আইডি পুনরুদ্ধার করুন
PROJECT_ID পরিবেশ পরিবর্তনশীল সংজ্ঞায়িত করুন:
PROJECT_ID=$(gcloud config get-value core/project)
আপনার ক্লাউড রান অঞ্চল সংজ্ঞায়িত করুন
ক্লাউড রান হল আঞ্চলিক, যার মানে আপনার ক্লাউড রান পরিষেবা চালায় এমন পরিকাঠামো একটি নির্দিষ্ট অঞ্চলে অবস্থিত এবং সেই অঞ্চলের সমস্ত অঞ্চলে অপ্রয়োজনীয়ভাবে উপলব্ধ হওয়ার জন্য Google দ্বারা পরিচালিত হয়৷ আপনি আপনার স্থাপনার জন্য যে অঞ্চলটি ব্যবহার করবেন তা নির্ধারণ করুন, উদাহরণস্বরূপ:
REGION="us-central1"
অনুমতি আপডেট করুন
সিক্রেট ম্যানেজারের কাছ থেকে গোপনীয়তা অ্যাক্সেস করতে সক্ষম হওয়ার জন্য, ক্লাউড রান পরিষেবা অ্যাকাউন্টটিকে ভূমিকা roles/secretmanager.secretAccessor
প্রদান করতে হবে।
প্রথমে, ডিফল্ট পরিষেবা অ্যাকাউন্টটিকে একটি পরিবেশ পরিবর্তনশীলে সংরক্ষণ করুন:
SERVICE_ACCOUNT=$(gcloud iam service-accounts list \ --format "value(email)" \ --filter "displayName:Compute Engine default service account")
আপনার ইমেল ঠিকানাটি সংরক্ষিত আছে তা নিশ্চিত করুন:
echo $SERVICE_ACCOUNT
পরিষেবা অ্যাকাউন্টের নিম্নলিখিত বিন্যাস রয়েছে: PROJECT_NUMBER-compute@developer.gserviceaccount.com
।
আপনার ইমেল ঠিকানা হয়ে গেলে, পরিষেবা অ্যাকাউন্টের জন্য ভূমিকা সক্ষম করুন:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT \ --role roles/secretmanager.secretAccessor
অ্যাপটি স্থাপন করুন
একটি ক্লাউড রান পরিষেবা একটি অনন্য এন্ডপয়েন্ট প্রকাশ করে এবং স্বয়ংক্রিয়ভাবে অন্তর্নিহিত অবকাঠামো স্কেল করে আগত অনুরোধগুলি পরিচালনা করতে।
ক্লাউড রানে অ্যাপটি স্থাপন করুন:
gcloud run deploy kittenbot \ --source . \ --platform managed \ --region $REGION \ --set-env-vars PROJECT_ID=$PROJECT_ID \ --allow-unauthenticated
- এটি
kittenbot
নামে একটি পরিষেবা তৈরি করে। -
--source
বিকল্পটি ক্লাউড বিল্ডের সাথে অ্যাপ্লিকেশন তৈরি করতে বর্তমান ফোল্ডার ব্যবহার করে। ক্লাউড বিল্ড স্বয়ংক্রিয়ভাবেpackage.json
ফাইলের উপস্থিতি সনাক্ত করে। - আপনি বিকল্পভাবে এই কমান্ডের সাহায্যে একটি ডিফল্ট অঞ্চল সংজ্ঞায়িত করতে পারেন:
gcloud config set run/region $REGION
- এছাড়াও আপনি এই কমান্ডের সাহায্যে ডিফল্টরূপে ক্লাউড রান পরিচালনা করতে পারেন:
gcloud config set run/platform managed
-
--set-env-vars
বিকল্পটি পরিষেবা পরিবেশের ভেরিয়েবল সেট করে। -
--allow-unauthenticated
বিকল্পটি পরিষেবাটিকে সর্বজনীনভাবে উপলব্ধ করে।
প্রথমবার, আপনি একটি আর্টিফ্যাক্ট রেজিস্ট্রি সংগ্রহস্থল তৈরি করার জন্য একটি প্রম্পট পাবেন। যাচাই করতে এন্টার ট্যাপ করুন:
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)?
এটি আর্টিফ্যাক্ট রেজিস্ট্রি রিপোজিটরিতে আপনার সোর্স কোড আপলোড করে এবং আপনার কন্টেইনার ইমেজ তৈরি করে:
Building using Dockerfile and deploying container ... * Building and deploying new service... Building Container. OK Creating Container Repository... OK Uploading sources... * Building Container... Logs are available at ...
তারপর, নির্মাণ এবং স্থাপনা সম্পূর্ণ না হওয়া পর্যন্ত একটি মুহূর্ত অপেক্ষা করুন। সফল হলে, কমান্ড লাইন পরিষেবা URL প্রদর্শন করে:
... OK Building and deploying new service... Done. OK Creating Container Repository... OK Uploading sources... OK Building Container... Logs are available at ... OK Creating Revision... Creating Service. OK Routing traffic... OK Setting IAM Policy... Done. Service [SERVICE]... has been deployed and is serving 100 percent of traffic. Service URL: https://SERVICE-PROJECTHASH-REGIONID.a.run.app
আপনি এই কমান্ড দিয়ে পরিষেবা URL পেতে পারেন:
SERVICE_URL=$( \ gcloud run services describe kittenbot \ --platform managed \ --region $REGION \ --format "value(status.url)" \ ) echo $SERVICE_URL
URL এর নিম্নলিখিত বিন্যাস রয়েছে:
https://kittenbot-PROJECTHASH-REGIONID.a.run.app
এই ইউআরএলটি স্ল্যাক ইভেন্টস এপিআই সক্ষম করতে ব্যবহৃত বেস হবে। পরবর্তী ধাপে ব্যবহার করার জন্য এটি আপনার ক্লিপবোর্ডে অনুলিপি করুন।
আপনার পরিষেবা এখন লাইভ এবং সর্বজনীনভাবে উপলব্ধ! আরও তথ্যের জন্য ক্লাউড রান কনসোলে যান।
শেষ রিভিশনটি কখন তৈরি করা হয়েছিল, কতটা ট্র্যাফিক পাচ্ছে তা আপনি দেখতে পারেন এবং লগগুলি দেখতে পারেন৷ যদি আমরা লগগুলিতে ক্লিক করি, আমরা দেখতে পাব যে বটকিট কন্ট্রোলার চালু আছে এবং বার্তা গ্রহণের জন্য প্রস্তুত।
এখন আমাদের স্ল্যাক চ্যানেল থেকে বার্তা পাঠানো শুরু করা যাক!
9. স্ল্যাক ইভেন্টগুলি সক্ষম করুন৷
আমরা আগে দেখেছি, আমাদের kittenbot কোড আমাদের ওয়েবহুক টার্গেটের জন্য একটি আপেক্ষিক শেষ পয়েন্ট নির্দিষ্ট করে।
kittenbot.js
const controller = new Botkit({
webhook_uri: '/api/messages',
adapter: adapter,
});
এর মানে, আমাদের সম্পূর্ণ URL হবে ক্লাউড রান পরিষেবার মূল অংশ, প্লাস /api/messages
।
ইভেন্টগুলি সক্ষম করুন৷
অ্যাপস ম্যানেজমেন্ট পৃষ্ঠায় , সাইডবারে ইভেন্ট সাবস্ক্রিপশন বিভাগে যান এবং ইভেন্টগুলি চালু করুন টগল করুন। আপনার পরিষেবার URL ইনপুট করুন:
PASTE_THE_SERVICE_URL/api/messages
আপনি কত দ্রুত ইউআরএল টাইপ করেন তার উপর নির্ভর করে, এটি আপনার কাজ শেষ করার আগে যাচাই করার চেষ্টা করতে পারে। এটি ব্যর্থ হলে, "পুনরায় চেষ্টা করুন" এ ক্লিক করুন।
সদস্যতা
সব বার্তা বট ইভেন্ট সদস্যতা.
পৃষ্ঠার নীচে পরিবর্তনগুলি সংরক্ষণ করুন ক্লিক করুন৷ আপনাকে আপনার অ্যাপটি পুনরায় ইনস্টল করতে বলা হবে। প্রম্পটগুলির মাধ্যমে যান এবং অনুমতিতে ক্লিক করুন।
এই মুহুর্তে, আপনার বট সম্পূর্ণরূপে একত্রিত! কর্মক্ষেত্রে বার্তাগুলি আপনার ক্লাউড রান পরিষেবাতে বার্তা পাঠাতে স্ল্যাককে ট্রিগার করবে, যা একটি সাধারণ অভিবাদনের সাথে প্রতিক্রিয়া জানাবে।
10. আপনার বট পরীক্ষা করুন
Kittenbot একটি সরাসরি বার্তা পাঠান:
"@কিটেনবট" প্রবেশ করে এবং তারপরে "তাদের আমন্ত্রণ জানান" ক্লিক করে আপনার চ্যানেলে বিড়ালছানা যোগ করুন:
এখন আপনার চ্যানেলের সবাই Kittenbot এর সাথে যোগাযোগ করতে পারে!
স্ল্যাকের প্রতিটি বার্তা একটি ইভেন্টকে ট্রিগার করে এবং আমাদের ক্লাউড রান পরিষেবাতে একটি HTTP POST বার্তা পাঠায়। আপনি যদি ক্লাউড রান পরিষেবা লগগুলি দেখেন, আপনি দেখতে পাবেন যে প্রতিটি বার্তা লগের একটি POST এন্ট্রির সাথে মিলে যায়৷
বিড়ালছানা প্রতিটি বার্তার উত্তর দেয় "মিও। 😺"।
11. বোনাস - আপনার বট আপডেট করুন
এই ঐচ্ছিক বিভাগে কয়েক মিনিট সময় নেওয়া উচিত। নির্দ্বিধায় সরাসরি ক্লিনআপ এ চলে যান।
কথোপকথনমূলক থ্রেড
আমরা বটকে শুধু "মিওউ" বলার চেয়ে আরও বেশি কিছু করতে চাই। কিন্তু আপনি কিভাবে ক্লাউড রানে চলমান কিছুর একটি নতুন সংস্করণ স্থাপন করবেন?
cloud-slack-bot/extra-credit
এ ডিরেক্টরি পরিবর্তন করুন:
cd ../extra-credit/
ক্লাউড শেল এডিটরে বর্তমান ফোল্ডারটি খুলুন:
cloudshell workspace .
বটকিট কথোপকথন পরিচালনা করার ক্ষমতা প্রদান করে। এইগুলির সাহায্যে, বট আরও তথ্যের অনুরোধ করতে পারে এবং এক শব্দের উত্তরের বাইরে বার্তাগুলিতে প্রতিক্রিয়া জানাতে পারে।
ডায়ালগ সংজ্ঞায়িত করুন
প্রথমত, ফাইলের শেষে কথোপকথনমূলক ফাংশনগুলি কীভাবে সংজ্ঞায়িত করা হয়েছে তা দেখুন:
// ...
const maxCats = 20;
const catEmojis = [
':smile_cat:',
':smiley_cat:',
':joy_cat:',
':heart_eyes_cat:',
':smirk_cat:',
':kissing_cat:',
':scream_cat:',
':crying_cat_face:',
':pouting_cat:',
':cat:',
':cat2:',
':leopard:',
':lion_face:',
':tiger:',
':tiger2:',
];
/**
* Function to concatenate cat emojis
* @param {number} numCats Number of cat emojis.
* @return {string} The string message of cat emojis.
*/
function makeCatMessage(numCats) {
let catMessage = '';
for (let i = 0; i < numCats; i++) {
// Append a random cat from the list
catMessage += catEmojis[Math.floor(Math.random() * catEmojis.length)];
}
return catMessage;
}
/**
* Function to create the kitten conversation
* @param {Object} controller The botkit controller.
* @return {Object} The BotkitConversation object.
*/
function createKittenDialog(controller) {
const convo = new BotkitConversation('kitten-delivery', controller);
convo.ask('Does someone need a kitten delivery?', [
{
pattern: 'yes',
handler: async (response, convo, bot) => {
await convo.gotoThread('yes_kittens');
},
},
{
pattern: 'no',
handler: async (response, convo, bot) => {
await convo.gotoThread('no_kittens');
},
},
{
default: true,
handler: async (response, convo, bot) => {
await convo.gotoThread('default');
},
},
]);
convo.addQuestion(
'How many would you like?',
[
{
pattern: '^[0-9]+?',
handler: async (response, convo, bot, message) => {
const numCats = parseInt(response);
if (numCats > maxCats) {
await convo.gotoThread('too_many');
} else {
convo.setVar('full_cat_message', makeCatMessage(numCats));
await convo.gotoThread('cat_message');
}
},
},
{
default: true,
handler: async (response, convo, bot, message) => {
if (response) {
await convo.gotoThread('ask_again');
} else {
// The response '0' is interpreted as null
await convo.gotoThread('zero_kittens');
}
},
},
],
'num_kittens',
'yes_kittens'
);
// If numCats is too large, jump to start of the yes_kittens thread
convo.addMessage(
'Sorry, {{vars.num_kittens}} is too many cats. Pick a smaller number.',
'too_many'
);
convo.addAction('yes_kittens', 'too_many');
// If response is not a number, jump to start of the yes_kittens thread
convo.addMessage("Sorry I didn't understand that", 'ask_again');
convo.addAction('yes_kittens', 'ask_again');
// If numCats is 0, send a dog instead
convo.addMessage(
{
text:
'Sorry to hear you want zero kittens. ' +
'Here is a dog, instead. :dog:',
attachments: [
{
fallback: 'Chihuahua Bubbles - https://youtu.be/s84dBopsIe4',
text: '<https://youtu.be/s84dBopsIe4|' + 'Chihuahua Bubbles>!',
},
],
},
'zero_kittens'
);
// Send cat message
convo.addMessage('{{vars.full_cat_message}}', 'cat_message');
convo.addMessage('Perhaps later.', 'no_kittens');
return convo;
}
এই নতুন কথোপকথন প্রতিক্রিয়াগুলির উপর ভিত্তি করে থ্রেডকে নির্দেশ করে। উদাহরণস্বরূপ, যদি ব্যবহারকারী বিড়ালছানা প্রশ্নের "না" উত্তর দেয়, তবে এটি "না_বিড়ালছানা" লেবেলযুক্ত বার্তায় চলে যায়, যা সেই কথোপকথনমূলক থ্রেডের শেষ।
কন্ট্রোলারে ডায়ালগ যোগ করা হচ্ছে
এখন যে কথোপকথনটি সংজ্ঞায়িত করা হয়েছে, দেখুন কিভাবে এটি কন্ট্রোলারে যুক্ত করবেন:
async function kittenbotInit() {
// ...
const controller = new Botkit({
webhook_uri: '/api/messages',
adapter: adapter,
});
// Add Kitten Dialog
const convo = createKittenDialog(controller);
controller.addDialog(convo);
// Controller is ready
controller.ready(() => {
// ...
});
}
ডায়ালগ ট্রিগার করুন
এখন যে ডায়ালগ কন্ট্রোলার ব্যবহারের জন্য উপলব্ধ, চ্যাটবট যখন "বিড়ালছানা", "বিড়ালছানা", "বিড়াল" বা "বিড়াল" শুনতে পায় তখন কীভাবে কথোপকথন শুরু হয় তা দেখুন:
// ...
controller.ready(() => {
controller.hears(
['hello', 'hi', 'hey'],
['message', 'direct_message'],
async (bot, message) => {
await bot.reply(message, 'Meow. :smile_cat:');
return;
}
);
// START: listen for cat emoji delivery
controller.hears(
['cat', 'cats', 'kitten', 'kittens'],
['message', 'direct_message'],
async (bot, message) => {
// Don't respond to self
if (message.bot_id !== message.user) {
await bot.startConversationInChannel(message.channel, message.user);
await bot.beginDialog('kitten-delivery');
return;
}
}
);
// END: listen for cat emoji delivery
// ...
});
// ...
অ্যাপটি আপডেট করুন
ক্লাউড রানে অ্যাপ্লিকেশনটি পুনরায় স্থাপন করুন:
gcloud run deploy kittenbot \ --source . \ --platform managed \ --region $REGION \ --set-env-vars PROJECT_ID=$PROJECT_ID \ --allow-unauthenticated
চেষ্টা করে দেখুন
অভিনন্দন! আপনি এইমাত্র ক্লাউড রানে চলমান একটি স্ল্যাক বট একটি নতুন সংস্করণে আপডেট করেছেন৷
স্ল্যাশ কমান্ড
আপনি যদি ব্যবহারকারীর সাথে কথোপকথন করতে না চান তবে কী করবেন? আপনি যদি একটি সাধারণ কমান্ড দিয়ে একটি অ্যাকশন ট্রিগার করতে পছন্দ করেন?
স্ল্যাক এই কার্যকারিতাটি স্ল্যাশ কমান্ডের মাধ্যমে অফার করে, যা ব্যবহারকারীদের বার্তা বাক্সে কমান্ডটি প্রবেশ করে আপনার অ্যাপ্লিকেশন আহ্বান করতে দেয়।
স্ল্যাক স্ল্যাশ কমান্ড সক্রিয় করুন
- আপনার অ্যাপস ম্যানেজমেন্ট পৃষ্ঠার বৈশিষ্ট্যের অধীনে স্ল্যাশ কমান্ড বিভাগে যান।
- নতুন কমান্ড তৈরি করুন ক্লিক করুন।
- আপনার kittenbot পরিষেবা URL দিয়ে একটি
/cats
কমান্ড কনফিগার করুন। ইভেন্ট এপিআই সক্ষম করতে আপনি যে এন্ডপয়েন্ট ব্যবহার করেছিলেন তা ব্যবহার করতে মনে রাখবেন! এটি আপনার URL, প্লাস'/api/messages'
।
- আপনার অ্যাপ এবং অনুমতি আপডেট করতে প্রম্পট অনুসরণ করুন।
আপনার কন্ট্রোলারে স্ল্যাশ কমান্ড যোগ করুন
দেখুন কিভাবে controller.ready ফাংশনের ভিতরে স্ল্যাশ কমান্ডের জন্য একটি হ্যান্ডলার যোগ করা হয়েছে:
// ...
// Controller is ready
controller.ready(() => {
// ...
// START: slash commands
controller.on('slash_command', async (bot, message) => {
const numCats = parseInt(message.text);
const response = makeCatMessage(numCats);
bot.httpBody({ text: response });
});
// END: slash commands
});
// ...
চেষ্টা করে দেখুন
স্ল্যাশ কমান্ড পাঠাতে /cats প্লাস একটি নম্বর লিখুন। যেমন: /cats 8
বটটি 8টি বিড়ালের সাথে প্রতিক্রিয়া জানাবে, শুধুমাত্র আপনার কাছে দৃশ্যমান:
12. পরিষ্কার করা
অভিনন্দন, আপনার কাছে এখন একটি স্ল্যাক বট ক্লাউড রানে চলছে৷ ব্যবহৃত সম্পদ কিছু পরিষ্কার করার জন্য সময় (খরচ বাঁচাতে এবং একটি ভাল ক্লাউড নাগরিক হতে)।
প্রকল্পটি মুছুন
আপনি সরাসরি ক্লাউড শেল থেকে সম্পূর্ণ প্রকল্পটি মুছতে পারেন:
gcloud projects delete $PROJECT_ID
বিকল্পভাবে, আপনি যদি একে একে বিভিন্ন সংস্থান মুছে ফেলতে পছন্দ করেন, তাহলে পরবর্তী বিভাগে যান।
স্থাপনা মুছুন
gcloud run services delete kittenbot --region $REGION
কমান্ড আউটপুট
Service [kittenbot] will be deleted. Do you want to continue (Y/n)? y Deleted service [kittenbot].
আপনার ক্লায়েন্ট সাইনিং গোপন মুছুন
gcloud secrets delete client-signing-secret
কমান্ড আউটপুট
You are about to destroy the secret [client-signing-secret] and its [1] version(s). This action cannot be reversed. Do you want to continue (Y/n)? y Deleted secret [client-signing-secret].
আপনার বট টোকেন গোপন মুছুন
gcloud secrets delete bot-token
কমান্ড আউটপুট
You are about to destroy the secret [bot-token] and its [1] version(s). This action cannot be reversed. Do you want to continue (Y/n)? y Deleted secret [bot-token].
স্টোরেজ বালতি মুছুন
প্রথমে, বালতি পথ পেতে Google ক্লাউড স্টোরেজ বালতি তালিকাভুক্ত করুন:
gsutil ls
কমান্ড আউটপুট
gs://[REGION.]artifacts.<PROJECT_ID>.appspot.com/ gs://<PROJECT_ID>_cloudbuild/
এখন, আর্টিফ্যাক্ট বালতি মুছে ফেলুন:
gsutil rm -r gs://[REGION.]artifacts.${PROJECT_ID}.appspot.com/
কমান্ড আউটপুট
Removing gs://[REGION.]artifacts.<PROJECT_ID>.appspot.com/...
অবশেষে, ক্লাউডবিল্ড বালতি মুছুন:
gsutil rm -r gs://${PROJECT_ID}_cloudbuild/
কমান্ড আউটপুট
Removing gs://<PROJECT_ID>_cloudbuild/...
13. অভিনন্দন!
আপনি এখন জানেন কিভাবে ক্লাউড রানে একটি স্ল্যাক বট চালাতে হয়!
আমরা শুধুমাত্র এই প্রযুক্তির উপরিভাগ স্ক্র্যাচ করেছি এবং আমরা আপনাকে আপনার নিজস্ব ক্লাউড রান স্থাপনার সাথে আরও অন্বেষণ করতে উত্সাহিত করি৷
আমরা কভার করেছি কি
- স্ল্যাকে একটি বট কাস্টম ইন্টিগ্রেশন তৈরি করা
- সিক্রেট ম্যানেজারের সাথে আপনার স্ল্যাক গোপনীয়তাগুলি সুরক্ষিত করা
- ক্লাউড রানে আপনার স্ল্যাক বট স্থাপন করা হচ্ছে
পরবর্তী পদক্ষেপ
- আরও ক্লাউড রান টিউটোরিয়াল সম্পূর্ণ করুন
আরও জানুন
- GitHub-এ অন্যান্য Google ক্লাউড স্ল্যাক ইন্টিগ্রেশন উদাহরণগুলি দেখুন।
- নিজের জন্য অন্যান্য Google ক্লাউড বৈশিষ্ট্যগুলি ব্যবহার করে দেখুন৷ আমাদের টিউটোরিয়াল দেখুন.