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