পুশ বিজ্ঞপ্তি, পুশ বিজ্ঞপ্তি

ওভারভিউ

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

প্রাথমিক ক্লাউড পাব/সাব সেটআপ

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

পূর্বশর্ত

এই সেটআপের বাকি অংশটি সম্পূর্ণ করার জন্য, নিশ্চিত করুন যে আপনি ক্লাউড পাব/সাব পূর্বশর্তগুলি পূরণ করেছেন এবং তারপরে একটি ক্লাউড পাব/সাব ক্লায়েন্ট সেট আপ করেছেন

একটি বিষয় তৈরি করুন

আপনার ক্লাউড পাব/সাব ক্লায়েন্ট ব্যবহার করে, জিমেইল এপিআই বিজ্ঞপ্তি পাঠাতে হবে এমন বিষয় তৈরি করুন । বিষয়ের নামটি আপনার প্রকল্পের অধীনে আপনার চয়ন করা যেকোনো নাম হতে পারে (যেমন projects/myproject/topics/* , যেখানে myproject হল Google Developers Console-এ আপনার প্রজেক্টের জন্য তালিকাভুক্ত প্রজেক্ট আইডি )।

আমরা সুপারিশ করি যে আপনি আপনার অ্যাপ্লিকেশনের জন্য সমস্ত Gmail API পুশ বিজ্ঞপ্তিগুলির জন্য একটি একক বিষয় ব্যবহার করুন, বিষয়গুলির সংখ্যার উপর ক্লাউড পাব/সাব সীমাবদ্ধতার কারণে৷

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

আপনার তৈরি করা বিষয়ের সদস্যতা সেট আপ করতে ক্লাউড পাব/সাবস্ক্রাইবার গাইড অনুসরণ করুন। সাবস্ক্রিপশনের ধরনটিকে একটি ওয়েবহুক পুশ (যেমন HTTP POST কলব্যাক) বা পুল (যেমন আপনার অ্যাপ দ্বারা শুরু করা) হতে কনফিগার করুন। এইভাবে আপনার অ্যাপ্লিকেশন আপডেটের জন্য বিজ্ঞপ্তি পাবে।

আপনার বিষয়ে প্রকাশের অধিকার দিন

ক্লাউড পাব/সাবের জন্য প্রয়োজন যে আপনি আপনার বিষয়ে বিজ্ঞপ্তি প্রকাশ করার জন্য Gmail বিশেষাধিকারগুলি মঞ্জুর করুন৷

এটি করার জন্য, আপনাকে gmail-api-push@system.gserviceaccount.compublish সুবিধা প্রদান করতে হবে। আপনি ক্লাউড পাব/সাব ডেভেলপার কনসোল অনুমতি ইন্টারফেস ব্যবহার করে সম্পদ-স্তরের অ্যাক্সেস নিয়ন্ত্রণ নির্দেশাবলী অনুসরণ করে এটি করতে পারেন।

জিমেইল মেইলবক্স আপডেট করা হচ্ছে

প্রাথমিক ক্লাউড পাব/সাব সেটআপ শেষ হয়ে গেলে, মেলবক্স আপডেটের জন্য বিজ্ঞপ্তি পাঠাতে Gmail অ্যাকাউন্ট কনফিগার করুন।

দেখার অনুরোধ

আপনার ক্লাউড পাব/সাব বিষয়ে বিজ্ঞপ্তি পাঠানোর জন্য Gmail অ্যাকাউন্টগুলি কনফিগার করতে, অন্য যেকোনো Gmail API কলের মতো Gmail ব্যবহারকারী মেলবক্সে watch কল করতে আপনার Gmail API ক্লায়েন্ট ব্যবহার করুন। এটি করার জন্য, উপরে তৈরি বিষয়ের নাম এবং আপনার watch অনুরোধে অন্যান্য বিকল্পগুলি প্রদান করুন, যেমন ফিল্টার করার জন্য labels । উদাহরণ স্বরূপ, ইনবক্সে পরিবর্তন করা হলে যে কোনো সময় সূচিত হতে হবে:

প্রোটোকল

POST "https://www.googleapis.com/gmail/v1/users/me/watch"
Content-type: application/json

{
  topicName: "projects/myproject/topics/mytopic",
  labelIds: ["INBOX"],
  labelFilterBehavior: "INCLUDE",
}

পাইথন

request = {
  'labelIds': ['INBOX'],
  'topicName': 'projects/myproject/topics/mytopic',
  'labelFilterBehavior': 'INCLUDE'
}
gmail.users().watch(userId='me', body=request).execute()

প্রতিক্রিয়া দেখুন

watch অনুরোধ সফল হলে আপনি একটি প্রতিক্রিয়া পাবেন:

{
  historyId: 1234567890
  expiration: 1431990098200
}

ব্যবহারকারীর জন্য বর্তমান মেলবক্স historyId সহ। সেই historyId পরে সমস্ত পরিবর্তন আপনার ক্লায়েন্টকে অবহিত করা হবে। আপনি যদি এই historyId এর আগে পরিবর্তনগুলি প্রক্রিয়া করতে চান, তাহলে সিঙ্ক গাইড পড়ুন।

উপরন্তু, একটি সফল watch কল অবিলম্বে আপনার ক্লাউড পাব/সাব বিষয়ে একটি বিজ্ঞপ্তি পাঠানো উচিত।

আপনি যদি watch কল থেকে একটি ত্রুটি পান, বিশদ বিবরণে সমস্যাটির উত্স ব্যাখ্যা করা উচিত, যা সাধারণত ক্লাউড পাব/সাব বিষয় এবং সদস্যতার সেটআপের সাথে হয়। সেটআপ সঠিক এবং ডিবাগিং বিষয় এবং সদস্যতা সংক্রান্ত সমস্যায় সহায়তার জন্য ক্লাউড পাব/সাব ডকুমেন্টেশন দেখুন।

মেলবক্স ঘড়ি পুনর্নবীকরণ

আপনাকে অবশ্যই প্রতি 7 দিন পর পর watch পুনরায় কল করতে হবে অন্যথায় আপনি ব্যবহারকারীর জন্য আপডেটগুলি পাওয়া বন্ধ করে দেবেন৷ আমরা প্রতিদিন একবার watch কল করার পরামর্শ দিই। watch প্রতিক্রিয়াতে watch মেয়াদ শেষ হওয়ার টাইমস্ট্যাম্প সহ একটি মেয়াদ শেষ হওয়ার ক্ষেত্রও রয়েছে।

বিজ্ঞপ্তি গ্রহণ করা হচ্ছে

যখনই একটি মেলবক্স আপডেট ঘটে যা আপনার watch সাথে মেলে, আপনার অ্যাপ্লিকেশন পরিবর্তনটি বর্ণনা করে একটি বিজ্ঞপ্তি বার্তা পাবে৷

আপনি যদি একটি পুশ সাবস্ক্রিপশন কনফিগার করে থাকেন, তাহলে আপনার সার্ভারে একটি ওয়েবহুক বিজ্ঞপ্তি একটি PubsubMessage এর সাথে সঙ্গতিপূর্ণ হবে:

POST https://yourserver.example.com/yourUrl
Content-type: application/json

{
  message:
  {
    // This is the actual notification data, as base64url-encoded JSON.
    data: "eyJlbWFpbEFkZHJlc3MiOiAidXNlckBleGFtcGxlLmNvbSIsICJoaXN0b3J5SWQiOiAiMTIzNDU2Nzg5MCJ9",

    // This is a Cloud Pub/Sub message id, unrelated to Gmail messages.
    "messageId": "2070443601311540",

    // This is the publish time of the message.
    "publishTime": "2021-02-26T19:13:55.749Z",
  }

  subscription: "projects/myproject/subscriptions/mysubscription"
}

HTTP POST বডি হল JSON এবং প্রকৃত Gmail নোটিফিকেশন পেলোড হল message.data ফিল্ডে। সেই message.data ক্ষেত্রটি হল একটি base64url-এনকোড করা স্ট্রিং যা ব্যবহারকারীর জন্য ইমেল ঠিকানা এবং নতুন মেলবক্স ইতিহাস আইডি ধারণকারী JSON অবজেক্টে ডিকোড করে:

{"emailAddress": "user@example.com", "historyId": "9876543210"}

তারপর আপনি সিঙ্ক গাইড অনুসারে ব্যবহারকারীর সর্বশেষ পরিচিত historyId থেকে পরিবর্তনের বিশদ পেতে history.list ব্যবহার করতে পারেন।

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

বিজ্ঞপ্তির প্রতিক্রিয়া

সমস্ত বিজ্ঞপ্তি স্বীকার করা প্রয়োজন. আপনি যদি ওয়েবহুক পুশ ডেলিভারি ব্যবহার করেন, তাহলে সফলভাবে সাড়া দিলে (যেমন HTTP 200) বিজ্ঞপ্তিটি স্বীকার করবে।

যদি পুল ডেলিভারি ব্যবহার করা হয় ( REST Pull , RPC Pull , or RPC StreamingPull ) তাহলে আপনাকে অবশ্যই একটি স্বীকৃতি কল ( REST বা RPC ) অনুসরণ করতে হবে৷ অফিসিয়াল RPC-ভিত্তিক ক্লায়েন্ট লাইব্রেরিগুলি ব্যবহার করে অ্যাসিঙ্ক্রোনাস বা সিঙ্ক্রোনাসভাবে বার্তাগুলি স্বীকার করার বিষয়ে আরও বিশদের জন্য ক্লাউড পাব/সাবস্ক্রাইবার পুল গাইডের কোড নমুনাগুলি পড়ুন৷

যদি বিজ্ঞপ্তিগুলি স্বীকার না করা হয় (যেমন আপনার ওয়েবহুক কলব্যাক একটি ত্রুটি বা সময় শেষ হয়ে যায়), ক্লাউড পাব/সাব পরবর্তী সময়ে বিজ্ঞপ্তির জন্য পুনরায় চেষ্টা করবে৷

মেইলবক্স আপডেট বন্ধ করা হচ্ছে

একটি মেলবক্সে আপডেট পাওয়া বন্ধ করতে, কল stop এবং সমস্ত নতুন বিজ্ঞপ্তি কয়েক মিনিটের মধ্যে বন্ধ হয়ে যাবে।

সীমাবদ্ধতা

সর্বাধিক বিজ্ঞপ্তি হার

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

নির্ভরযোগ্যতা

সাধারণত সমস্ত বিজ্ঞপ্তি কয়েক সেকেন্ডের মধ্যে নির্ভরযোগ্যভাবে বিতরণ করা উচিত; তবে কিছু চরম পরিস্থিতিতে বিজ্ঞপ্তি বিলম্বিত বা বাদ দেওয়া হতে পারে। এই সম্ভাবনাটি সুন্দরভাবে পরিচালনা করা নিশ্চিত করুন, যাতে কোনও পুশ বার্তা না পাওয়া গেলেও অ্যাপ্লিকেশনটি এখনও সিঙ্ক হয়। উদাহরণস্বরূপ, কোনো ব্যবহারকারীর জন্য কোনো বিজ্ঞপ্তি ছাড়াই পর্যায়ক্রমে কলিং history.list এ ফিরে যান।

ক্লাউড পাব/সাব সীমাবদ্ধতা

ক্লাউড পাব/সাব API-এর নিজস্ব সীমাবদ্ধতাও রয়েছে, বিশেষভাবে এর মূল্য এবং কোটা ডকুমেন্টেশনে বিস্তারিত।