গুগল চ্যাট, ভার্টেক্স এআই, অ্যাপস স্ক্রিপ্ট এবং ব্যবহারকারী প্রমাণীকরণের মাধ্যমে ঘটনার প্রতিক্রিয়া জানান

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

ঘটনা হলো এমন একটি বিষয় যা সমাধানের জন্য একদল লোকের তাৎক্ষণিক মনোযোগের প্রয়োজন হয়। ঘটনার উদাহরণগুলো হলো:

  • কাস্টমার রিলেশনশিপ ম্যানেজমেন্ট (সিআরএম) প্ল্যাটফর্মে একটি জরুরি কেস তৈরি করা হয়, যার সমাধানের জন্য একটি সার্ভিস টিমের সম্মিলিত প্রচেষ্টা প্রয়োজন।
  • একটি সিস্টেম অফলাইন হয়ে গেলে, তা একদল সাইট রিলায়াবিলিটি ইঞ্জিনিয়ারকে (SRE) সতর্ক করে দেয়, যাতে তারা সম্মিলিতভাবে সেটিকে পুনরায় অনলাইন করার জন্য কাজ করতে পারে।
  • একটি উচ্চ মাত্রার ভূমিকম্প হয়, এবং জরুরি কর্মীদের তাদের প্রতিক্রিয়া সমন্বয় করতে হয়।

এই টিউটোরিয়ালের উদ্দেশ্যে, যখন কেউ একটি ওয়েব পেজ থেকে বোতামে ক্লিক করে কোনো ঘটনা রিপোর্ট করে, তখন ঘটনার সতর্কতা শুরু হয়। ওয়েব পেজটি ব্যবহারকারীদের কাছে ঘটনার প্রাথমিক তথ্য—যেমন শিরোনাম, বিবরণ এবং সাড়াদানকারীদের ইমেল ঠিকানা—প্রবেশ করতে বলে একটি ঘটনার অনুকরণ করে।

ইনসিডেন্ট ম্যানেজমেন্ট চ্যাট অ্যাপটি বাস্তবে দেখুন:

  • যে ওয়েবসাইটটি একটি ঘটনার সূত্রপাত করে।
    চিত্র ১. যে ওয়েবসাইটে কেউ কোনো ঘটনার প্রতিবেদন করতে পারেন।
  • ঘটনা চ্যাট স্পেস তৈরি হওয়ার বিজ্ঞপ্তি।
    চিত্র ২. ঘটনা চ্যাট স্পেস তৈরি হওয়ার বিজ্ঞপ্তি।
  • ঘটনা প্রতিক্রিয়া চ্যাট স্পেস।
    চিত্র ৩. ঘটনা প্রতিক্রিয়া চ্যাট স্পেস।
  • একটি দ্রুত নির্দেশের মাধ্যমে ঘটনাটির সমাধান করা।
    চিত্র ৪. একটি দ্রুত কমান্ডের মাধ্যমে ঘটনাটির সমাধান।
  • ঘটনা সমাধান ডায়ালগ।
    চিত্র ৫. ঘটনা সমাধান ডায়ালগ।
  • ঘটনা সমাধানের গুগল ডক্স ডকুমেন্টটি স্পেসে শেয়ার করা হয়েছে।
    চিত্র ৬। স্পেসে শেয়ার করা ঘটনা সমাধান সংক্রান্ত গুগল ডক্স ডকুমেন্ট।
  • এআই সারাংশ ঘটনা সমাধান গুগল ডক।
    চিত্র ৭. এআই দ্বারা সংঘটিত ঘটনার সারসংক্ষেপ সমাধান সংক্রান্ত গুগল ডক্স ডকুমেন্ট।

পূর্বশর্ত

আপনার প্রতিষ্ঠানের জন্য যদি এই পূর্বশর্তগুলোর কোনোটি চালু করার প্রয়োজন হয়, তাহলে আপনার Google Workspace অ্যাডমিনিস্ট্রেটরকে সেগুলো চালু করতে বলুন:

  • গুগল চ্যাট ব্যবহারের সুবিধাসহ একটি ব্যবসায়িক বা এন্টারপ্রাইজ গুগল ওয়ার্কস্পেস অ্যাকাউন্ট।
  • Google Workspace-এর জন্য ডিরেক্টরি (যোগাযোগ শেয়ারিং) চালু করতে হবে। ইনসিডেন্ট অ্যাপটি ইনসিডেন্ট রেসপন্ডারদের যোগাযোগের তথ্য, যেমন নাম এবং ইমেল ঠিকানা, খুঁজে বের করার জন্য ডিরেক্টরিটি ব্যবহার করে। ইনসিডেন্ট রেসপন্ডারদের অবশ্যই আপনার Google Workspace অর্গানাইজেশনে একটি Google Chat অ্যাকাউন্ট আছে এমন ব্যবহারকারী হতে হবে।

উদ্দেশ্য

  • এমন একটি চ্যাট অ্যাপ তৈরি করুন যা বিভিন্ন ঘটনার প্রতিক্রিয়া জানায়।
  • নিম্নলিখিত কাজগুলো করার মাধ্যমে ব্যবহারকারীদের বিভিন্ন ঘটনার প্রতিক্রিয়া জানাতে সাহায্য করুন:
    • ঘটনা মোকাবেলার জন্য স্থান তৈরি করা।
    • ঘটনা ও তার প্রতিক্রিয়ার সারসংক্ষেপ করে বার্তা পোস্ট করা।
    • ইন্টারেক্টিভ চ্যাট অ্যাপ ফিচারের মাধ্যমে সহযোগিতাকে সমর্থন করা।
  • ভার্টেক্স এআই-এর সাহায্যে কথোপকথন এবং সিদ্ধান্তের সারসংক্ষেপ তৈরি করুন।

স্থাপত্য

নিম্নলিখিত ডায়াগ্রামটিতে ইনসিডেন্ট রেসপন্স গুগল চ্যাট অ্যাপ দ্বারা ব্যবহৃত গুগল ওয়ার্কস্পেস এবং গুগল ক্লাউড রিসোর্সসমূহের আর্কিটেকচার দেখানো হয়েছে।

ইনসিডেন্ট রেসপন্স গুগল চ্যাট অ্যাপের আর্কিটেকচার

এই আর্কিটেকচারটি দেখায় যে, ইনসিডেন্ট রেসপন্স গুগল চ্যাট অ্যাপটি কীভাবে একটি ইনসিডেন্ট প্রসেস করে এবং তার সমাধান করে।

  1. একজন ব্যবহারকারী অ্যাপস স্ক্রিপ্টে হোস্ট করা একটি বাহ্যিক ওয়েবসাইট থেকে একটি ঘটনা শুরু করেন।

  2. ওয়েবসাইটটি অ্যাপস স্ক্রিপ্টে হোস্ট করা গুগল চ্যাট অ্যাপে একটি অ্যাসিঙ্ক্রোনাস HTTP অনুরোধ পাঠায়।

  3. ইনসিডেন্ট রেসপন্স গুগল চ্যাট অ্যাপ অনুরোধটি প্রসেস করে:

    1. অ্যাপস স্ক্রিপ্ট অ্যাডমিন এসডিকে সার্ভিসটি টিমের সদস্যদের তথ্য, যেমন ইউজার আইডি এবং ইমেল অ্যাড্রেস সংগ্রহ করে।

    2. অ্যাপস স্ক্রিপ্ট অ্যাডভান্সড চ্যাট সার্ভিস ব্যবহার করে চ্যাট এপিআই-তে একগুচ্ছ HTTP অনুরোধের মাধ্যমে, ইনসিডেন্ট রেসপন্স গুগল চ্যাট অ্যাপটি একটি ইনসিডেন্ট চ্যাট স্পেস তৈরি করে, সেটিকে টিমের সদস্যদের দিয়ে পূর্ণ করে এবং সেই স্পেসে একটি বার্তা পাঠায়।

  4. দলের সদস্যরা চ্যাট স্পেসে ঘটনাটি নিয়ে আলোচনা করেন।

  5. দলের একজন সদস্য ঘটনাটির সমাধান বোঝাতে একটি দ্রুত কমান্ড প্রয়োগ করেন।

    1. অ্যাপস স্ক্রিপ্ট অ্যাডভান্সড চ্যাট সার্ভিস ব্যবহার করে চ্যাট এপিআই-তে একটি HTTP কল করলে চ্যাট স্পেসের সমস্ত মেসেজ তালিকাভুক্ত হয়।

    2. ভার্টেক্স এআই তালিকাভুক্ত বার্তাগুলো গ্রহণ করে একটি সারসংক্ষেপ তৈরি করে।

    3. অ্যাপস স্ক্রিপ্ট DocumentApp সার্ভিসটি একটি ডকস ডকুমেন্ট তৈরি করে এবং সেই ডকুমেন্টে ভার্টেক্স এআই-এর সারাংশ যোগ করে।

    4. ইনসিডেন্ট রেসপন্স গুগল চ্যাট অ্যাপটি সামারি ডক্স ডকুমেন্টের একটি লিঙ্ক শেয়ার করে মেসেজ পাঠানোর জন্য চ্যাট এপিআই-কে কল করে।

পরিবেশ প্রস্তুত করুন

এই অংশে চ্যাট অ্যাপের জন্য কীভাবে একটি গুগল ক্লাউড প্রজেক্ট তৈরি ও কনফিগার করতে হয়, তা দেখানো হয়েছে।

একটি গুগল ক্লাউড প্রজেক্ট তৈরি করুন

গুগল এপিআই কনসোল

  1. Google API Console-এ, > IAM & Admin > Create a Project-এ যান।

    প্রজেক্ট তৈরি করতে যান

  2. 'প্রজেক্ট নেম' ফিল্ডে আপনার প্রজেক্টের জন্য একটি বর্ণনামূলক নাম লিখুন।

    ঐচ্ছিক: প্রজেক্ট আইডি সম্পাদনা করতে, 'সম্পাদনা' (Edit) বোতামে ক্লিক করুন। প্রজেক্ট তৈরি হয়ে গেলে তা আর পরিবর্তন করা যায় না, তাই এমন একটি আইডি বেছে নিন যা প্রজেক্টটির পুরো জীবনকাল জুড়ে আপনার প্রয়োজন মেটাবে।

  3. লোকেশন ফিল্ডে, আপনার প্রোজেক্টের জন্য সম্ভাব্য লোকেশনগুলো দেখতে ব্রাউজ-এ ক্লিক করুন। এরপর, সিলেক্ট-এ ক্লিক করুন।
  4. Create-এ ক্লিক করুন। Google API Console আপনাকে ড্যাশবোর্ড পৃষ্ঠায় নিয়ে যাবে এবং কয়েক মিনিটের মধ্যেই আপনার প্রজেক্টটি তৈরি হয়ে যাবে।

gcloud CLI

নিম্নলিখিত ডেভেলপমেন্ট এনভায়রনমেন্টগুলির মধ্যে যেকোনো একটিতে Google Cloud CLI ( gcloud ) অ্যাক্সেস করুন:

  • ক্লাউড শেল : আগে থেকে সেট আপ করা gcloud CLI সহ একটি অনলাইন টার্মিনাল ব্যবহার করতে, ক্লাউড শেল সক্রিয় করুন।
    ক্লাউড শেল সক্রিয় করুন
  • লোকাল শেল : স্থানীয় উন্নয়ন পরিবেশ ব্যবহার করতে, gcloud CLI ইনস্টলচালু করুন
    একটি ক্লাউড প্রজেক্ট তৈরি করতে, gcloud projects create কমান্ডটি ব্যবহার করুন:
    gcloud projects create PROJECT_ID
    আপনি যে প্রজেক্টটি তৈরি করতে চান, তার আইডি দিয়ে PROJECT_ID প্রতিস্থাপন করুন।

ক্লাউড প্রকল্পের জন্য বিলিং সক্ষম করুন

গুগল এপিআই কনসোল

  1. Google API কনসোলে, বিলিং- এ যান। মেনু > বিলিং > আমার প্রজেক্টস- ক্লিক করুন।

    আমার প্রোজেক্টগুলোর বিলিং-এ যান

  2. 'একটি সংস্থা নির্বাচন করুন' -এ, আপনার গুগল ক্লাউড প্রকল্পের সাথে যুক্ত সংস্থাটি বেছে নিন।
  3. প্রজেক্ট রো-তে, অ্যাকশনস মেনু ( ) খুলুন, চেঞ্জ বিলিং-এ ক্লিক করুন এবং ক্লাউড বিলিং অ্যাকাউন্টটি বেছে নিন।
  4. অ্যাকাউন্ট সেট করুন -এ ক্লিক করুন।

gcloud CLI

  1. উপলব্ধ বিলিং অ্যাকাউন্টগুলির তালিকা পেতে, চালান:
    gcloud billing accounts list
  2. একটি গুগল ক্লাউড প্রজেক্টের সাথে বিলিং অ্যাকাউন্ট লিঙ্ক করুন:
    gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID

    নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

    • PROJECT_ID হলো সেই ক্লাউড প্রজেক্টের প্রজেক্ট আইডি , যার জন্য আপনি বিলিং চালু করতে চান।
    • BILLING_ACCOUNT_ID হলো গুগল ক্লাউড প্রজেক্টের সাথে লিঙ্ক করার জন্য বিলিং অ্যাকাউন্ট আইডি

এপিআইগুলি সক্রিয় করুন

গুগল এপিআই কনসোল

  1. Google API কনসোলে Google Chat API, Google Docs API, Admin SDK API, এবং Vertex AI API সক্রিয় করুন।

    এপিআইগুলি সক্রিয় করুন

  2. আপনি সঠিক ক্লাউড প্রজেক্টে এপিআইগুলো সক্রিয় করছেন কিনা তা নিশ্চিত করুন, তারপর 'Next' বাটনে ক্লিক করুন।

  3. আপনি সঠিক API-গুলো সক্রিয় করছেন কিনা তা নিশ্চিত করুন, তারপর 'Enable'-এ ক্লিক করুন।

gcloud CLI

  1. প্রয়োজনে, gcloud config set project কমান্ড ব্যবহার করে আপনার তৈরি করা প্রজেক্টটিকে বর্তমান ক্লাউড প্রজেক্ট হিসেবে সেট করুন:

    gcloud config set project PROJECT_ID

    PROJECT_ID জায়গায় আপনার তৈরি করা ক্লাউড প্রজেক্টের প্রজেক্ট আইডিটি বসান।

  2. gcloud services enable কমান্ড ব্যবহার করে Google Chat API, Google Docs API, Admin SDK API, এবং Vertex AI API সক্রিয় করুন:

    gcloud services enable chat.googleapis.com docs.googleapis.com admin.googleapis.com aiplatform.googleapis.com

প্রমাণীকরণ এবং অনুমোদন সেট আপ করুন

প্রমাণীকরণ এবং অনুমোদন চ্যাট অ্যাপটিকে কোনো ঘটনার প্রতিক্রিয়া প্রক্রিয়া করার জন্য গুগল ওয়ার্কস্পেস এবং গুগল ক্লাউডের রিসোর্স অ্যাক্সেস করার সুযোগ দেয়।

এই টিউটোরিয়ালে, আপনি অ্যাপটি অভ্যন্তরীণভাবে প্রকাশ করবেন, তাই প্লেসহোল্ডার তথ্য ব্যবহার করা যেতে পারে। অ্যাপটি বাহ্যিকভাবে প্রকাশ করার আগে, সম্মতি স্ক্রিনের জন্য প্লেসহোল্ডার তথ্যগুলো আসল তথ্য দিয়ে প্রতিস্থাপন করুন।

  1. Google API কনসোলে, > Google Auth প্ল্যাটফর্ম > ব্র্যান্ডিং- এ যান।

    ব্র্যান্ডিং-এ যান

  2. আপনি যদি ইতিমধ্যেই Google Auth প্ল্যাটফর্মটি কনফিগার করে থাকেন, তাহলে আপনি Branding , Audience , এবং Data Access- এ নিম্নলিখিত OAuth Consent Screen সেটিংস কনফিগার করতে পারেন। যদি আপনি এমন কোনো বার্তা দেখতে পান যেখানে লেখা আছে ‘Google Auth প্ল্যাটফর্ম এখনও কনফিগার করা হয়নি’ , তাহলে Get Started-এ ক্লিক করুন:

    1. অ্যাপ ইনফরমেশন-এর অধীনে, অ্যাপ নেম-এর জায়গায় Incident Management with User Auth টাইপ করুন।
    2. ব্যবহারকারী সহায়তা ইমেল- এ, আপনার ইমেল ঠিকানা অথবা একটি উপযুক্ত গুগল গ্রুপ নির্বাচন করুন।
    3. পরবর্তী ধাপে যান।
    4. Audience-এর অধীনে, Internal নির্বাচন করুন। যদি আপনি Internal নির্বাচন করতে না পারেন, তাহলে External নির্বাচন করুন।
    5. পরবর্তী ধাপে যান।
    6. যোগাযোগের তথ্যের অধীনে, একটি ইমেল ঠিকানা লিখুন যেখানে আপনার প্রকল্পের যেকোনো পরিবর্তন সম্পর্কে আপনাকে জানানো যাবে।
    7. পরবর্তী ধাপে যান।
    8. Finish-এর অধীনে, Google API Services ব্যবহারকারীর ডেটা নীতি পর্যালোচনা করুন এবং যদি আপনি সম্মত হন, তাহলে I agree to the Google API Services: User Data Policy নির্বাচন করুন।
    9. চালিয়ে যান-এ ক্লিক করুন।
    10. তৈরি করুন- এ ক্লিক করুন।
    11. যদি আপনি ব্যবহারকারীর ধরন হিসেবে 'এক্সটার্নাল' নির্বাচন করে থাকেন, তাহলে পরীক্ষামূলক ব্যবহারকারী যোগ করুন:
      1. দর্শকবৃন্দে ক্লিক করুন।
      2. টেস্ট ইউজার্স-এর অধীনে, অ্যাড ইউজার্স-এ ক্লিক করুন।
      3. আপনার ইমেল ঠিকানা এবং অন্য কোনো অনুমোদিত পরীক্ষামূলক ব্যবহারকারীর তথ্য প্রবেশ করান, তারপর সেভ-এ ক্লিক করুন।
  3. ডেটা অ্যাক্সেস > স্কোপ যোগ বা অপসারণ-এ ক্লিক করুন। একটি প্যানেল প্রদর্শিত হবে, যেখানে আপনার গুগল ক্লাউড প্রজেক্টে সক্রিয় করা প্রতিটি এপিআই-এর স্কোপের একটি তালিকা থাকবে।

    1. ‘Manually add scopes’- এর অধীনে, নিম্নলিখিত স্কোপগুলি পেস্ট করুন:

      • https://www.googleapis.com/auth/chat.spaces.create
      • https://www.googleapis.com/auth/chat.memberships
      • https://www.googleapis.com/auth/chat.memberships.app
      • https://www.googleapis.com/auth/chat.messages
      • https://www.googleapis.com/auth/documents
      • https://www.googleapis.com/auth/admin.directory.user.readonly
      • https://www.googleapis.com/auth/script.external_request
      • https://www.googleapis.com/auth/userinfo.email
      • https://www.googleapis.com/auth/cloud-platform
    2. টেবিলে যোগ করুন-এ ক্লিক করুন।

    3. আপডেট-এ ক্লিক করুন।

    4. আপনার অ্যাপের জন্য প্রয়োজনীয় পরিধিগুলো নির্বাচন করার পর, ডেটা অ্যাক্সেস পৃষ্ঠায়, সেভ-এ ক্লিক করুন।

চ্যাট অ্যাপ তৈরি এবং স্থাপন করুন

পরবর্তী অংশে, আপনি একটি সম্পূর্ণ অ্যাপস স্ক্রিপ্ট প্রজেক্ট কপি ও আপডেট করবেন, যেটিতে আপনার চ্যাট অ্যাপের জন্য প্রয়োজনীয় সমস্ত অ্যাপ্লিকেশন কোড রয়েছে, তাই প্রতিটি ফাইল কপি ও পেস্ট করার প্রয়োজন নেই।

কিছু ফাংশনের নামের শেষে আন্ডারস্কোর থাকে, যেমন ChatApp.gs এর concatenateAllSpaceMessages_() । ব্রাউজারে খোলা হলে, এই আন্ডারস্কোরটি ইনসিডেন্ট ইনিশিয়ালাইজেশন ওয়েব পেজ থেকে ফাংশনটিকে আড়াল করে রাখে। আরও তথ্যের জন্য, প্রাইভেট ফাংশন দেখুন।

অ্যাপস স্ক্রিপ্ট দুই ধরনের ফাইল সমর্থন করে, .gs স্ক্রিপ্ট এবং .html ফাইল। এই সমর্থনটি মেনে চলার জন্য, একটি HTML ফাইলের মধ্যে অ্যাপের ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্ট <script /> ট্যাগের ভেতরে এবং এর CSS <style /> ট্যাগের ভেতরে অন্তর্ভুক্ত করা হয়।

চাইলে, আপনি গিটহাবে সম্পূর্ণ প্রজেক্টটি দেখতে পারেন।

গিটহাবে দেখুন

এখানে প্রতিটি ফাইলের একটি সংক্ষিপ্ত বিবরণ দেওয়া হলো:

Consts.gs

অন্যান্য কোড ফাইল দ্বারা ব্যবহৃত ধ্রুবকসমূহ সংজ্ঞায়িত করে, যার মধ্যে রয়েছে আপনার ক্লাউড প্রজেক্ট আইডি, ভার্টেক্স এআই লোকেশন আইডি, কোনো ইনসিডেন্ট বন্ধ করার কুইক কমান্ড আইডি এবং জেমিনি মডেল।

Consts.gs কোড দেখুন

apps-script/chat/incident-response-user-auth/Consts.gs
const PROJECT_ID = 'replace-with-your-project-id';
const VERTEX_AI_LOCATION_ID = 'us-central1';
const CLOSE_INCIDENT_COMMAND_ID = 1;
const MODEL_ID = 'gemini-2.5-flash-lite';
ChatApp.gs

মেসেজ, বাটন ক্লিক, অ্যাপ কমান্ড এবং ডায়ালগ সহ চ্যাট ইন্টারঅ্যাকশন ইভেন্টগুলো পরিচালনা করে। ইনসিডেন্ট সমাধানের বিবরণ সংগ্রহের জন্য Close incident কুইক' কমান্ডের জবাবে একটি ডায়ালগ খোলে। চ্যাট এপিআই-তে spaces.messages.list মেথড কল করে স্পেসের মেসেজগুলো পড়ে। অ্যাপস স্ক্রিপ্টে অ্যাডমিন এসডিকে ডিরেক্টরি সার্ভিস ব্যবহার করে ইউজার আইডি সংগ্রহ করে।

ChatApp.gs কোড দেখুন

apps-script/chat/incident-response-user-auth/ChatApp.gs
/**
 * Responds to a MESSAGE event in Google Chat.
 * 
 * It always responds with a simple "Hello" text message.
 *
 * @param {Object} event the event object from Google Chat
 */
function onMessage(event) {
  return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
    text: "Hello from Incident Response app!"
  }}}}};
}

/**
 * Responds to an APP_COMMAND event in Google Chat.
 *
 * @param {Object} event the event object from Google Chat
 */
function onAppCommand(event) {
  if (event.chat.appCommandPayload.appCommandMetadata.appCommandId != CLOSE_INCIDENT_COMMAND_ID) {
    return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
      text: "Command not recognized. Use the quick command `Close incident` to close the incident managed by this space."
    }}}}};
  }
  return { action: { navigations: [{ pushCard: { sections: [{
    header: "Close Incident",
    widgets: [{
      textInput: {
        label: "Please describe the incident resolution",
        type: "MULTIPLE_LINE",
        name: "description"
      }
    }, {
      buttonList: { buttons: [{
        text: "Close Incident",
        onClick: { action: { function: "closeIncident" }}
      }]}
    }]
  }]}}]}};
}

/**
 * Responds to a BUTTON_CLICKED event in Google Chat from Close Incident dialog.
 *
 * @param {Object} event the event object from Google Chat
 */
function closeIncident(event) {
  if (event.chat.buttonClickedPayload.isDialogEvent) {
    if (event.chat.buttonClickedPayload.dialogEventType == 'SUBMIT_DIALOG') {
      return processSubmitDialog_(event);
    }
    return { action: { navigations: [{ endNavigation: {
      action: "CLOSE_DIALOG" }
    }]}};
  }
}

/**
 * Responds to a BUTTON_CLICKED event in Google Chat from Close Incident dialog submission.
 *
 * It creates a Doc with a summary of the incident information and posts a message
 * to the space with a link to the Doc.
 *
 * @param {Object} event the event object from Google Chat
 */
function processSubmitDialog_(event) {
  const resolution = event.commonEventObject.formInputs.description.stringInputs.value[0];
  const space = event.chat.buttonClickedPayload.space;
  const chatHistory = concatenateAllSpaceMessages_(space.name);
  const chatSummary = summarizeChatHistory_(chatHistory);
  const docUrl = createDoc_(space.displayName, resolution, chatHistory, chatSummary);
  return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
    text: `Incident closed with the following resolution: ${resolution}\n\nHere is the automatically generated post-mortem:\n${docUrl}`
  }}}}};
}

/**
 * Lists all the messages in the Chat space, then concatenate all of them into
 * a single text containing the full Chat history.
 *
 * For simplicity for this demo, it only fetches the first 100 messages.
 *
 * @return {string} a text containing all the messages in the space in the format:
 *          Sender's name: Message
 */
function concatenateAllSpaceMessages_(spaceName) {
  // Call Chat API method spaces.messages.list
  const response = Chat.Spaces.Messages.list(spaceName, { 'pageSize': 100 });
  const messages = response.messages;
  // Fetch the display names of the message senders and returns a text
  // concatenating all the messages.
  let userMap = new Map();
  return messages
    .map(message => `${getUserDisplayName_(userMap, message.sender.name)}: ${message.text}`)
    .join('\n');
}

/**
 * Obtains the display name of a user by using the Admin Directory API.
 *
 * The fetched display name is cached in the provided map, so we only call the API
 * once per user.
 *
 * If the user does not have a display name, then the full name is used.
 *
 * @param {Map} userMap a map containing the display names previously fetched
 * @param {string} userName the resource name of the user
 * @return {string} the user's display name
 */
function getUserDisplayName_(userMap, userName) {
  if (userMap.has(userName)) {
    return userMap.get(userName);
  }
  let displayName = 'Unknown User';
  try {
    const user = AdminDirectory.Users.get(
      userName.replace("users/", ""),
      { projection: 'BASIC', viewType: 'domain_public' });
    displayName = user.name.displayName ? user.name.displayName : user.name.fullName;
  } catch (e) {
    // Ignore error if the API call fails (for example, because it's an
    // out-of-domain user or Chat app) and just use 'Unknown User'.
  }
  userMap.set(userName, displayName);
  return displayName;
}
ChatSpaceCreator.gs

ব্যবহারকারীরা ঘটনা সূচনা ওয়েব পেজে যে ফর্ম ডেটা প্রবেশ করান, তা গ্রহণ করে এবং সেই ডেটা ব্যবহার করে একটি চ্যাট স্পেস তৈরি ও পূরণ করার মাধ্যমে ঘটনাটি সম্পর্কে একটি বার্তা পোস্ট করে।

ChatSpaceCreator.gs কোড দেখুন

apps-script/chat/incident-response-user-auth/ChatSpaceCreator.gs
/**
 * Handles an incident by creating a chat space with the provided title and members, and posting a message.
 * All the actions are done using user credentials.
 *
 * @param {Object} formData - The data submitted by the user. It should contain the fields:
 *                           - title: The display name of the chat space.
 *                           - description: The description of the incident.
 *                           - users: A comma-separated string of user emails to be added to the space.
 * @return {string} The resource name of the new space.
 */
function handleIncident(formData) {
  const users = formData.users.trim().length > 0 ? formData.users.split(',') : [];
  const spaceName = setUpSpace_(formData.title, users);
  addAppToSpace_(spaceName);
  createMessage_(spaceName, formData.description);
  return spaceName;
}

/**
 * Creates a chat space.
 *
 * @return {string} the resource name of the new space.
 */
function setUpSpace_(displayName, users) {
  const memberships = users.map(email => ({
    member: {
      name: `users/${email}`,
      type: "HUMAN"
    }
  }));
  const request = {
    space: {
      displayName: displayName,
      spaceType: "SPACE"
    },
    memberships: memberships
  };
  // Call Chat API method spaces.setup
  const space = Chat.Spaces.setup(request);
  return space.name;
}

/**
 * Adds this Chat app to the space.
 *
 * @return {string} the resource name of the new membership.
 */
function addAppToSpace_(spaceName) {
  const request = {
    member: {
      name: "users/app",
      type: "BOT"
    }
  };
  // Call Chat API method spaces.members.create
  const membership = Chat.Spaces.Members.create(request, spaceName);
  return membership.name;
}

/**
 * Creates a chat message.
 *
 * @param {string} spaceName - The resource name of the space.
 * @param {string} message - The text to be posted.
 * @return {string} the resource name of the new message.
 */
function createMessage_(spaceName, message) {
  const request = {
    text: message
  };
  // Call Chat API method spaces.messages.create
  const result = Chat.Spaces.Messages.create(request, spaceName);
  return result.name;
}
DocsApi.gs

ব্যবহারকারীর গুগল ড্রাইভে একটি গুগল ডক্স ডকুমেন্ট তৈরি করার জন্য গুগল ডক্স এপিআই-কে কল করে এবং VertexAiApi.gs এ তৈরি করা ঘটনার তথ্যের একটি সারসংক্ষেপ সেই ডকুমেন্টে লিখে দেয়।

DocsApi.gs কোড দেখুন

apps-script/chat/incident-response-user-auth/DocsApi.gs
/**
 * Creates a Doc in the user's Google Drive and writes a summary of the incident information to it.
 *
 * @param {string} title The title of the incident
 * @param {string} resolution Incident resolution described by the user
 * @param {string} chatHistory The whole Chat history be included in the document
 * @param {string} chatSummary A summary of the Chat conversation to be included in the document
 * @return {string} the URL of the created Doc
 */
function createDoc_(title, resolution, chatHistory, chatSummary) {
  let doc = DocumentApp.create(title);
  let body = doc.getBody();
  body.appendParagraph(`Post-Mortem: ${title}`).setHeading(DocumentApp.ParagraphHeading.TITLE);
  body.appendParagraph("Resolution").setHeading(DocumentApp.ParagraphHeading.HEADING1);
  body.appendParagraph(resolution);
  body.appendParagraph("Summary of the conversation").setHeading(DocumentApp.ParagraphHeading.HEADING1);
  body.appendParagraph(chatSummary);
  body.appendParagraph("Full Chat history").setHeading(DocumentApp.ParagraphHeading.HEADING1);
  body.appendParagraph(chatHistory);
  return doc.getUrl();
}
VertexAiApi.gs

ভার্টেক্স এআই ব্যবহার করে চ্যাট স্পেসের কথোপকথনের সারসংক্ষেপ তৈরি করা হয়। এই সারসংক্ষেপটি DocsAPI.gs এ বিশেষভাবে তৈরি একটি ডকুমেন্টে পোস্ট করা হয়।

VertexAiApi.gs কোড দেখুন

apps-script/chat/incident-response-user-auth/VertexAiApi.gs
/**
 * Summarizes a Chat conversation using the Vertex AI text prediction API.
 *
 * @param {string} chatHistory The Chat history that will be summarized.
 * @return {string} The content from the text prediction response.
 */
function summarizeChatHistory_(chatHistory) {
  const API_ENDPOINT = `https://${VERTEX_AI_LOCATION_ID}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${VERTEX_AI_LOCATION_ID}/publishers/google/models/${MODEL_ID}:generateContent`;
  const prompt =
    "Summarize the following conversation between Engineers resolving an incident"
      + " in a few sentences. Use only the information from the conversation.\n\n"
      + chatHistory;
  // Get the access token.
  const accessToken = ScriptApp.getOAuthToken();

  const headers = {
    'Authorization': 'Bearer ' + accessToken,
    'Content-Type': 'application/json',
  };
  const payload = {
    'contents': {
      'role': 'user',
      'parts' : [
        {
          'text': prompt
        }
      ]
    }
  }
  const options = {
    'method': 'post',
    'headers': headers,
    'payload': JSON.stringify(payload),
    'muteHttpExceptions': true,
  };
  try {
    const response = UrlFetchApp.fetch(API_ENDPOINT, options);
    const responseCode = response.getResponseCode();
    const responseText = response.getContentText();

    if (responseCode === 200) {
      const jsonResponse = JSON.parse(responseText);
      console.log(jsonResponse)
      if (jsonResponse.candidates && jsonResponse.candidates.length > 0) {
        return jsonResponse.candidates[0].content.parts[0].text; // Access the summarized text
      } else {
        return "No summary found in response.";
      }

    } else {
      console.error("Vertex AI API Error:", responseCode, responseText);
      return `Error: ${responseCode} - ${responseText}`;
    }
  } catch (e) {
    console.error("UrlFetchApp Error:", e);
    return "Error: " + e.toString();
  }
}
WebController.gs

ঘটনা প্রারম্ভিককরণ ওয়েবসাইটটি পরিবেশন করে।

WebController.gs কোড দেখুন

apps-script/chat/incident-response-user-auth/WebController.gs
/**
 * Serves the web page from Index.html.
 */
function doGet() {
  return HtmlService
    .createTemplateFromFile('Index')
    .evaluate();
}

/**
 * Serves the web content from the specified filename.
 */
function include(filename) {
  return HtmlService
    .createHtmlOutputFromFile(filename)
    .getContent();
}

/**
 * Returns the email address of the user running the script.
 */
function getUserEmail() {
  return Session.getActiveUser().getEmail();
}
Index.html

ইনসিডেন্ট ইনিশিয়ালাইজেশন ওয়েবসাইটটি যে HTML কোড দিয়ে গঠিত।

Index.html কোড দেখুন

apps-script/chat/incident-response-user-auth/Index.html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <link href='https://fonts.googleapis.com/css?family=Roboto' rel='stylesheet'>
    <?!= include('Stylesheet'); ?>
  </head>
  <body>
    <div class="container">
      <div class="content">
        <h1>Incident Manager</h1>
        <form id="incident-form" onsubmit="handleFormSubmit(this)">
          <div id="form">
            <p>
              <label for="title">Incident title</label><br/>
              <input type="text" name="title" id="title" />
            </p>
            <p>
              <label for="users">Incident responders</label><br/>
              <small>
                Please enter a comma-separated list of email addresses of the users
                that should be added to the space.
                Do not include <?= getUserEmail() ?> as it will be added automatically.
              </small><br/>
              <input type="text" name="users" id="users" />
            </p>
            <p>
              <label for="description">Initial message</label></br>
              <small>This message will be posted after the space is created.</small><br/>
              <textarea name="description" id="description"></textarea>
            </p>
            <p class="text-center">
              <input type="submit" value="CREATE CHAT SPACE" />
            </p>
          </div>
          <div id="output" class="hidden"></div>
          <div id="clear" class="hidden">
            <input type="reset" value="CREATE ANOTHER INCIDENT" onclick="onReset()" />
          </div>
        </form>
      </div>
    </div>
    <?!= include('JavaScript'); ?>
  </body>
</html>
JavaScript.html

ইনসিডেন্ট ইনিশিয়ালাইজেশন ওয়েবসাইটের জন্য ফর্মের সাবমিট, ত্রুটি এবং ক্লিয়ার সহ বিভিন্ন আচরণ পরিচালনা করে। এটি WebController.gs এর কাস্টম include ফাংশনের মাধ্যমে Index.html এ অন্তর্ভুক্ত করা হয়েছে।

JavaScript.html কোড দেখুন

apps-script/chat/incident-response-user-auth/JavaScript.html
<script>
  var formDiv = document.getElementById('form');
  var outputDiv = document.getElementById('output');
  var clearDiv = document.getElementById('clear');

  function handleFormSubmit(formObject) {
    event.preventDefault();
    outputDiv.innerHTML = 'Please wait while we create the space...';
    hide(formDiv);
    show(outputDiv);
    google.script.run
      .withSuccessHandler(updateOutput)
      .withFailureHandler(onFailure)
      .handleIncident(formObject);
  }

  function updateOutput(response) {
    var spaceId = response.replace('spaces/', '');
    outputDiv.innerHTML =
      '<p>Space created!</p><p><a href="https://mail.google.com/chat/#chat/space/'
        + spaceId
        + '" target="_blank">Open space</a></p>';
    show(outputDiv);
    show(clearDiv);
  }

  function onFailure(error) {
    outputDiv.innerHTML = 'ERROR: ' + error.message;
    outputDiv.classList.add('error');
    show(outputDiv);
    show(clearDiv);
  }

  function onReset() {
    outputDiv.innerHTML = '';
    outputDiv.classList.remove('error');
    show(formDiv);
    hide(outputDiv);
    hide(clearDiv);
  }

  function hide(element) {
    element.classList.add('hidden');
  }

  function show(element) {
    element.classList.remove('hidden');
  }
</script>
Stylesheet.html

ইনসিডেন্ট ইনিশিয়ালাইজেশন ওয়েবসাইটের CSS। এটি WebController.gs এর কাস্টম include ফাংশনের মাধ্যমে Index.html এ অন্তর্ভুক্ত করা হয়েছে।

Stylesheet.html কোড দেখুন

apps-script/chat/incident-response-user-auth/Stylesheet.html
<style>
  * {
    box-sizing: border-box;
  }
  body {
    font-family: Roboto, Arial, Helvetica, sans-serif;
  }
  div.container {
    display: flex;
    justify-content: center;
    align-items: center;
    position: absolute;
    top: 0; bottom: 0; left: 0; right: 0;
  }
  div.content {
    width: 80%;
    max-width: 1000px;
    padding: 1rem;
    border: 1px solid #999;
    border-radius: 0.25rem;
    box-shadow: 0 2px 2px 0 rgba(66, 66, 66, 0.08), 0 2px 4px 2px rgba(66, 66, 66, 0.16);
  }
  h1 {
    text-align: center;
    padding-bottom: 1rem;
    margin: 0 -1rem 1rem -1rem;
    border-bottom: 1px solid #999;
  }
 #output {
    text-align: center;
    min-height: 250px;
  }
  div#clear {
    text-align: center;
    padding-top: 1rem;
    margin: 1rem -1rem 0 -1rem;
    border-top: 1px solid #999;
  }
  input[type=text], textarea {
    width: 100%;
    padding: 1rem 0.5rem;
    margin: 0.5rem 0;
    border: 0;
    border-bottom: 1px solid #999;
    background-color: #f0f0f0;
  }
  textarea {
    height: 5rem;
  }
  small {
    color: #999;
  }
  input[type=submit], input[type=reset] {
    padding: 1rem;
    border: none;
    background-color: #6200ee;
    color: #fff;
    border-radius: 0.25rem;
    width: 25%;
  }
  .hidden {
    display: none;
  }
  .text-center {
    text-align: center;
  }
  .error {
    color: red;
  }
</style>

আপনার ক্লাউড প্রজেক্ট নম্বর এবং আইডি খুঁজুন

  1. গুগল এপিআই কনসোলে আপনার ক্লাউড প্রজেক্টে যান।

    গুগল এপিআই কনসোলে যান

  2. সেটিংস এবং > প্রজেক্ট সেটিংস-এ ক্লিক করুন।

  3. প্রজেক্ট নম্বর এবং প্রজেক্ট আইডি ফিল্ডের মানগুলো লিখে রাখুন। পরবর্তী বিভাগগুলোতে আপনি এগুলো ব্যবহার করবেন।

অ্যাপস স্ক্রিপ্ট প্রজেক্টটি তৈরি করুন

একটি অ্যাপস স্ক্রিপ্ট প্রজেক্ট তৈরি করতে এবং এটিকে আপনার ক্লাউড প্রজেক্টের সাথে সংযুক্ত করতে:

  1. ইউজার অথোরাইজেশন অ্যাপস স্ক্রিপ্ট প্রজেক্ট সহ ইনসিডেন্ট ম্যানেজমেন্ট চ্যাট অ্যাপটি খুলতে নিম্নলিখিত বোতামটি ক্লিক করুন।
    প্রকল্পটি খুলুন
  2. Overview-তে ক্লিক করুন।
  3. ওভারভিউ পৃষ্ঠায়, ক্লিক করুন অনুলিপি তৈরির আইকন একটি অনুলিপি তৈরি করুন
  4. আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্টের কপিটির নামকরণ করুন:

    1. ব্যবহারকারীর প্রমাণীকরণ সহ ইনসিডেন্ট ম্যানেজমেন্ট চ্যাট অ্যাপের একটি কপিতে ক্লিক করুন।

    2. প্রজেক্টের শিরোনামে , Incident Management Chat app with User Auth টাইপ করুন।

    3. রিনেম-এ ক্লিক করুন।

  5. আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্টের কপিতে, Consts.gs ফাইলে যান এবং PROJECT_ID এর জায়গায় আপনার ক্লাউড প্রজেক্টের আইডি সেট করুন।

অ্যাপস স্ক্রিপ্ট প্রজেক্টের ক্লাউড প্রজেক্ট সেট করুন

  1. আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্টে ক্লিক করুন প্রজেক্ট সেটিংসের জন্য আইকন প্রকল্প সেটিংস
  2. Google Cloud Platform (GCP) Project- এর অধীনে, Change project-এ ক্লিক করুন।
  3. GCP প্রজেক্ট নম্বরের ক্ষেত্রে, আপনার ক্লাউড প্রজেক্টের নম্বরটি পেস্ট করুন।
  4. 'সেট প্রজেক্ট'-এ ক্লিক করুন। ক্লাউড প্রজেক্ট এবং অ্যাপস স্ক্রিপ্ট প্রজেক্ট এখন সংযুক্ত হয়েছে।

একটি অ্যাপস স্ক্রিপ্ট টেস্ট ডিপ্লয়মেন্ট তৈরি করুন

এখন যেহেতু সমস্ত কোড ঠিকঠাকভাবে বসানো হয়ে গেছে, অ্যাপস স্ক্রিপ্ট প্রজেক্টটি ডিপ্লয় করুন। গুগল ক্লাউডে চ্যাট অ্যাপটি কনফিগার করার সময় আপনি ডিপ্লয়মেন্ট আইডিটি ব্যবহার করবেন।

  1. অ্যাপস স্ক্রিপ্টে, ইনসিডেন্ট রেসপন্স অ্যাপের প্রজেক্টটি খুলুন।

    অ্যাপস স্ক্রিপ্টে যান

  2. Deploy > Test deployments-এ ক্লিক করুন।

  3. যদি Google Workspace Add-on এবং Web app আগে থেকে নির্বাচিত না থাকে, তাহলে Select type-এর পাশে থাকা deployment types-এ ক্লিক করুন। প্রজেক্ট সেটিংসের জন্য আইকন এবং গুগল ওয়ার্কস্পেস অ্যাড-অনওয়েব অ্যাপ নির্বাচন করুন।

  4. অ্যাপস স্ক্রিপ্ট ওয়েব অ্যাপটির জন্য একটি ডেপ্লয়মেন্ট আইডি এবং একটি ইউআরএল প্রদান করে।

  5. পরবর্তীতে কোনো ইনসিডেন্ট শুরু করার সময় ব্যবহারের জন্য ওয়েব অ্যাপের URL-টি লিখে রাখুন। Deployment ID- টি কপি করুন। Google API Console-এ চ্যাট অ্যাপ কনফিগার করার সময় আপনি এই ID-টি ব্যবহার করবেন।

  6. সম্পন্ন ক্লিক করুন।

গুগল এপিআই কনসোলে চ্যাট অ্যাপটি কনফিগার করুন।

এই বিভাগে দেখানো হয়েছে কীভাবে আপনার চ্যাট অ্যাপ সম্পর্কিত তথ্য দিয়ে গুগল এপিআই কনসোলে গুগল চ্যাট এপিআই কনফিগার করতে হয়, যার মধ্যে আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্ট থেকে সদ্য তৈরি করা ডিপ্লয়মেন্টের আইডি-ও অন্তর্ভুক্ত থাকবে।

  1. Google API কনসোলে, মেনু এপিআই ও পরিষেবা > সক্রিয় এপিআই ও পরিষেবা > গুগল চ্যাট এপিআই > কনফিগারেশন- এ ক্লিক করুন

    চ্যাট এপিআই কনফিগারেশনে যান

  2. অ্যাপের নামে , Incident Management with User Auth টাইপ করুন।

  3. Avatar URL-https://developers.google.com/chat/images/quickstart-app-avatar.png টাইপ করুন।

  4. Description- এ, Responds to incidents টাইপ করুন।

  5. ইন্টারেক্টিভ ফিচার সক্ষম করুন টগলটি অন অবস্থানে ক্লিক করুন।

  6. Functionality-এর অধীনে, Join spaces and group conversations নির্বাচন করুন।

  7. সংযোগ সেটিংস-এর অধীনে, অ্যাপস স্ক্রিপ্ট নির্বাচন করুন।

  8. Deployment ID- এর জায়গায়, অ্যাপস স্ক্রিপ্ট প্রজেক্ট ডিপ্লয়মেন্ট থেকে আগে কপি করা অ্যাপস স্ক্রিপ্ট ডিপ্লয়মেন্ট আইডি-টি পেস্ট করুন।

  9. একটি দ্রুত কমান্ড নিবন্ধন করুন যা সম্পূর্ণরূপে বাস্তবায়িত চ্যাট অ্যাপটি ব্যবহার করে:

    1. Commands-এর অধীনে, Add a command-এ ক্লিক করুন।

    2. কমান্ড আইডিতে 1 টাইপ করুন।

    3. বিবরণে , Closes the incident being discussed in the space.

    4. কমান্ড টাইপ-এর অধীনে, কুইক কমান্ড নির্বাচন করুন।

    5. কুইক কমান্ড নেম- এ, Close incident টাইপ করুন।

    6. ডায়ালগ নির্বাচন করুন।

    7. Done-এ ক্লিক করুন। কমান্ডটি নিবন্ধিত এবং তালিকাভুক্ত হয়েছে।

  10. ‘Visibility’-এর অধীনে, ‘Make this Chat app available to specific people and groups in Your Workspace Domain’ নির্বাচন করুন এবং আপনার ইমেল ঠিকানা লিখুন।

  11. লগস-এর অধীনে, ত্রুটি লগ করার বিকল্পটি লগিং-এ নির্বাচন করুন।

  12. সেভ-এ ক্লিক করুন। একটি কনফিগারেশন সেভ হওয়ার মেসেজ দেখা যাবে, যার মানে অ্যাপটি পরীক্ষার জন্য প্রস্তুত।

চ্যাট অ্যাপটি পরীক্ষা করুন

ইনসিডেন্ট ম্যানেজমেন্ট চ্যাট অ্যাপটি পরীক্ষা করার জন্য, ওয়েব পেজ থেকে একটি ইনসিডেন্ট শুরু করুন এবং যাচাই করুন যে চ্যাট অ্যাপটি প্রত্যাশিতভাবে কাজ করছে:

  1. অ্যাপস স্ক্রিপ্ট ডিপ্লয়মেন্ট ওয়েব অ্যাপের ইউআরএল-এ যান।

  2. যখন অ্যাপস স্ক্রিপ্ট আপনার ডেটা অ্যাক্সেস করার অনুমতি চাইবে, তখন ‘Review permissions’- এ ক্লিক করুন, আপনার Google Workspace ডোমেইনে একটি উপযুক্ত Google অ্যাকাউন্ট দিয়ে সাইন ইন করুন এবং ‘Allow’-এ ক্লিক করুন।

  3. ইনসিডেন্ট ইনিশিয়ালাইজেশন ওয়েব পেজটি খোলে। পরীক্ষার তথ্য প্রবেশ করান:

    1. ঘটনার শিরোনামে , The First Incident টাইপ করুন।
    2. ঐচ্ছিকভাবে, 'ইনসিডেন্ট রেসপন্ডার' অংশে আপনার সহকর্মী ইনসিডেন্ট রেসপন্ডারদের ইমেল ঠিকানা লিখুন। তাদের অবশ্যই আপনার গুগল ওয়ার্কস্পেস অর্গানাইজেশনের গুগল চ্যাট অ্যাকাউন্টধারী ব্যবহারকারী হতে হবে, অন্যথায় স্পেস তৈরি করা যাবে না। আপনার নিজের ইমেল ঠিকানা লিখবেন না, কারণ এটি স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত হয়ে যায়।
    3. প্রাথমিক বার্তায় , Testing the incident management Chat app.
  4. চ্যাট স্পেস তৈরি করুন- এ ক্লিক করুন। একটি creating space বার্তা প্রদর্শিত হবে।

  5. স্পেসটি তৈরি হয়ে গেলে, ‘ Space created! ’ বার্তাটি দেখা যায়। ‘ওপেন স্পেস’- এ ক্লিক করলে, চ্যাটের মধ্যে স্পেসটি একটি নতুন ট্যাবে খুলে যাবে।

  6. ঐচ্ছিকভাবে, আপনি এবং অন্যান্য ঘটনা মোকাবিলাকারীরা এই পরিসরে বার্তা পাঠাতে পারেন। অ্যাপটি ভার্টেক্স এআই ব্যবহার করে এই বার্তাগুলোর সারসংক্ষেপ করে এবং একটি পূর্ববর্তী নথি শেয়ার করে।

  7. ইনসিডেন্ট রেসপন্স শেষ করতে এবং রেজোলিউশন প্রক্রিয়া শুরু করতে, চ্যাট স্পেসে ‘ Close incident কুইক কমান্ডটি চালু করুন। একটি ইনসিডেন্ট ম্যানেজমেন্ট ডায়ালগ বক্স খুলবে।

  8. ‘Close incident’- এ, ঘটনাটির সমাধানের জন্য একটি বিবরণ লিখুন, যেমন Test complete ’।

  9. ইনসিডেন্ট বন্ধ করতে ক্লিক করুন।

ইনসিডেন্ট ম্যানেজমেন্ট অ্যাপটি স্পেসের মেসেজগুলো তালিকাভুক্ত করে, ভার্টেক্স এআই (Vertex AI) দিয়ে সেগুলোর সারসংক্ষেপ তৈরি করে, সেই সারসংক্ষেপটি একটি গুগল ডক্স (Google Docs) ডকুমেন্টে পেস্ট করে এবং ডকুমেন্টটি স্পেসে শেয়ার করে।

পরিষ্কার করা

এই টিউটোরিয়ালে ব্যবহৃত রিসোর্সগুলোর জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে কোনো চার্জ হওয়া এড়াতে, আমরা আপনাকে ক্লাউড প্রজেক্টটি ডিলিট করে দেওয়ার পরামর্শ দিচ্ছি।

  1. Google API Console-এ, Manage resources পেজে যান। Menu > IAM & Admin > Manage Resources-এ করুন।

    রিসোর্স ম্যানেজারে যান

  2. প্রজেক্ট তালিকা থেকে আপনি যে প্রজেক্টটি মুছতে চান সেটি নির্বাচন করুন এবং তারপর 'মুছে ফেলুন বোতামে ক্লিক করুন।
  3. ডায়ালগ বক্সে প্রজেক্ট আইডি টাইপ করুন এবং তারপর প্রজেক্টটি মুছে ফেলার জন্য 'শাট ডাউন'-এ ক্লিক করুন।