এই ডকুমেন্টটি ব্যাখ্যা করে কিভাবে Gmail API-তে পুশ নোটিফিকেশন পরিচালনা করতে হয়।
জিমেইল এপিআই সার্ভার পুশ নোটিফিকেশন প্রদান করে যা আপনাকে জিমেইল মেলবক্সে পরিবর্তনের দিকে নজর রাখতে দেয়। আপনার অ্যাপ্লিকেশনের কর্মক্ষমতা উন্নত করতে এই বৈশিষ্ট্যটি ব্যবহার করুন। এটি অতিরিক্ত নেটওয়ার্ক দূর করে এবং পোলিং রিসোর্সের খরচ গণনা করে নির্ধারণ করে যে সেগুলি পরিবর্তিত হয়েছে কিনা। যখনই কোনও মেলবক্স পরিবর্তন হয়, জিমেইল এপিআই আপনার ব্যাকএন্ড সার্ভার অ্যাপ্লিকেশনকে অবহিত করে।
প্রাথমিক ক্লাউড পাব/সাব সেটআপ
পুশ নোটিফিকেশন প্রদানের জন্য জিমেইল এপিআই ক্লাউড পাব/সাব এপিআই ব্যবহার করে। এটি ওয়েবহুক এবং একক সাবস্ক্রিপশন এন্ডপয়েন্টে পোলিং সহ বিভিন্ন পদ্ধতি ব্যবহার করে নোটিফিকেশন প্রদানের অনুমতি দেয়।
পূর্বশর্ত
এই সেটআপটি সম্পূর্ণ করতে, ক্লাউড পাব/সাব পূর্বশর্তগুলি পূরণ করুন এবং তারপর একটি ক্লাউড পাব/সাব ক্লায়েন্ট সেট আপ করুন ।
একটি বিষয় তৈরি করুন
আপনার ক্লাউড পাব/সাব ক্লায়েন্ট ব্যবহার করে, এমন একটি বিষয় তৈরি করুন যেখানে Gmail API বিজ্ঞপ্তি পাঠাবে। বিষয়ের নাম আপনার প্রকল্পের অধীনে আপনার পছন্দের যেকোনো নাম হতে পারে (উদাহরণস্বরূপ, মিলিত projects/myproject/topics/* , যেখানে myproject হল Google Cloud কনসোলে আপনার প্রকল্পের জন্য তালিকাভুক্ত প্রকল্প আইডি)।
একটি সাবস্ক্রিপশন তৈরি করুন
আপনার তৈরি করা বিষয়ের জন্য সাবস্ক্রিপশন সেট আপ করতে, ক্লাউড পাব/সাব সাবস্ক্রিপশন টাইপ গাইড অনুসরণ করুন। সাবস্ক্রিপশন টাইপটি ওয়েবহুক পুশ (অর্থাৎ, একটি HTTP POST কলব্যাক) অথবা একটি পুল (অর্থাৎ, আপনার অ্যাপ দ্বারা শুরু করা) হিসেবে কনফিগার করুন। এইভাবে আপনার অ্যাপ্লিকেশন আপডেটের জন্য বিজ্ঞপ্তি গ্রহণ করে।
আপনার বিষয়ে প্রকাশনার অধিকার প্রদান করুন
ক্লাউড পাব/সাব-এর জন্য আপনার বিষয়ের বিজ্ঞপ্তি প্রকাশ করার জন্য Gmail-কে বিশেষাধিকার প্রদান করা প্রয়োজন।
এটি করার জন্য, gmail-api-push@system.gserviceaccount.com ঠিকানায় publish সুবিধা প্রদান করুন। আপনি এই অ্যাক্সেস নিয়ন্ত্রণ নির্দেশাবলী অনুসরণ করে Google Cloud কনসোলে Cloud Pub/Sub অনুমতি কনসোল ব্যবহার করে এটি করতে পারেন।
আপনার প্রতিষ্ঠানের ডোমেন সীমাবদ্ধ শেয়ারিং কনফিগারেশন আপনাকে প্রকাশনার অনুমতি দিতে বাধা দিতে পারে। এটি সমাধানের জন্য, আপনি এই পরিষেবা অ্যাকাউন্টের জন্য একটি ব্যতিক্রম কনফিগার করতে পারেন।
জিমেইল মেলবক্স আপডেট পান
প্রাথমিক ক্লাউড পাব/সাব সেটআপ শেষ হওয়ার পরে, মেলবক্স আপডেটের জন্য বিজ্ঞপ্তি পাঠানোর জন্য 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 থাকে। আপনার ক্লায়েন্ট সেই historyId পরে সমস্ত পরিবর্তনের জন্য বিজ্ঞপ্তি পায়। যদি আপনার এই historyId এর আগে পরিবর্তনগুলি প্রক্রিয়া করার প্রয়োজন হয়, তাহলে Gmail API এর সাথে ক্লায়েন্টদের সিঙ্ক্রোনাইজ করুন দেখুন।
এছাড়াও, একটি সফল watch কলের ফলে আপনার ক্লাউড পাব/সাব টপিকে অবিলম্বে একটি বিজ্ঞপ্তি পাঠানো হবে।
যদি আপনি watch কল থেকে কোনও ত্রুটি পান, তাহলে সমস্যার উৎস সম্পর্কে বিস্তারিত তথ্য দেওয়া উচিত। এটি সাধারণত ক্লাউড পাব/সাব টপিক এবং সাবস্ক্রিপশন সেটআপের ক্ষেত্রে একটি সমস্যা। সেটআপটি সঠিক কিনা তা নিশ্চিত করতে এবং টপিক এবং সাবস্ক্রিপশন সমস্যাগুলি ডিবাগ করতে সাহায্যের জন্য ক্লাউড পাব/সাব ডকুমেন্টেশন দেখুন।
মেলবক্স ঘড়ি পুনর্নবীকরণ করুন
আপনাকে প্রতি ৭ দিনে অন্তত একবার watch কল করতে হবে, নাহলে ব্যবহারকারীর আপডেট পাওয়া বন্ধ হয়ে যাবে। আমরা প্রতিদিন একবার watch কল করার পরামর্শ দিচ্ছি। watch watch শেষ হওয়ার টাইমস্ট্যাম্প সহ একটি expiration ক্ষেত্রও রয়েছে।
বিজ্ঞপ্তি গ্রহণ করুন
যখনই আপনার 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"}
এরপর আপনি history.list পদ্ধতি ব্যবহার করে ব্যবহারকারীর সর্বশেষ পরিচিত historyId থেকে পরিবর্তনের বিবরণ পেতে পারেন, যেমনটি Gmail API এর সাথে ক্লায়েন্টদের সিঙ্ক্রোনাইজ করুন এ বর্ণিত হয়েছে।
উদাহরণস্বরূপ, আপনার প্রাথমিক watch অনুরোধ এবং পূর্ববর্তী উদাহরণে শেয়ার করা বিজ্ঞপ্তি বার্তা প্রাপ্তির মধ্যে ঘটে যাওয়া পরিবর্তনগুলি সনাক্ত করতে history.list পদ্ধতি ব্যবহার করুন। startHistoryId হিসেবে 1234567890 history.list এ পাস করুন। এরপর, ভবিষ্যতে ব্যবহারের ক্ষেত্রে আপনি 9876543210 সর্বশেষ পরিচিত historyId হিসেবে ধরে রাখতে পারেন।
যদি আপনি এর পরিবর্তে একটি পুল সাবস্ক্রিপশন কনফিগার করে থাকেন, তাহলে বার্তা গ্রহণের বিষয়ে আরও বিস্তারিত জানার জন্য ক্লাউড পাব/সাবের পুল সাবস্ক্রিপশন গাইডের কোড নমুনাগুলি দেখুন।
বিজ্ঞপ্তির উত্তর দিন
সমস্ত বিজ্ঞপ্তি স্বীকার করতে হবে। যদি আপনি ওয়েবহুক পুশ ডেলিভারি ব্যবহার করেন, তাহলে সফলভাবে সাড়া দেওয়া (উদাহরণস্বরূপ, HTTP 200) বিজ্ঞপ্তি স্বীকার করবে।
যদি আপনি পুল ডেলিভারি ( REST Pull , RPC Pull , অথবা RPC StreamingPull ) ব্যবহার করেন, তাহলে আপনাকে অবশ্যই একটি স্বীকৃতি কল ( REST অথবা RPC ) অনুসরণ করতে হবে। অফিসিয়াল RPC-ভিত্তিক ক্লায়েন্ট লাইব্রেরি ব্যবহার করে অ্যাসিঙ্ক্রোনাস বা সিঙ্ক্রোনাসভাবে বার্তাগুলি স্বীকৃতি দেওয়ার বিষয়ে আরও বিশদ জানতে ক্লাউড পাব/সাবের পুল সাবস্ক্রিপশন গাইডের কোড নমুনাগুলি দেখুন।
যদি আপনি বিজ্ঞপ্তিগুলি স্বীকার না করেন (উদাহরণস্বরূপ, যদি আপনার ওয়েবহুক কলব্যাক কোনও ত্রুটি বা সময়সীমা ফেরত দেয়), তাহলে ক্লাউড পাব/সাব পরে বিজ্ঞপ্তিটি পুনরায় চেষ্টা করে।
মেলবক্স আপডেট বন্ধ করুন
মেলবক্সে আপডেট পাওয়া বন্ধ করতে, stop পদ্ধতিতে কল করুন। সমস্ত নতুন বিজ্ঞপ্তি কয়েক মিনিটের মধ্যে বন্ধ হয়ে যাবে।
সীমাবদ্ধতা
সার্ভার পুশ নোটিফিকেশনের সাথে কাজ করার সীমাবদ্ধতাগুলি নিম্নরূপ:
সর্বোচ্চ বিজ্ঞপ্তির হার
প্রতিটি Gmail ব্যবহারকারীর নজরদারিতে থাকা সর্বোচ্চ বিজ্ঞপ্তির হার প্রতি সেকেন্ডে একটি ইভেন্ট। এই হারের বেশি ব্যবহারকারীর বিজ্ঞপ্তি বাদ দেওয়া হবে। বিজ্ঞপ্তি পরিচালনা করার সময়, অন্য কোনও বিজ্ঞপ্তি ট্রিগার না করার বিষয়ে সতর্ক থাকুন, যা একটি বিজ্ঞপ্তি লুপ শুরু করতে পারে।
নির্ভরযোগ্যতা
সাধারণত, সমস্ত বিজ্ঞপ্তি কয়েক সেকেন্ডের মধ্যে নির্ভরযোগ্যভাবে পৌঁছে দেওয়া হয়; তবে, কিছু চরম পরিস্থিতিতে, বিজ্ঞপ্তি বিলম্বিত হতে পারে বা বাদ পড়তে পারে। এই সম্ভাবনাটি সুন্দরভাবে পরিচালনা করুন যাতে কোনও পুশ বার্তা না পাওয়া সত্ত্বেও অ্যাপ্লিকেশনটি এখনও সিঙ্ক হয়। উদাহরণস্বরূপ, ব্যবহারকারীর জন্য কোনও বিজ্ঞপ্তি ছাড়াই একটি পিরিয়ডের পরে পর্যায়ক্রমে history.list পদ্ধতিতে কল করা শুরু করুন।
ক্লাউড পাব/সাব সীমাবদ্ধতা
ক্লাউড পাব/সাব এপিআই-এর নিজস্ব সীমাবদ্ধতাও রয়েছে, যা এর মূল্য এবং কোটা ডকুমেন্টেশনে বিস্তারিতভাবে উল্লেখ করা হয়েছে।