Google Chat, Vertex AI, এবং Apps Script-এর মাধ্যমে ঘটনার প্রতিক্রিয়া জানান

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

এই টিউটোরিয়ালটি https://www.googleapis.com/auth/chat.app.* দিয়ে শুরু হওয়া অনুমোদনের স্কোপ ব্যবহার করে। চ্যাট অ্যাপটি এই স্কোপগুলি ব্যবহার করার জন্য, আপনাকে এককালীন প্রশাসকের অনুমোদন নিতে হবে।

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

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

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

ঘটনা ব্যবস্থাপনা চ্যাট অ্যাপটি কার্যকরভাবে দেখুন:

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

পূর্বশর্ত

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

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

উদ্দেশ্য

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

স্থাপত্য

নিম্নলিখিত চিত্রটি Google Workspace এবং Google Cloud রিসোর্সের আর্কিটেকচার দেখায় যা Google Chat অ্যাপের ইনসিডেন্ট রেসপন্স দ্বারা ব্যবহৃত হয়।

ঘটনার প্রতিক্রিয়ার স্থাপত্য Google Chat অ্যাপ

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

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

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

  3. ঘটনার প্রতিক্রিয়া গুগল চ্যাট অ্যাপ অনুরোধটি প্রক্রিয়া করে:

    1. অ্যাপস স্ক্রিপ্ট অ্যাডমিন SDK পরিষেবা টিম সদস্যদের তথ্য পায়, যেমন ব্যবহারকারীর আইডি এবং ইমেল ঠিকানা।

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

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

  5. একজন দলের সদস্য ঘটনার সমাধানের ইঙ্গিত দেওয়ার জন্য একটি স্ল্যাশ কমান্ড ব্যবহার করেন।

    1. অ্যাপস স্ক্রিপ্ট অ্যাডভান্সড চ্যাট পরিষেবা ব্যবহার করে একটি HTTP কল টু চ্যাট API সমস্ত চ্যাট স্পেসের বার্তা তালিকাভুক্ত করে।

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

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

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

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

এই বিভাগটি দেখায় কিভাবে চ্যাট অ্যাপের জন্য একটি Google ক্লাউড প্রকল্প তৈরি এবং কনফিগার করতে হয়।

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

গুগল ক্লাউড কনসোল

  1. গুগল ক্লাউড কনসোলে, মেনু > IAM & Admin > Create a Project এ যান।

    একটি প্রকল্প তৈরি করুন বিভাগে যান।

  2. প্রকল্পের নাম ক্ষেত্রে, আপনার প্রকল্পের জন্য একটি বর্ণনামূলক নাম লিখুন।

    ঐচ্ছিক: প্রজেক্ট আইডি সম্পাদনা করতে, সম্পাদনা ক্লিক করুন। প্রজেক্ট তৈরির পরে প্রজেক্ট আইডি পরিবর্তন করা যাবে না, তাই এমন একটি আইডি বেছে নিন যা প্রজেক্টের জীবনকাল ধরে আপনার চাহিদা পূরণ করে।

  3. আপনার প্রকল্পের সম্ভাব্য অবস্থানগুলি প্রদর্শন করতে "স্থান" ক্ষেত্রে "ব্রাউজ" এ ক্লিক করুন। তারপর, " নির্বাচন করুন" এ ক্লিক করুন।
  4. তৈরি করুন এ ক্লিক করুন। গুগল ক্লাউড কনসোল ড্যাশবোর্ড পৃষ্ঠায় নেভিগেট করে এবং কয়েক মিনিটের মধ্যেই আপনার প্রকল্প তৈরি হয়ে যায়।

জিক্লাউড সিএলআই

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

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

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

গুগল ক্লাউড কনসোল

  1. গুগল ক্লাউড কনসোলে, বিলিং এ যান। মেনু > বিলিং > মাই প্রোজেক্টস এ ক্লিক করুন।

    আমার প্রকল্পের জন্য বিলিং বিভাগে যান।

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

জিক্লাউড সিএলআই

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

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

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

API গুলি সক্ষম করুন

গুগল ক্লাউড কনসোল

  1. গুগল ক্লাউড কনসোলে, গুগল চ্যাট এপিআই, গুগল ডক্স এপিআই, অ্যাডমিন এসডিকে এপিআই, গুগল ওয়ার্কস্পেস মার্কেটপ্লেস এসডিকে এবং ভার্টেক্স এআই এপিআই সক্ষম করুন।

    API গুলি সক্ষম করুন

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

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

জিক্লাউড সিএলআই

  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, Google Workspace Marketplace SDK এবং Vertex AI API সক্ষম করুন:

    gcloud services enable chat.googleapis.com docs.googleapis.com admin.googleapis.com aiplatform.googleapis.com appsmarket-component.googleapis.com

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

চ্যাট অ্যাপটি চ্যাট অ্যাপের শংসাপত্র ব্যবহার করে গুগল চ্যাট এপিআই অ্যাক্সেস করে। অ্যাপটি ব্যবহারকারীর শংসাপত্র ব্যবহার করে অ্যাডমিন এসডিকে এপিআই এবং গুগল ডক্স এপিআই অ্যাক্সেস করে।

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

প্রমাণীকরণ এবং অনুমোদনের মাধ্যমে চ্যাট অ্যাপটি কোনও ঘটনার প্রতিক্রিয়া প্রক্রিয়া করার জন্য Google Workspace এবং Google Cloud-এর রিসোর্স অ্যাক্সেস করতে পারে। বিশেষ করে, ব্যবহারকারীর প্রমাণীকরণ Google Docs API এবং Admin SDK API কল করার জন্য ব্যবহৃত হয়।

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

  1. গুগল ক্লাউড কনসোলে, মেনু > এ যানGoogle Auth platform > ব্র্যান্ডিং

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

  2. যদি আপনি ইতিমধ্যেই কনফিগার করে থাকেনGoogle Auth platform, আপনি ব্র্যান্ডিং , অডিয়েন্স এবং ডেটা অ্যাক্সেসে নিম্নলিখিত OAuth কনসেন্ট স্ক্রিন সেটিংস কনফিগার করতে পারেন। যদি আপনি এমন একটি বার্তা দেখতে পান যা বলে Google Auth platform এখনও কনফিগার করা হয়নি , শুরু করুন ক্লিক করুন:

    1. অ্যাপ ইনফরমেশনের অধীনে, অ্যাপের নামে , Incident Management টাইপ করুন।
    2. ব্যবহারকারী সহায়তা ইমেল বিভাগে, আপনার ইমেল ঠিকানা অথবা একটি উপযুক্ত Google গ্রুপ নির্বাচন করুন।
    3. পরবর্তী ক্লিক করুন।
    4. Audience এর অধীনে, Internal নির্বাচন করুন। যদি আপনি Internal নির্বাচন করতে না পারেন, তাহলে External নির্বাচন করুন।
    5. পরবর্তী ক্লিক করুন।
    6. যোগাযোগের তথ্য এর অধীনে, একটি ইমেল ঠিকানা লিখুন যেখানে আপনার প্রকল্পের যেকোনো পরিবর্তন সম্পর্কে আপনাকে অবহিত করা যেতে পারে।
    7. পরবর্তী ক্লিক করুন।
    8. Finish এর অধীনে, Google API পরিষেবা ব্যবহারকারীর ডেটা নীতি পর্যালোচনা করুন এবং যদি আপনি সম্মত হন, তাহলে আমি Google API পরিষেবাগুলিতে সম্মত: ব্যবহারকারীর ডেটা নীতি নির্বাচন করুন।
    9. চালিয়ে যান ক্লিক করুন।
    10. তৈরি করুন ক্লিক করুন।
    11. যদি আপনি ব্যবহারকারীর ধরণের জন্য External নির্বাচন করে থাকেন, তাহলে পরীক্ষামূলক ব্যবহারকারী যোগ করুন:
      1. দর্শক ক্লিক করুন।
      2. ব্যবহারকারীদের পরীক্ষা করুন এর অধীনে, ব্যবহারকারীদের যোগ করুন এ ক্লিক করুন।
      3. আপনার ইমেল ঠিকানা এবং অন্য কোনও অনুমোদিত পরীক্ষা ব্যবহারকারী লিখুন, তারপর সংরক্ষণ করুন ক্লিক করুন।
  3. Data Access > Add or Remove Scopes এ ক্লিক করুন। আপনার Google Cloud Project এ সক্ষম করা প্রতিটি API এর জন্য স্কোপের তালিকা সহ একটি প্যানেল প্রদর্শিত হবে।

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

      • 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. আপনার অ্যাপের প্রয়োজনীয় স্কোপ নির্বাচন করার পর, ডেটা অ্যাক্সেস পৃষ্ঠায়, সংরক্ষণ করুন এ ক্লিক করুন।

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

গুগল চ্যাট এপিআই কল করার জন্য অ্যাপ প্রমাণীকরণ ব্যবহার করা হয়।

গুগল ক্লাউড কনসোলে একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন

একটি পরিষেবা অ্যাকাউন্ট তৈরি করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

গুগল ক্লাউড কনসোল

  1. গুগল ক্লাউড কনসোলে, মেনু > IAM & Admin > পরিষেবা অ্যাকাউন্ট এ যান।

    পরিষেবা অ্যাকাউন্টগুলিতে যান।

  2. পরিষেবা অ্যাকাউন্ট তৈরি করুন ক্লিক করুন।
  3. পরিষেবা অ্যাকাউন্টের বিবরণ পূরণ করুন, তারপর তৈরি করুন এবং চালিয়ে যান ক্লিক করুন।
  4. ঐচ্ছিক: আপনার Google ক্লাউড প্রোজেক্টের রিসোর্সে অ্যাক্সেস দেওয়ার জন্য আপনার পরিষেবা অ্যাকাউন্টে ভূমিকা নির্ধারণ করুন। আরও বিস্তারিত জানার জন্য, রিসোর্সে অ্যাক্সেস প্রদান, পরিবর্তন এবং প্রত্যাহার দেখুন।
  5. চালিয়ে যান ক্লিক করুন।
  6. ঐচ্ছিক: এই পরিষেবা অ্যাকাউন্টের মাধ্যমে পরিচালনা এবং কার্য সম্পাদন করতে পারে এমন ব্যবহারকারী বা গোষ্ঠীগুলি লিখুন। আরও বিস্তারিত জানার জন্য, পরিষেবা অ্যাকাউন্ট ছদ্মবেশ পরিচালনা দেখুন।
  7. সম্পন্ন ক্লিক করুন। পরিষেবা অ্যাকাউন্টের ইমেল ঠিকানাটি লিখে রাখুন।

জিক্লাউড সিএলআই

  1. পরিষেবা অ্যাকাউন্ট তৈরি করুন:
    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --display-name="SERVICE_ACCOUNT_NAME"
  2. ঐচ্ছিক: আপনার Google ক্লাউড প্রোজেক্টের রিসোর্সে অ্যাক্সেস দেওয়ার জন্য আপনার পরিষেবা অ্যাকাউন্টে ভূমিকা নির্ধারণ করুন। আরও বিস্তারিত জানার জন্য, রিসোর্সে অ্যাক্সেস প্রদান, পরিবর্তন এবং প্রত্যাহার দেখুন।

পরিষেবা অ্যাকাউন্টটি পরিষেবা অ্যাকাউন্ট পৃষ্ঠায় প্রদর্শিত হবে। এরপর, পরিষেবা অ্যাকাউন্টের জন্য একটি ব্যক্তিগত কী তৈরি করুন।

একটি ব্যক্তিগত কী তৈরি করুন

পরিষেবা অ্যাকাউন্টের জন্য একটি ব্যক্তিগত কী তৈরি এবং ডাউনলোড করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. গুগল ক্লাউড কনসোলে, মেনু > IAM & Admin > পরিষেবা অ্যাকাউন্ট এ যান।

    পরিষেবা অ্যাকাউন্টগুলিতে যান।

  2. আপনার পরিষেবা অ্যাকাউন্ট নির্বাচন করুন।
  3. কী > কী যোগ করুন > নতুন কী তৈরি করুন ক্লিক করুন।
  4. JSON নির্বাচন করুন, তারপর Create এ ক্লিক করুন।

    আপনার নতুন পাবলিক/প্রাইভেট কী জোড়া তৈরি করা হয়েছে এবং আপনার মেশিনে একটি নতুন ফাইল হিসেবে ডাউনলোড করা হয়েছে। ডাউনলোড করা JSON ফাইলটি আপনার কার্যকরী ডিরেক্টরিতে credentials.json হিসেবে সংরক্ষণ করুন। এই ফাইলটি এই কী-এর একমাত্র কপি। আপনার কী কীভাবে নিরাপদে সংরক্ষণ করবেন সে সম্পর্কে তথ্যের জন্য, পরিষেবা অ্যাকাউন্ট কী পরিচালনা করা দেখুন।

  5. বন্ধ করুন ক্লিক করুন।

পরিষেবা অ্যাকাউন্ট সম্পর্কে আরও তথ্যের জন্য, Google Cloud IAM ডকুমেন্টেশনে পরিষেবা অ্যাকাউন্টগুলি দেখুন।

একটি Google Workspace Marketplace-সামঞ্জস্যপূর্ণ OAuth ক্লায়েন্ট তৈরি করুন

একটি Google Workspace Marketplace-সামঞ্জস্যপূর্ণ OAuth ক্লায়েন্ট তৈরি করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. গুগল ক্লাউড কনসোলে, মেনু > IAM & Admin > পরিষেবা অ্যাকাউন্ট এ যান।

    পরিষেবা অ্যাকাউন্টগুলিতে যান।

  2. আপনার চ্যাট অ্যাপের জন্য তৈরি করা পরিষেবা অ্যাকাউন্টে ক্লিক করুন।

  3. উন্নত সেটিংসে ক্লিক করুন।

  4. Google Workspace Marketplace-সামঞ্জস্যপূর্ণ OAuth ক্লায়েন্ট তৈরি করুন ক্লিক করুন।

  5. চালিয়ে যান ক্লিক করুন।

একটি নিশ্চিতকরণ বার্তা প্রদর্শিত হবে যা বলে যে একটি Google Workspace Marketplace-সামঞ্জস্যপূর্ণ OAuth ক্লায়েন্ট তৈরি করা হয়েছে।

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

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

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

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

ঐচ্ছিকভাবে, আপনি GitHub-এ পুরো প্রকল্পটি দেখতে পারেন।

GitHub-এ দেখুন

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

Consts.gs

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

Consts.gs কোড দেখুন

অ্যাপস-স্ক্রিপ্ট/ঘটনা-প্রতিক্রিয়া-অ্যাপ-অথ/কনস্টস.জিএস
const PROJECT_ID = 'replace-with-your-project-id';
const CLOSE_INCIDENT_COMMAND_ID = 1;
const APP_CREDENTIALS = 'replace-with-your-app-credentials';
const APP_CREDENTIALS_SCOPES = 'https://www.googleapis.com/auth/chat.bot https://www.googleapis.com/auth/chat.app.memberships https://www.googleapis.com/auth/chat.app.spaces.create';
const VERTEX_AI_LOCATION_ID = 'us-central1';
const MODEL_ID = 'gemini-1.5-flash-002';
ChatApp.gs

বার্তা, কার্ড ক্লিক, স্ল্যাশ কমান্ড এবং ডায়ালগ সহ চ্যাট ইন্টারঅ্যাকশন ইভেন্টগুলি পরিচালনা করে। ঘটনার সমাধানের বিশদ সংগ্রহের জন্য একটি ডায়ালগ খুলে /closeIncident স্ল্যাশ কমান্ডের প্রতিক্রিয়া জানায়। চ্যাট API-তে spaces.messages.list পদ্ধতিতে কল করে স্পেসে থাকা বার্তাগুলি পড়ে। অ্যাপস স্ক্রিপ্টে অ্যাডমিন SDK ডিরেক্টরি পরিষেবা ব্যবহার করে ব্যবহারকারীর আইডি পায়।

ChatApp.gs কোড দেখুন

অ্যাপস-স্ক্রিপ্ট/ঘটনা-প্রতিক্রিয়া-অ্যাপ-অথ/চ্যাটঅ্যাপ.জিএস
/**
 * Responds to a MESSAGE event in Google Chat.
 *
 * This app only responds to a slash command with the ID 1 ("/closeIncident").
 * It will respond to any other message with a simple "Hello" text message.
 *
 * @param {Object} event the event object from Google Chat
 */
function onMessage(event) {
  if (event.message.slashCommand) {
    return processSlashCommand_(event);
  }
  return { "text": "Hello from Incident Response app!" };
}

/**
 * Responds to a CARD_CLICKED event in Google Chat.
 *
 * This app only responds to one kind of dialog (Close Incident).
 *
 * @param {Object} event the event object from Google Chat
 */
function onCardClick(event) {
  if (event.isDialogEvent) {
    if (event.dialogEventType == 'SUBMIT_DIALOG') {
      return processSubmitDialog_(event);
    }
    return {
      actionResponse: {
        type: "DIALOG",
        dialogAction: {
          actionStatus: "OK"
        }
      }
    };
  }
}

/**
 * Responds to a MESSAGE event with a Slash command in Google Chat.
 *
 * This app only responds to a slash command with the ID 1 ("/closeIncident")
 * by returning a Dialog.
 *
 * @param {Object} event the event object from Google Chat
 */
function processSlashCommand_(event) {
  if (event.message.slashCommand.commandId != CLOSE_INCIDENT_COMMAND_ID) {
    return {
      "text": "Command not recognized. Use the command `/closeIncident` to close the incident managed by this space."
    };
  }
  const 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"
                  }
                }
              }
            ]
          }
        }
      ]
    }
  ];
  return {
    actionResponse: {
      type: "DIALOG",
      dialogAction: {
        dialog: {
          body: {
            sections,
          }
        }
      }
    }
  };
}

/**
 * Responds to a CARD_CLICKED event with a Dialog submission in Google Chat.
 *
 * This app only responds to one kind of dialog (Close Incident).
 * 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.common.formInputs.description[""].stringInputs.value[0];
  const chatHistory = concatenateAllSpaceMessages_(event.space.name);
  const chatSummary = summarizeChatHistory_(chatHistory);
  const docUrl = createDoc_(event.space.displayName, resolution, chatHistory, chatSummary);
  return {
    actionResponse: {
      type: "NEW_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.
 *
 * Messages with slash commands are filtered out, so the returned history will
 * contain only the conversations between users and not app command invocations.
 *
 * @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
    .filter(message => message.slashCommand === undefined)
    .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 কোড দেখুন

অ্যাপস-স্ক্রিপ্ট/ঘটনা-প্রতিক্রিয়া-অ্যাপ-অথ/চ্যাটস্পেসক্রিয়েটর.জিএস
/**
 * Handles an incident by creating a chat space, adding members, and posting a message.
 * All the actions are done using application 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 service = getService_();
  if (!service.hasAccess()) {
    console.error(service.getLastError());
    return;
   }
  const spaceName = createChatSpace_(formData.title, service);
  createHumanMembership_(spaceName, getUserEmail(), service);
  for (const user of users ){
    createHumanMembership_(spaceName, user, service);
  }
  createMessage_(spaceName, formData.description, service);
  return spaceName;
}
/**
 * Creates a chat space with application credentials.
 *
 * @param {string} displayName - The name of the chat space.
 * @param {object} service - The credentials of the service account.
 * @returns {string} The resource name of the new space.
*/
function createChatSpace_(displayName, service) {
  try {
    // For private apps, the alias can be used
    const my_customer_alias = "customers/my_customer";
    // Specify the space to create.
    const space = {
        displayName: displayName,
        spaceType: 'SPACE',                
        customer: my_customer_alias
    };
    // Call Chat API with a service account to create a message.
    const createdSpace = Chat.Spaces.create(
        space,
        {},
        // Authenticate with the service account token.
        {'Authorization': 'Bearer ' + service.getAccessToken()});
    return createdSpace.name;
  } catch (err) {
    // TODO (developer) - Handle exception.
    console.log('Failed to create space with error %s', err.message);
  }
}
/*
 * Creates a chat message with application credentials.
 *
 * @param {string} spaceName - The resource name of the space.
 * @param {string} message - The text to be posted.
 * @param {object} service - The credentials of the service account.
 * @return {string} the resource name of the new space.
 */
function createMessage_(spaceName, message, service) {
  try {
    // Call Chat API with a service account to create a message.
    const result = Chat.Spaces.Messages.create(
        {'text': message},
        spaceName,
        {},
        // Authenticate with the service account token.
        {'Authorization': 'Bearer ' + service.getAccessToken()});

  } catch (err) {
    // TODO (developer) - Handle exception.
    console.log('Failed to create message with error %s', err.message);
  }
}
/**
 * Creates a human membership in a chat space with application credentials.
 *
 * @param {string} spaceName - The resource name of the space.
 * @param {string} email - The email of the user to be added.
 * @param {object} service - The credentials of the service account.
 */
function createHumanMembership_(spaceName, email, service){
  try{
    const membership = {
      member: {
        name: 'users/'+email,
        // User type for the membership
        type: 'HUMAN'
      }
    };
    const result = Chat.Spaces.Members.create(
      membership,
      spaceName,
      {},
      {'Authorization': 'Bearer ' + service.getAccessToken()}
    );
  } catch (err){
    console.log('Failed to create membership with error %s', err.message)
  }

}

 /*
 * Creates a service for the service account.
 * @return {object}  - The credentials of the service account.
 */
function getService_() {
  return OAuth2.createService(APP_CREDENTIALS.client_email)
      .setTokenUrl('https://oauth2.googleapis.com/token')
      .setPrivateKey(APP_CREDENTIALS.private_key)
      .setIssuer(APP_CREDENTIALS.client_email)
      .setSubject(APP_CREDENTIALS.client_email)
      .setScope(APP_CREDENTIALS_SCOPES)
      .setPropertyStore(PropertiesService.getScriptProperties());
}
DocsApi.gs

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

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

Vertex AI API ব্যবহার করে চ্যাট স্পেসে কথোপকথনের সারসংক্ষেপ তৈরি করে। এই সারসংক্ষেপটি DocsAPI.gs এ একটি বিশেষভাবে তৈরি নথিতে পোস্ট করা হয়েছে।

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 কোড দেখুন

অ্যাপস-স্ক্রিপ্ট/ঘটনা-প্রতিক্রিয়া-অ্যাপ-অথ/ওয়েবকন্ট্রোলার.জিএস
/**
 * 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 কোড দেখুন

অ্যাপস-স্ক্রিপ্ট/ঘটনা-প্রতিক্রিয়া-অ্যাপ-অথ/ইনডেক্স.এইচটিএমএল
<!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 এর কাস্টম ইনক্লুড ফাংশন দ্বারা Index.html এ অন্তর্ভুক্ত include হয়েছে।

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 কোড দেখুন

অ্যাপস-স্ক্রিপ্ট/ঘটনা-প্রতিক্রিয়া-অ্যাপ-অথ/স্টাইলশিট.এইচটিএমএল
<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. "Google Chat Apps Script সহ ঘটনার প্রতিক্রিয়া" প্রকল্পটি খুলতে নিম্নলিখিত বোতামে ক্লিক করুন।
    প্রকল্পটি খুলুন
  2. ওভারভিউতে ক্লিক করুন।
  3. ওভারভিউ পৃষ্ঠায়, ক্লিক করুন একটি কপি তৈরির আইকন একটি কপি তৈরি করুন
  4. আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্টের কপিটির নাম দিন:

    1. "Google Chat-এর মাধ্যমে ঘটনার প্রতিক্রিয়া জানান" এর কপিতে ক্লিক করুন।

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

    3. পুনঃনামকরণ ক্লিক করুন।

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

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

  1. আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্টে, ক্লিক করুন প্রকল্প সেটিংসের আইকন প্রকল্প সেটিংস
  2. গুগল ক্লাউড প্ল্যাটফর্ম (জিসিপি) প্রজেক্টের অধীনে, প্রজেক্ট পরিবর্তন করুন এ ক্লিক করুন।
  3. GCP প্রজেক্ট নম্বরে , আপনার ক্লাউড প্রজেক্টের প্রজেক্ট নম্বরটি পেস্ট করুন।
  4. Set project এ ক্লিক করুন। ক্লাউড প্রজেক্ট এবং অ্যাপস স্ক্রিপ্ট প্রজেক্ট এখন সংযুক্ত।

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

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

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

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

  2. স্থাপন > নতুন স্থাপন ক্লিক করুন।

  3. যদি অ্যাড-অন এবং ওয়েব অ্যাপ ইতিমধ্যেই নির্বাচিত না থাকে, তাহলে Select type এর পাশে, deployment types এ ক্লিক করুন। প্রকল্প সেটিংসের আইকন এবং অ্যাড-অন এবং ওয়েব অ্যাপ নির্বাচন করুন।

  4. বর্ণনা বিভাগে , এই সংস্করণের জন্য একটি বিবরণ লিখুন, যেমন Complete version of incident management app

  5. Execute as- এ, ওয়েব অ্যাপ অ্যাক্সেসকারী ব্যবহারকারী নির্বাচন করুন

  6. "কার অ্যাক্সেস আছে" বিভাগে, "আপনার ওয়ার্কস্পেস সংস্থার মধ্যে যে কেউ " নির্বাচন করুন, যেখানে "আপনার ওয়ার্কস্পেস সংস্থা" হল আপনার Google Workspace সংস্থার নাম।

  7. Deploy এ ক্লিক করুন। Apps Script সফল স্থাপনার রিপোর্ট করে এবং ঘটনা শুরু করার ওয়েব পৃষ্ঠার জন্য একটি স্থাপনার আইডি এবং একটি URL প্রদান করে।

  8. কোনও ঘটনা শুরু করার সময় পরে দেখার জন্য ওয়েব অ্যাপের URL টি নোট করে রাখুন। ডিপ্লয়মেন্ট আইডিটি কপি করুন। গুগল ক্লাউড কনসোলে চ্যাট অ্যাপটি কনফিগার করার সময় আপনি এই আইডিটি ব্যবহার করেন।

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

Google Cloud কনসোলে Chat অ্যাপটি কনফিগার করুন

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

  1. গুগল ক্লাউড কনসোলে, মেনু > আরও পণ্য > গুগল ওয়ার্কস্পেস > প্রোডাক্ট লাইব্রেরি > গুগল চ্যাট এপিআই > ম্যানেজ > কনফিগারেশন এ ক্লিক করুন।

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

  2. "এই চ্যাট অ্যাপটিকে Google Workspace অ্যাড-অন হিসেবে তৈরি করুন" সাফ করুন। একটি ডায়ালগ খুলবে যেখানে আপনাকে নিশ্চিত করতে বলা হবে। ডায়ালগে, "অক্ষম করুন " এ ক্লিক করুন।

  3. অ্যাপের নামে , Incident Management টাইপ করুন।

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

  5. বর্ণনায় , Responds to incidents.

  6. "ইন্টারেক্টিভ বৈশিষ্ট্যগুলি সক্ষম করুন" এ ক্লিক করে অন পজিশনে টগল করুন।

  7. কার্যকারিতার অধীনে, Join spaces and group conversations নির্বাচন করুন।

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

  9. ডিপ্লয়মেন্ট আইডিতে , অ্যাপস স্ক্রিপ্ট ডিপ্লয়মেন্ট আইডিটি পেস্ট করুন যা আপনি আগে অ্যাপস স্ক্রিপ্ট প্রজেক্ট ডিপ্লয়মেন্ট থেকে কপি করেছিলেন।

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

    1. কমান্ডের অধীনে, একটি কমান্ড যোগ করুন ক্লিক করুন।

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

    3. বর্ণনা বিভাগে, টাইপ করুন Closes the incident being discussed in the space.

    4. কমান্ড টাইপের অধীনে, স্ল্যাশ কমান্ড নির্বাচন করুন।

    5. স্ল্যাশ কমান্ডের নাম তে, /closeIncident টাইপ করুন।

    6. একটি ডায়ালগ খোলে নির্বাচন করুন।

    7. সম্পন্ন ক্লিক করুন। স্ল্যাশ কমান্ডটি নিবন্ধিত এবং তালিকাভুক্ত।

  11. দৃশ্যমানতার অধীনে, আপনার কর্মক্ষেত্র ডোমেনের নির্দিষ্ট ব্যক্তি এবং গোষ্ঠীর জন্য এই চ্যাট অ্যাপটি উপলব্ধ করুন নির্বাচন করুন এবং আপনার ইমেল ঠিকানা লিখুন।

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

  13. সংরক্ষণ করুন এ ক্লিক করুন। একটি কনফিগারেশন সংরক্ষিত বার্তা প্রদর্শিত হবে, যার অর্থ অ্যাপটি পরীক্ষার জন্য প্রস্তুত।

প্রশাসকের অনুমোদন পান

অ্যাডমিনিস্ট্রেটরের অনুমোদন পেতে, আপনাকে Google Workspace Marketplace SDK-তে Chat অ্যাপটি কনফিগার করতে হবে।

Google Workspace Marketplace SDK-তে Chat অ্যাপ কনফিগার করুন

Google Workspace Marketplace SDK-তে Chat অ্যাপ কনফিগার করতে, এই ধাপগুলি অনুসরণ করুন:

  1. গুগল ক্লাউড কনসোলে, মেনু > APIs & Services > Enabled APIs & services > Google Workspace Marketplace SDK > অ্যাপ কনফিগারেশন এ যান।

    অ্যাপ কনফিগারেশনে যান

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

    1. অ্যাপ দৃশ্যমানতার অধীনে, ব্যক্তিগত নির্বাচন করুন।
    2. ইনস্টলেশন সেটিংসের অধীনে, অ্যাডমিন ইনস্টল নির্বাচন করুন।
    3. অ্যাপ ইন্টিগ্রেশনের অধীনে, চ্যাট অ্যাপ নির্বাচন করুন।
    4. OAuth scopes এর অধীনে, নিম্নলিখিত scopes লিখুন:
      • https://www.googleapis.com/auth/chat.app.spaces
      • https://www.googleapis.com/auth/chat.app.memberships
    5. ডেভেলপার তথ্যের অধীনে, আপনার ডেভেলপারের নাম , ডেভেলপার ওয়েবসাইটের URL এবং ডেভেলপারের ইমেল লিখুন।
    6. খসড়া সংরক্ষণ করুন ক্লিক করুন।

অ্যাপটি কনফিগার করার পরে, স্টোর তালিকা আপডেট করুন:

  1. গুগল ক্লাউড কনসোলে, মেনু > এপিআই এবং পরিষেবা > সক্ষম এপিআই এবং পরিষেবা > গুগল ওয়ার্কস্পেস মার্কেটপ্লেস এসডিকে > স্টোর তালিকা -এ যান।
  2. অ্যাপের বিবরণে , ওয়েব ডেভেলপমেন্টকে একটি বিভাগ হিসেবে নির্বাচন করুন।
  3. গ্রাফিক অ্যাসেটস- এ, অনুরোধকৃত ফর্ম্যাটে অ্যাপ্লিকেশন আইকন আপলোড করুন।
  4. স্ক্রিনশট -এ, অ্যাপ্লিকেশনটির একটি স্ক্রিনশট আপলোড করুন।
  5. সাপোর্ট লিংকগুলিতে , পরিষেবার শর্তাবলী URL, গোপনীয়তা URL এবং সহায়তা URL পূরণ করুন।
  6. বিতরণ বিভাগে, এই অ্যাপ্লিকেশনটি কোথায় পাওয়া যাবে তা নির্বাচন করুন।
  7. প্রকাশ করুন-এ ক্লিক করুন।

প্রশাসকের অনুমোদন নিন

এখন যেহেতু আপনার পরিষেবা অ্যাকাউন্টটি প্রশাসকের অনুমোদন পাওয়ার জন্য কনফিগার করা হয়েছে, তাই এটি একজন Google Workspace প্রশাসকের কাছ থেকে নিন যিনি Chat অ্যাপের জন্য অনুমোদন সেট আপ করুন এর ধাপগুলি অনুসরণ করে অনুমোদন দিতে পারেন।

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

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

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

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

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

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

  5. স্পেস তৈরি হওয়ার পর, একটি Space created! বার্তা প্রদর্শিত হবে। "ওপেন স্পেস" এ ক্লিক করুন, যা একটি নতুন ট্যাবে চ্যাটের স্পেসটি খুলবে।

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

  7. ঘটনার প্রতিক্রিয়া শেষ করতে এবং সমাধান প্রক্রিয়া শুরু করতে, চ্যাট স্পেসে /closeIncident টাইপ করুন। একটি ঘটনা ব্যবস্থাপনা ডায়ালগ খোলে।

  8. ক্লোজ ইনসিডেন্টে , ঘটনার সমাধানের জন্য একটি বর্ণনা লিখুন, যেমন Test complete

  9. ঘটনা বন্ধ করুন ক্লিক করুন।

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

পরিষ্কার কর

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

  1. গুগল ক্লাউড কনসোলে, রিসোর্স পরিচালনা পৃষ্ঠায় যান। মেনু > IAM & Admin > রিসোর্স পরিচালনা করুন এ ক্লিক করুন।

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

  2. প্রকল্পের তালিকায়, আপনি যে প্রকল্পটি মুছতে চান তা নির্বাচন করুন এবং তারপরে মুছুন মুছে ফেলুন করুন।
  3. ডায়ালগে, প্রজেক্ট আইডি টাইপ করুন এবং তারপর প্রজেক্টটি মুছে ফেলতে Shut down এ ক্লিক করুন।