Python এবং Google Meet REST API-এর সাথে মিটিং ইভেন্টগুলি পর্যবেক্ষণ করুন

এই টিউটোরিয়ালটি দেখায় যে কীভাবে একটি Meet মিটিং স্পেসে ইভেন্টগুলি পর্যবেক্ষণ করতে এবং প্রতিক্রিয়া জানাতে Google Workspace Events API এবং Google Cloud Pub/Sub-এর সাথে Google Meet REST API ব্যবহার করতে হয়। নমুনা অ্যাপ্লিকেশন রেকর্ড করে কখন কনফারেন্স শুরু হয় এবং শেষ হয়, কখন অংশগ্রহণকারীরা যোগদান করে বা চলে যায় এবং কখন কোন জেনারেট করা মিটিং আর্টিফ্যাক্ট পাওয়া যায়।

একটি নির্দিষ্ট মিটিং স্পেসে সাবস্ক্রাইব করার পরিবর্তে, ব্যবহারকারীর মালিকানাধীন বা সংগঠিত যে কোনও মিটিং স্পেসের ইভেন্টগুলি পেতে আপনি একজন Meet ব্যবহারকারীর সাথে সাবস্ক্রাইব করতে পারেন। বিস্তারিত জানতে, Google Workspace Events API ডকুমেন্টেশনে Google Meet ইভেন্টে সদস্যতা নিন দেখুন।

পূর্বশর্ত

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

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

এই বিভাগটি এই টিউটোরিয়ালের জন্য আপনার স্থানীয় পরিবেশ এবং Google ক্লাউড প্রকল্প কীভাবে তৈরি এবং কনফিগার করতে হয় তা দেখায়।

একটি ওয়ার্কিং ডিরেক্টরি এবং পাইথন ভার্চুয়াল পরিবেশ তৈরি করুন

একটি নতুন ভার্চুয়াল পরিবেশ তৈরি এবং সক্রিয় করতে, আপনার টার্মিনালে নিম্নলিখিত কমান্ডগুলি চালান।

লিনাক্স/ম্যাকোস

mkdir meet-tutorial
cd meet-tutorial
python3 -mvenv env
source env/bin/activate

উইন্ডোজ (কমান্ড প্রম্পট)

mkdir meet-tutorial
cd meet-tutorial
python3 -mvenv env
env/bin/activate.bat

উইন্ডোজ (পাওয়ারশেল)

mkdir meet-tutorial
cd meet-tutorial
python3 -mvenv env
env/bin/activate.ps1

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

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

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

    একটি প্রকল্প তৈরি করুন এ যান

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

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

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

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

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

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

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

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

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

    আমার প্রকল্পের জন্য বিলিং এ যান

  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 ক্লাউড প্রকল্পের সাথে লিঙ্ক করার জন্য বিলিং অ্যাকাউন্ট আইডি

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

প্রমাণীকরণ এবং অনুমোদন অ্যাপটিকে Meet REST API সংস্থান অ্যাক্সেস করতে দেয়। Meet REST API কল করার জন্য ব্যবহারকারীর অনুমোদন প্রয়োজন। এই বিভাগটি আপনাকে কীভাবে ব্যবহারকারীর শংসাপত্রগুলি কনফিগার করতে হয় এবং অনুমোদনের জন্য অনুরোধ করে।

OAuth সম্মতি স্ক্রীন কনফিগার করুন এবং স্কোপ বেছে নিন

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

  1. Google ক্লাউড কনসোলে, মেনু > API এবং পরিষেবা > OAuth সম্মতি স্ক্রীনে যান।

    OAuth সম্মতি স্ক্রিনে যান

  2. ব্যবহারকারীর প্রকারের অধীনে, অভ্যন্তরীণ নির্বাচন করুন, তারপরে তৈরি করুন ক্লিক করুন।
  3. অ্যাপের নামে , Meet REST API Tutorial লিখুন।
  4. অ্যাপ নিবন্ধন ফর্মটি পূরণ করুন, তারপর সংরক্ষণ করুন এবং চালিয়ে যান এ ক্লিক করুন।
  5. স্কোপ যোগ করুন বা সরান ক্লিক করুন। আপনি আপনার Google ক্লাউড প্রকল্পে সক্ষম করেছেন এমন প্রতিটি API-এর জন্য স্কোপের তালিকা সহ একটি প্যানেল উপস্থিত হয়৷
  6. ম্যানুয়ালি স্কোপ যোগ করুন এর অধীনে, নিম্নলিখিত স্কোপগুলি পেস্ট করুন:
    • https://www.googleapis.com/auth/meetings.space.created
  7. টেবিলে যোগ করুন ক্লিক করুন।
  8. আপডেট ক্লিক করুন.
  9. আপনার অ্যাপের জন্য প্রয়োজনীয় স্কোপগুলি নির্বাচন করার পরে, সংরক্ষণ করুন এবং চালিয়ে যান ক্লিক করুন।
  10. আপনি যদি ব্যবহারকারীর প্রকারের জন্য বাহ্যিক নির্বাচন করেন, পরীক্ষা ব্যবহারকারীদের যোগ করুন:
    1. টেস্ট ব্যবহারকারীদের অধীনে, ব্যবহারকারী যোগ করুন ক্লিক করুন।
    2. আপনার ইমেল ঠিকানা এবং অন্য কোন অনুমোদিত পরীক্ষা ব্যবহারকারীদের লিখুন, তারপর সংরক্ষণ করুন এবং চালিয়ে যান ক্লিক করুন।
  11. আপনার অ্যাপ নিবন্ধন সারাংশ পর্যালোচনা করুন. পরিবর্তন করতে, সম্পাদনা ক্লিক করুন। অ্যাপ নিবন্ধন ঠিক আছে বলে মনে হলে, ড্যাশবোর্ডে ফিরে যান ক্লিক করুন।

একটি ক্লায়েন্ট আইডি তৈরি করুন

OAuth 2.0 ফ্লো চলাকালীন ক্লায়েন্ট আইডি আপনার আবেদনের জন্য শংসাপত্র হিসাবে কাজ করে। যেহেতু অ্যাপটি স্থানীয়ভাবে চলে, তাই একটি ডেস্কটপ ক্লায়েন্ট আইডি তৈরি করুন।

  1. Google ক্লাউড কনসোলে, মেনু > APIs & Services > Credentials- এ যান।

    শংসাপত্রে যান

  2. ক্রিয়েট ক্রেডেনশিয়াল > OAuth ক্লায়েন্ট আইডি ক্লিক করুন।
  3. Application type > Desktop app এ ক্লিক করুন।
  4. নাম ক্ষেত্রে, শংসাপত্রের জন্য একটি নাম টাইপ করুন। এই নামটি শুধুমাত্র Google ক্লাউড কনসোলে দেখানো হয়।
  5. তৈরি করুন ক্লিক করুন। OAuth ক্লায়েন্ট তৈরি করা স্ক্রীন প্রদর্শিত হবে, আপনার নতুন ক্লায়েন্ট আইডি এবং ক্লায়েন্টের গোপনীয়তা দেখাচ্ছে।
  6. ওকে ক্লিক করুন। নতুন তৈরি শংসাপত্রটি OAuth 2.0 ক্লায়েন্ট আইডিগুলির অধীনে প্রদর্শিত হয়৷

Google auth লাইব্রেরি ইনস্টল করুন

Google auth লাইব্রেরি ইনস্টল করুন:

pip install google-auth google-auth-oauthlib

অনুমোদন কার্যকর করুন

Meet REST API-এর জন্য একটি OAuth 2.0 অ্যাক্সেস টোকেন আকারে ব্যবহারকারীর শংসাপত্র প্রয়োজন। এই বিভাগে, আপনি ব্যবহারকারীর জন্য একটি অ্যাক্সেস টোকেন এবং একটি রিফ্রেশ টোকেন অনুরোধ করতে OAuth 2.0 ফ্লো বাস্তবায়ন করেন।

  1. আপনার কাজের ডিরেক্টরিতে, main.py ফাইলটি তৈরি করুন এবং নিম্নলিখিত বিষয়বস্তু যোগ করুন:

    import os
    import json
    
    from google.auth.transport import requests
    from google.oauth2.credentials import Credentials
    from google_auth_oauthlib.flow import InstalledAppFlow
    
    def authorize() -> Credentials:
        """Ensure valid credentials for calling the Meet REST API."""
        CLIENT_SECRET_FILE = "./client_secret.json"
        credentials = None
    
        if os.path.exists('token.json'):
            credentials = Credentials.from_authorized_user_file('token.json')
    
        if credentials is None:
            flow = InstalledAppFlow.from_client_secrets_file(
                CLIENT_SECRET_FILE,
                scopes=[
                    'https://www.googleapis.com/auth/meetings.space.created',
                ])
            flow.run_local_server(port=0)
            credentials = flow.credentials
    
        if credentials and credentials.expired:
            credentials.refresh(requests.Request())
    
        if credentials is not None:
            with open("token.json", "w") as f:
                f.write(credentials.to_json())
    
        return credentials
    
    USER_CREDENTIALS = authorize()
    
  2. কোড চালানোর জন্য, ক্লায়েন্ট আইডি এবং আগে তৈরি করা গোপন উভয়ই প্রয়োজন। ডাউনলোড করা ক্লায়েন্ট সিক্রেট ফাইলটিকে প্রজেক্ট ওয়ার্কিং ডিরেক্টরিতে কপি করুন এবং এটিকে client_secret.json হিসাবে পুনঃনামকরণ করুন।

  3. আপনি যদি অনুমোদন কিভাবে কাজ করে তা পরীক্ষা করতে চান, নিম্নলিখিত কমান্ডটি চালান। অ্যাপটি অনুমোদনের জন্য অনুরোধ করে এবং অনুরোধ অনুমোদিত হওয়ার পরে প্রকল্পের কাজের ডিরেক্টরিতে একটি token.json ফাইল তৈরি করে।

    python3 main.py

Meet REST API যোগ করুন

এখন অনুমোদনের কোড সম্পূর্ণ হয়ে গেছে, এখনই Meet REST API চালু করার এবং কল করার সময়।

APIs সক্রিয় করুন

যদিও এই বিভাগটি Meet REST API-এ ফোকাস করা হয়েছে, এই টিউটোরিয়ালটি Google Cloud Pub/Sub এবং Google Workspace ইভেন্ট এপিআই ব্যবহার করে।

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

  1. Google ক্লাউড কনসোলে, Google Meet REST API, Google Workspace Events API এবং Google Cloud Pub/Sub চালু করুন।

    APIs সক্রিয় করুন

  2. নিশ্চিত করুন যে আপনি সঠিক ক্লাউড প্রকল্পে API গুলি সক্ষম করছেন, তারপর পরবর্তী ক্লিক করুন।

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

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

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

    gcloud config set project PROJECT_ID

    আপনার তৈরি করা ক্লাউড প্রকল্পের প্রকল্প আইডি দিয়ে PROJECT_ID প্রতিস্থাপন করুন।

  2. Google Meet REST API, Google Workspace Events API এবং Google Cloud Pub/Sub চালু করুন gcloud services enable কমান্ড দিয়ে:

    gcloud services enable meet.googleapis.com workspaceevents.googleapis.com pubsub.googleapis.com

Meet REST API ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন

Meet REST API ক্লায়েন্ট লাইব্রেরি ইনস্টল করতে এই ধাপগুলি অনুসরণ করুন:

  1. কমান্ড চালান:

    pip install google-apps-meet
  2. ক্লায়েন্ট আমদানি করতে main.py ফাইলটি সম্পাদনা করুন:

    from google.apps import meet_v2 as meet
    

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

এখন যেহেতু Meet REST API উপলব্ধ, একটি মিটিং স্পেস তৈরি করার জন্য একটি ফাংশন সংজ্ঞায়িত করুন যেটিতে সদস্যতা নেওয়া যেতে পারে।

main.py সম্পাদনা করুন এবং যোগ করুন:

def create_space() -> meet.Space:
    """Create a meeting space."""
    client = meet.SpacesServiceClient(credentials=USER_CREDENTIALS)
    request = meet.CreateSpaceRequest()
    return client.create_space(request=request)

ইভেন্ট সদস্যতা

মিটিং স্পেস সম্পর্কে ইভেন্ট পেতে, আপনি Google Workspace Events API ব্যবহার করে একটি সাবস্ক্রিপশন তৈরি করুন। আপনাকে অবশ্যই একটি Google ক্লাউড পাব/সাব বিষয় তৈরি করতে এবং সদস্যতা নিতে হবে যা বিজ্ঞপ্তির শেষ পয়েন্ট হিসাবে কাজ করে যেখানে আপনার অ্যাপ ইভেন্টগুলি গ্রহণ করে।

Google Cloud Pub/Sub কনফিগার করুন

একটি পাব/সাব বিষয় তৈরি করতে এবং সদস্যতা নিতে:

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

  1. Google ক্লাউড কনসোলে, মেনু > Pub/Sub- এ যান।

    পাব/সাব-এ যান

    আপনার অ্যাপের জন্য ক্লাউড প্রকল্প নির্বাচন করা হয়েছে তা নিশ্চিত করুন।

  2. ক্লিক করুন বিষয় তৈরি করুন এবং নিম্নলিখিতগুলি করুন:
    1. বিষয়ের নাম হিসেবে workspace-events লিখুন।
    2. নির্বাচিত একটি ডিফল্ট সদস্যতা যোগ করুন ছেড়ে দিন।
    3. তৈরি করুন ক্লিক করুন। আপনার সম্পূর্ণ বিষয়ের নামটি projects/{project}/topics/{topic} হিসাবে ফর্ম্যাট করা হয়েছে। পরবর্তী ধাপে ব্যবহারের জন্য এই নামের একটি নোট করুন।
  3. আপনার বিষয়ে পাব/সাব বার্তা প্রকাশের অ্যাক্সেস মঞ্জুর করুন:
    1. পাশের প্যানেলে, অনুমতি ট্যাব খুলুন।
    2. অ্যাড প্রিন্সিপাল ক্লিক করুন।
    3. নতুন প্রিন্সিপালে , meet-api-event-push@system.gserviceaccount.com লিখুন।
    4. ভূমিকা বরাদ্দ করতে , Pub/Sub Publisher নির্বাচন করুন।
    5. Save এ ক্লিক করুন।

    আপনার বিষয়ের অনুমতি আপডেট করতে কয়েক মিনিট সময় লাগতে পারে।

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

  1. আপনার ক্লাউড প্রকল্পে, নিম্নলিখিতগুলি চালিয়ে একটি বিষয় তৈরি করুন:
    gcloud pubsub topics create workspace-events

    আউটপুট পুরো বিষয়ের নাম প্রদর্শন করে, projects/{project}/topics/{topic} হিসাবে ফর্ম্যাট করা হয়েছে। পরবর্তী ধাপে ব্যবহারের জন্য এই নামের একটি নোট করুন।

  2. আপনার বিষয়ে বার্তা প্রকাশ করার অ্যাক্সেস মঞ্জুর করুন:
     gcloud pubsub topics add-iam-policy-binding workspace-events --member='serviceAccount:meet-api-event-push@system.gserviceaccount.com' --role='roles/pubsub.publisher'

    আপনার বিষয়ের অনুমতি আপডেট করতে কয়েক মিনিট সময় লাগতে পারে।

  3. বিষয়ের জন্য একটি পাব/সাবস্ক্রিপশন তৈরি করুন:
    gcloud pubsub subscriptions create workspace-events-sub --topic=TOPIC_NAME

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

    • TOPIC_NAME : আপনার বিষয়ের নাম যা আপনি পূর্ববর্তী ধাপে তৈরি করেছেন।

বিষয়ের নাম নোট করুন এবং নিশ্চিত করুন যে {project} -এর মানটি আপনার অ্যাপের জন্য ক্লাউড প্রকল্প আইডি। পরে Google Workspace সাবস্ক্রিপশন তৈরি করতে আপনি বিষয়ের নাম ব্যবহার করবেন।

একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন

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

  1. Google ক্লাউড কনসোলে, মেনু > IAM & Admin > Service Accounts- এ যান।

    সার্ভিস অ্যাকাউন্টে যান

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

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

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

পরিষেবা অ্যাকাউন্ট ব্যবহার করুন

পরিষেবা অ্যাকাউন্ট তৈরি করার পরে, পরিষেবা অ্যাকাউন্টের ছদ্মবেশী করার জন্য নিজেকে অ্যাক্সেসের অনুমতি দিন।

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

  1. নতুন তৈরি পরিষেবা অ্যাকাউন্টের জন্য অ্যাকশন কলামে, > অনুমতিগুলি পরিচালনা করুন ক্লিক করুন।
  2. কী যোগ করুন > অ্যাক্সেস মঞ্জুর করুন ক্লিক করুন।
  3. অ্যাড প্রিন্সিপালের অধীনে আপনার ইমেল ঠিকানা লিখুন।
  4. ভূমিকা হিসাবে পরিষেবা অ্যাকাউন্ট > পরিষেবা অ্যাকাউন্ট টোকেন নির্মাতা নির্বাচন করুন।
  5. Save এ ক্লিক করুন।
  6. আপনার টার্মিনালে ফিরে যান এবং পরিষেবা অ্যাকাউন্টে অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র সেট করতে gcloud দিয়ে সাইন ইন করুন। অনুমোদনের জন্য অনুরোধ করা হলে, আগের ধাপে ব্যবহৃত একই অ্যাকাউন্ট ব্যবহার করে সাইন ইন করুন।
    gcloud auth application-default login --impersonate-service-account=SERVICE_ACCOUNT_EMAIL

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

  1. অনুমতি যোগ করতে, পরিষেবা অ্যাকাউন্ট এবং ব্যবহারকারীর ইমেল ঠিকানা ব্যবহার করে gcloud iam service-accounts add-iam-policy-binding চালান।
    gcloud iam service-accounts add-iam-policy-binding \
      SERVICE_ACCOUNT_EMAIL \
      --member="user:YOUR_EMAIL \
      --role="roles/iam.serviceAccountTokenCreator"
  2. পরিষেবা অ্যাকাউন্টে অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র সেট করতে সাইন ইন করুন৷ অনুমোদনের জন্য অনুরোধ করা হলে, আগের ধাপে ব্যবহৃত একই অ্যাকাউন্ট ব্যবহার করে সাইন ইন করুন।
    gcloud auth application-default login --impersonate-service-account=SERVICE_ACCOUNT_EMAIL

পাব/সাব ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন

  1. Pub/Sub-এর জন্য ক্লায়েন্ট লাইব্রেরি ইনস্টল করতে pip ব্যবহার করুন:

    pip install google-cloud-pubsub
  2. তারপর ক্লায়েন্ট আমদানি করতে main.py সম্পাদনা করুন:

    from google.cloud import pubsub_v1
    

Google Workspace সাবস্ক্রিপশন তৈরি করুন

Meet ইভেন্টে সদস্যতা নেওয়ার পদ্ধতি নির্ধারণ করতে main.py এ নিম্নলিখিত কোড যোগ করুন। এই কোডটি একটি মিটিং স্পেসের জন্য সমস্ত ইভেন্টে সদস্যতা নেয়৷ সদস্যতা নেওয়া হলে, ইভেন্টগুলি পাব/সাব বিষয়ে পোস্ট করা হয়।

def subscribe_to_space(space_name: str = None, topic_name: str = None):
    """Subscribe to events for a meeting space."""
    session = requests.AuthorizedSession(USER_CREDENTIALS)
    body = {
        'targetResource': f"//meet.googleapis.com/{space_name}",
        "eventTypes": [
            "google.workspace.meet.conference.v2.started",
            "google.workspace.meet.conference.v2.ended",
            "google.workspace.meet.participant.v2.joined",
            "google.workspace.meet.participant.v2.left",
            "google.workspace.meet.recording.v2.fileGenerated",
            "google.workspace.meet.transcript.v2.fileGenerated",
        ],
        "payloadOptions": {
            "includeResource": False,
        },
        "notificationEndpoint": {
            "pubsubTopic": topic_name
        },
        "ttl": "86400s",
    }
    response = session.post("https://workspaceevents.googleapis.com/v1/subscriptions", json=body)
    return response

এর পরে, ইভেন্টগুলি টান এবং প্রক্রিয়া করতে সংশ্লিষ্ট কোড যোগ করুন।

ইভেন্টগুলি শুনুন এবং পরিচালনা করুন

main.py সম্পাদনা চালিয়ে যান এবং নিম্নলিখিত নমুনা কোড যোগ করুন। এই কোডটি রিসিভিং সাইড ইমপ্লিমেন্ট করে এবং ইভেন্টগুলিকে উপলব্ধ করার সাথে সাথে টেনে আনতে Google Cloud Pub/Sub API ব্যবহার করে। বিভিন্ন হ্যান্ডলার পদ্ধতি সংশ্লিষ্ট ঘটনা সম্পর্কে তথ্য মুদ্রণ করে।

def format_participant(participant: meet.Participant) -> str:
    """Formats a participant for display on the console."""
    if participant.anonymous_user:
        return f"{participant.anonymous_user.display_name} (Anonymous)"

    if participant.signedin_user:
        return f"{participant.signedin_user.display_name} (ID: {participant.signedin_user.user})"

    if participant.phone_user:
        return f"{participant.phone_user.display_name} (Phone)"

    return "Unknown participant"


def fetch_participant_from_session(session_name: str) -> meet.Participant:
    """Fetches the participant for a session."""
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    # Use the parent path of the session to fetch the participant details
    parsed_session_path = client.parse_participant_session_path(session_name)
    participant_resource_name = client.participant_path(
        parsed_session_path["conference_record"],
        parsed_session_path["participant"])
    return client.get_participant(name=participant_resource_name)


def on_conference_started(message: pubsub_v1.subscriber.message.Message):
    """Display information about a conference when started."""
    payload = json.loads(message.data)
    resource_name = payload.get("conferenceRecord").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    conference = client.get_conference_record(name=resource_name)
    print(f"Conference (ID {conference.name}) started at {conference.start_time.rfc3339()}")


def on_conference_ended(message: pubsub_v1.subscriber.message.Message):
    """Display information about a conference when ended."""
    payload = json.loads(message.data)
    resource_name = payload.get("conferenceRecord").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    conference = client.get_conference_record(name=resource_name)
    print(f"Conference (ID {conference.name}) ended at {conference.end_time.rfc3339()}")


def on_participant_joined(message: pubsub_v1.subscriber.message.Message):
    """Display information about a participant when they join a meeting."""
    payload = json.loads(message.data)
    resource_name = payload.get("participantSession").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    session = client.get_participant_session(name=resource_name)
    participant = fetch_participant_from_session(resource_name)
    display_name = format_participant(participant)
    print(f"{display_name} joined at {session.start_time.rfc3339()}")


def on_participant_left(message: pubsub_v1.subscriber.message.Message):
    """Display information about a participant when they leave a meeting."""
    payload = json.loads(message.data)
    resource_name = payload.get("participantSession").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    session = client.get_participant_session(name=resource_name)
    participant = fetch_participant_from_session(resource_name)
    display_name = format_participant(participant)
    print(f"{display_name} left at {session.end_time.rfc3339()}")


def on_recording_ready(message: pubsub_v1.subscriber.message.Message):
    """Display information about a recorded meeting when artifact is ready."""
    payload = json.loads(message.data)
    resource_name = payload.get("recording").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    recording = client.get_recording(name=resource_name)
    print(f"Recording available at {recording.drive_destination.export_uri}")


def on_transcript_ready(message: pubsub_v1.subscriber.message.Message):
    """Display information about a meeting transcript when artifact is ready."""
    payload = json.loads(message.data)
    resource_name = payload.get("transcript").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    transcript = client.get_transcript(name=resource_name)
    print(f"Transcript available at {transcript.docs_destination.export_uri}")


def on_message(message: pubsub_v1.subscriber.message.Message) -> None:
    """Handles an incoming event from the Google Cloud Pub/Sub API."""
    event_type = message.attributes.get("ce-type")
    handler = {
        "google.workspace.meet.conference.v2.started": on_conference_started,
        "google.workspace.meet.conference.v2.ended": on_conference_ended,
        "google.workspace.meet.participant.v2.joined": on_participant_joined,
        "google.workspace.meet.participant.v2.left": on_participant_left,
        "google.workspace.meet.recording.v2.fileGenerated": on_recording_ready,
        "google.workspace.meet.transcript.v2.fileGenerated": on_transcript_ready,
    }.get(event_type)

    try:
        if handler is not None:
            handler(message)
        message.ack()
    except Exception as error:
        print("Unable to process event")
        print(error)


def listen_for_events(subscription_name: str = None):
    """Subscribe to events on the subscription."""
    subscriber = pubsub_v1.SubscriberClient()
    with subscriber:
        future = subscriber.subscribe(subscription_name, callback=on_message)
        print("Listening for events")
        try:
            future.result()
        except KeyboardInterrupt:
            future.cancel()
    print("Done")

কোড চূড়ান্ত করুন

স্পেস তৈরি করার পদ্ধতিগুলি কল করতে, ইভেন্টগুলিতে সদস্যতা নিতে এবং শুনতে নিম্নলিখিত কোডটি main.py তে যোগ করুন। TOPIC_NAME এবং SUBSCRIPTION_NAME ধ্রুবকগুলি আপনার নিজের বিষয় এবং সদস্যতার নামগুলির সাথে আপডেট করুন যা আপনি আগে তৈরি করেছেন৷

  1. main.py এ কোড যোগ করুন:

    space = create_space()
    print(f"Join the meeting at {space.meeting_uri}")
    
    TOPIC_NAME = "projects/PROJECT_ID/topics/TOPIC_ID"
    SUBSCRIPTION_NAME = "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID"
    
    subscription = subscribe_to_space(topic_name=TOPIC_NAME, space_name=space.name)
    listen_for_events(subscription_name=SUBSCRIPTION_NAME)
    

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

    • PROJECT_ID : আপনার অ্যাপের জন্য অনন্য ক্লাউড প্রকল্প আইডি, যেমন my-sample-project-191923

    • TOPIC_ID : আপনার ক্লাউড প্রকল্পে আপনি যে পাব/সাব বিষয় তৈরি করেছেন তার নাম।

    • SUBSCRIPTION_ID : আপনার সদস্যতার নাম, যেমন workspace-events-sub

  2. প্রোগ্রাম চালান:

    python3 main.py

আপনি যদি পূর্বে প্রোগ্রামটি না চালিয়ে থাকেন তবে এটি প্রথমবার অনুমোদনের জন্য অনুরোধ করে। Meet REST API কল করতে অ্যাপ্লিকেশনটিতে অ্যাক্সেস মঞ্জুর করুন। প্রোগ্রাম সফলভাবে চালানোর পরে, আপনি অনুরূপ আউটপুট দেখতে হবে:

Join the meeting at https://meet.google.com/abc-mnop-xyz

সম্মেলনে যোগ দিন

অ্যাপ্লিকেশনের জন্য ইভেন্ট তৈরি করতে, অ্যাপ্লিকেশন দ্বারা প্রদর্শিত URL ব্যবহার করে সম্মেলনে যোগদান করুন৷ আপনি যোগদান করার পরে, আপনি ইভেন্টগুলি ট্রিগার করতে এই ক্রিয়াগুলি চেষ্টা করতে পারেন:

  • ত্যাগ করুন এবং মিটিংয়ে পুনরায় যোগ দিন।
  • অন্যদের আমন্ত্রণ জানান বা আপনার ফোন দিয়ে ডায়াল করুন৷
  • রেকর্ডিং এবং প্রতিলিপি সক্ষম করুন.

এই ক্রিয়াকলাপগুলির প্রতিটি একটি ইভেন্ট তৈরি করে যা অ্যাপ্লিকেশনটি গ্রহণ করে এবং Google ক্লাউড কনসোলে লগ করে।

আপনার কাজ শেষ হয়ে গেলে প্রোগ্রামটি বাধা দিতে ctrl-c ব্যবহার করুন।

ঐচ্ছিক: চেষ্টা করার জন্য অতিরিক্ত পদক্ষেপ

অ্যাপটি ইভেন্ট সম্পর্কে প্রাথমিক বিবরণ লগ করে। Meet REST API অন্বেষণ চালিয়ে যেতে, এই অতিরিক্ত অ্যাকশনগুলি সম্পাদন করার জন্য অ্যাপ্লিকেশনটি পরিবর্তন করার চেষ্টা করুন।

  • সাইন-ইন করা অংশগ্রহণকারীদের সম্পর্কে অতিরিক্ত তথ্য পুনরুদ্ধার করতে People API ব্যবহার করুন।
  • রেকর্ডিং এবং ট্রান্সক্রিপ্ট ডাউনলোড করতে Google Drive API ব্যবহার করুন।
  • Google ড্রাইভ থেকে ট্রান্সক্রিপ্ট ডাউনলোড করার পরিবর্তে, Meet REST API-এ স্ট্রাকচার্ড ট্রান্সক্রিপ্ট পদ্ধতি ব্যবহার করে সেগুলি পুনরুদ্ধার করুন।

ঐচ্ছিক: পরিষ্কার করুন

এই টিউটোরিয়ালে ব্যবহৃত সংস্থানগুলির জন্য আপনার Google ক্লাউড কনসোল অ্যাকাউন্টে চার্জ এড়াতে, আমরা সুপারিশ করি যে আপনি তৈরি করা কোনও সংস্থান এবং প্রকল্পগুলি পরিষ্কার করুন৷

সদস্যতা মুছে ফেলতে:

কনসোল

  1. Google ক্লাউড কনসোলে, মেনু > Pub/Sub > সদস্যতাগুলিতে যান

    সাবস্ক্রিপশনে যান

  2. সদস্যতা নির্বাচন করুন এবং More কর্মে ক্লিক করুন।

  3. মুছুন ক্লিক করুন। সাবস্ক্রিপশন মুছুন উইন্ডোটি প্রদর্শিত হবে।

  4. মুছুন ক্লিক করুন।

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

  1. সদস্যতা মুছুন:

    gcloud pubsub subscriptions delete SUBSCRIPTION_NAME

বিষয় মুছে ফেলার জন্য:

কনসোল

  1. Google ক্লাউড কনসোলে, মেনু > পাব/সাব > বিষয়গুলিতে যান

    বিষয়গুলিতে যান

  2. বিষয় নির্বাচন করুন এবং More কর্মে ক্লিক করুন।

  3. মুছুন ক্লিক করুন। ডিলিট টপিক উইন্ডো আসবে।

  4. delete লিখুন এবং তারপর মুছুন ক্লিক করুন।

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

  1. বিষয় মুছে ফেলুন:

    gcloud pubsub topics delete TOPIC_NAME

প্রকল্প মুছে ফেলতে:

কনসোল

  1. Google ক্লাউড কনসোলে, সম্পদ পরিচালনা পৃষ্ঠাতে যান। মেনু > আইএএম এবং অ্যাডমিন > সম্পদ পরিচালনা করুন ক্লিক করুন।

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

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

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

  1. একটি প্রকল্প মুছে ফেলতে, gcloud projects delete কমান্ড ব্যবহার করুন:

    gcloud projects delete PROJECT_ID