পুশ বিজ্ঞপ্তি পান

এই ডকুমেন্টে বর্ণনা করা হয়েছে কীভাবে পুশ নোটিফিকেশন ব্যবহার করে কোনো রিসোর্স পরিবর্তিত হলে আপনার অ্যাপ্লিকেশনকে জানানো যায়।

সংক্ষিপ্ত বিবরণ

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

পুশ নোটিফিকেশন ব্যবহার করতে হলে আপনাকে দুটি কাজ করতে হবে:

  • আপনার গ্রহণকারী ইউআরএল অথবা 'ওয়েবহুক' কলব্যাক রিসিভার সেট আপ করুন।

    এটি একটি HTTPS সার্ভার যা কোনো রিসোর্স পরিবর্তিত হলে ট্রিগার হওয়া API নোটিফিকেশন মেসেজগুলো পরিচালনা করে।

  • আপনি যে প্রতিটি রিসোর্স এন্ডপয়েন্ট পর্যবেক্ষণ করতে চান, তার জন্য একটি ( নোটিফিকেশন চ্যানেল ) সেট আপ করুন।

    একটি চ্যানেল নোটিফিকেশন মেসেজের জন্য রাউটিং তথ্য নির্দিষ্ট করে। চ্যানেল সেটআপের অংশ হিসেবে, আপনাকে অবশ্যই সেই নির্দিষ্ট URL-টি চিহ্নিত করতে হবে যেখানে আপনি নোটিফিকেশন পেতে চান। যখনই কোনো চ্যানেলের রিসোর্স পরিবর্তিত হয়, গুগল ক্যালেন্ডার এপিআই সেই URL-টিতে একটি POST রিকোয়েস্ট হিসেবে নোটিফিকেশন মেসেজ পাঠায়।

বর্তমানে, গুগল ক্যালেন্ডার এপিআই ACL , CalendarList , Events এবং Settings রিসোর্সগুলোর পরিবর্তনের জন্য নোটিফিকেশন সমর্থন করে।

বিজ্ঞপ্তি চ্যানেল তৈরি করুন

পুশ নোটিফিকেশনের অনুরোধ করতে, আপনি যে প্রতিটি রিসোর্স নিরীক্ষণ করতে চান তার জন্য আপনাকে একটি নোটিফিকেশন চ্যানেল সেট আপ করতে হবে। আপনার নোটিফিকেশন চ্যানেলগুলি সেট আপ করা হয়ে গেলে, নিরীক্ষণাধীন কোনো রিসোর্স পরিবর্তিত হলে গুগল ক্যালেন্ডার এপিআই আপনার অ্যাপ্লিকেশনকে জানিয়ে দেয়।

ঘড়ির অনুরোধ করুন

প্রতিটি পর্যবেক্ষণযোগ্য গুগল ক্যালেন্ডার এপিআই রিসোর্সের সাথে নিম্নলিখিত ফর্ম্যাটের একটি URI-তে একটি সংশ্লিষ্ট watch মেথড থাকে:

https://www.googleapis.com/API_NAME/API_VERSION/RESOURCE_PATH/watch

কোনো নির্দিষ্ট রিসোর্সের পরিবর্তন সংক্রান্ত বার্তার জন্য একটি নোটিফিকেশন চ্যানেল সেট আপ করতে, রিসোর্সটির watch মেথডে একটি POST রিকোয়েস্ট পাঠান।

প্রতিটি নোটিফিকেশন চ্যানেল একজন নির্দিষ্ট ব্যবহারকারী এবং একটি নির্দিষ্ট রিসোর্স (বা রিসোর্সসমূহের সেট)-এর সাথে যুক্ত থাকে। বর্তমান ব্যবহারকারী এই রিসোর্সটির মালিক না হলে বা এটি অ্যাক্সেস করার অনুমতি না থাকলে, একটি watch রিকোয়েস্ট সফল হবে না।

উদাহরণ

একটি নির্দিষ্ট ক্যালেন্ডারে থাকা একাধিক ইভেন্টের পরিবর্তনের দিকে নজর রাখা শুরু করুন:

POST https://www.googleapis.com/calendar/v3/calendars/my_calendar@gmail.com/events/watch
Authorization: Bearer auth_token_for_current_user
Content-Type: application/json

{
  "id": "01234567-89ab-cdef-0123456789ab",
  "type": "web_hook",
  "address": "https://mydomain.com/notifications",
  ...
  "token": "target=myApp-myCalendarChannelDest",
  "expiration": 1426325213000
}

রিকোয়েস্ট বডিতে আপনার চ্যানেল id , type হিসেবে web_hook , এবং address অংশে আপনার রিসিভিং ইউআরএল প্রদান করুন। এছাড়াও আপনি ঐচ্ছিকভাবে নিম্নলিখিতগুলি প্রদান করতে পারেন:

  • আপনার চ্যানেল টোকেন হিসেবে ব্যবহার করার জন্য একটি token
  • আপনার অনুরোধ করা চ্যানেলের মেয়াদ expiration হওয়ার সময় মিলিসেকেন্ডে।

প্রয়োজনীয় সম্পত্তি

প্রতিটি watch রিকোয়েস্টের সাথে আপনাকে অবশ্যই এই ফিল্ডগুলো প্রদান করতে হবে:

  • একটি id প্রপার্টি স্ট্রিং যা আপনার প্রোজেক্টের মধ্যে এই নতুন নোটিফিকেশন চ্যানেলটিকে অনন্যভাবে শনাক্ত করে। আমরা একটি সার্বজনীনভাবে অনন্য শনাক্তকারী ( UUID ) বা এই জাতীয় কোনো অনন্য স্ট্রিং ব্যবহার করার পরামর্শ দিই। সর্বোচ্চ দৈর্ঘ্য: ৬৪ অক্ষর।

    আপনার সেট করা আইডি মানটি এই চ্যানেলের জন্য প্রাপ্ত প্রতিটি নোটিফিকেশন বার্তার X-Goog-Channel-Id HTTP হেডারে প্রতিফলিত হয়।

  • একটি type প্রপার্টি স্ট্রিং যার মান web_hook এ সেট করা হয়েছে।

  • এই নোটিফিকেশন চ্যানেলের জন্য নোটিফিকেশন শোনা ও সেগুলোর উত্তর দেওয়ার URL-এ সেট করা একটি address প্রপার্টি স্ট্রিং। এটি আপনার ওয়েবহুক কলব্যাক URL, এবং এতে অবশ্যই HTTPS ব্যবহার করতে হবে।

    মনে রাখবেন যে, গুগল ক্যালেন্ডার এপিআই এই HTTPS ঠিকানায় নোটিফিকেশন পাঠাতে পারবে শুধুমাত্র যদি আপনার ওয়েব সার্ভারে একটি বৈধ SSL সার্টিফিকেট ইনস্টল করা থাকে। অবৈধ সার্টিফিকেটগুলোর মধ্যে রয়েছে:

    • স্ব-স্বাক্ষরিত সনদপত্র।
    • অবিশ্বস্ত উৎস দ্বারা স্বাক্ষরিত সনদপত্র।
    • যে সনদপত্রগুলো বাতিল করা হয়েছে।
    • যেসব সার্টিফিকেটের সাবজেক্ট টার্গেট হোস্টনেমের সাথে মেলে না।

ঐচ্ছিক বৈশিষ্ট্য

আপনি আপনার watch রিকোয়েস্টের সাথে এই ঐচ্ছিক ফিল্ডগুলোও নির্দিষ্ট করতে পারেন:

  • একটি token প্রপার্টি যা চ্যানেল টোকেন হিসেবে ব্যবহারের জন্য একটি যথেচ্ছ স্ট্রিং ভ্যালু নির্দিষ্ট করে। আপনি বিভিন্ন উদ্দেশ্যে নোটিফিকেশন চ্যানেল টোকেন ব্যবহার করতে পারেন। উদাহরণস্বরূপ, প্রতিটি আগত বার্তা আপনার অ্যাপ্লিকেশন দ্বারা তৈরি করা একটি চ্যানেলের জন্য কিনা তা যাচাই করতে—নোটিফিকেশনটি স্পুফিং হচ্ছে না তা নিশ্চিত করতে—অথবা এই চ্যানেলের উদ্দেশ্যের উপর ভিত্তি করে বার্তাটিকে আপনার অ্যাপ্লিকেশনের মধ্যে সঠিক গন্তব্যে পাঠাতে আপনি টোকেনটি ব্যবহার করতে পারেন। সর্বোচ্চ দৈর্ঘ্য: ২৫৬ অক্ষর।

    এই চ্যানেলের জন্য আপনার অ্যাপ্লিকেশন যে প্রতিটি নোটিফিকেশন মেসেজ পায়, তার X-Goog-Channel-Token HTTP হেডারে টোকেনটি অন্তর্ভুক্ত থাকে।

    আপনি যদি নোটিফিকেশন চ্যানেল টোকেন ব্যবহার করেন, তাহলে আমরা আপনাকে নিম্নলিখিত পরামর্শ দিই:

    • একটি সম্প্রসারণযোগ্য এনকোডিং ফরম্যাট ব্যবহার করুন, যেমন ইউআরএল কোয়েরি প্যারামিটার। উদাহরণ: forwardTo=hr&createdBy=mobile

    • OAuth টোকেনের মতো সংবেদনশীল তথ্য অন্তর্ভুক্ত করবেন না।

  • একটি expiration প্রপার্টি স্ট্রিং, যা সেই তারিখ ও সময়ের একটি ইউনিক্স টাইমস্ট্যাম্পে (মিলিসেকেন্ডে) সেট করা থাকে, যখন আপনি চান যে গুগল ক্যালেন্ডার এপিআই এই নোটিফিকেশন চ্যানেলের জন্য বার্তা পাঠানো বন্ধ করুক।

    যদি কোনো চ্যানেলের মেয়াদ শেষ হওয়ার সময় থাকে, তাহলে আপনার অ্যাপ্লিকেশন সেই চ্যানেলের জন্য যে প্রতিটি নোটিফিকেশন মেসেজ পায়, তাতে X-Goog-Channel-Expiration HTTP হেডারের ভ্যালু হিসেবে (সহজবোধ্য ফরম্যাটে) তা অন্তর্ভুক্ত করা হয়।

অনুরোধটি সম্পর্কে আরও বিস্তারিত জানতে, এপিআই রেফারেন্সে থাকা ACL , CalendarList , Events এবং Settings রিসোর্সগুলোর watch মেথডটি দেখুন।

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

যদি watch রিকোয়েস্টটি সফলভাবে একটি নোটিফিকেশন চ্যানেল তৈরি করে, তাহলে এটি একটি HTTP 200 OK স্ট্যাটাস কোড রিটার্ন করে।

ওয়াচ রেসপন্সের মেসেজ বডি আপনার সদ্য তৈরি করা নোটিফিকেশন চ্যানেলটি সম্পর্কে তথ্য প্রদান করে, যেমনটি নিচের উদাহরণে দেখানো হয়েছে।

{
  "kind": "api#channel",
  "id": "01234567-89ab-cdef-0123456789ab",
  "resourceId": "o3hgv1538sdjfh",
  "resourceUri": "https://www.googleapis.com/calendar/v3/calendars/my_calendar@gmail.com/events",
  "token": "target=myApp-myCalendarChannelDest",
  "expiration": 1426325213000
}

প্রতিক্রিয়ার মূল অংশে চ্যানেলের বিবরণ দেওয়া থাকে, যেমন:

  • kind : এটিকে একটি API চ্যানেল রিসোর্স হিসেবে চিহ্নিত করে।
  • id : এই চ্যানেলের জন্য আপনার নির্দিষ্ট করা আইডি।
  • resourceId : যে রিসোর্সটি পর্যবেক্ষণ করা হচ্ছে তার আইডি।
  • resourceUri : পর্যবেক্ষণাধীন রিসোর্সের সংস্করণ-ভিত্তিক আইডি।
  • token : অনুরোধের মূল অংশে প্রদত্ত টোকেন।
  • expiration : চ্যানেলটির মেয়াদ শেষ হওয়ার সময়, যা মিলিসেকেন্ডে একটি ইউনিক্স টাইমস্ট্যাম্প হিসেবে প্রকাশ করা হয়।

আপনার অনুরোধের অংশ হিসেবে পাঠানো প্রোপার্টিগুলো ছাড়াও, ফেরত আসা তথ্যে resourceId এবং resourceUri ও অন্তর্ভুক্ত থাকে, যা এই নোটিফিকেশন চ্যানেলে পর্যবেক্ষণাধীন রিসোর্সটিকে শনাক্ত করতে সাহায্য করে।

আপনি ফেরত আসা তথ্য অন্যান্য নোটিফিকেশন চ্যানেল অপারেশনে পাঠাতে পারেন, যেমন যখন আপনি নোটিফিকেশন পাওয়া বন্ধ করতে চান।

প্রতিক্রিয়া সম্পর্কে আরও বিশদ জানতে, এপিআই রেফারেন্সে থাকা ACL , CalendarList , Events এবং Settings রিসোর্সগুলির watch মেথডটি দেখুন।

সিঙ্ক বার্তা

কোনো রিসোর্স পর্যবেক্ষণ করার জন্য একটি নোটিফিকেশন চ্যানেল তৈরি করার পর, গুগল ক্যালেন্ডার এপিআই একটি sync মেসেজ পাঠায় যা নির্দেশ করে যে নোটিফিকেশন শুরু হচ্ছে। এই মেসেজগুলোর জন্য X-Goog-Resource-State HTTP হেডারের ভ্যালু হলো sync । নেটওয়ার্ক টাইমিং সমস্যার কারণে, watch মেথডের রেসপন্স পাওয়ার আগেও sync মেসেজটি পাওয়া সম্ভব।

sync নোটিফিকেশনটি উপেক্ষা করা নিরাপদ, তবে আপনি এটি ব্যবহারও করতে পারেন। উদাহরণস্বরূপ, যদি আপনি চ্যানেলটি রাখতে না চান, তাহলে নোটিফিকেশন পাওয়া বন্ধ করার জন্য একটি কলে X-Goog-Channel-ID এবং X-Goog-Resource-ID ভ্যালুগুলো ব্যবহার করতে পারেন। এছাড়াও, পরবর্তী ইভেন্টগুলোর জন্য প্রস্তুতি হিসেবে কিছু ইনিশিয়ালাইজেশন করতেও আপনি sync নোটিফিকেশনটি ব্যবহার করতে পারেন।

গুগল ক্যালেন্ডার এপিআই আপনার গ্রহণকারী ইউআরএল-এ যে sync বার্তাগুলো পাঠায়, তার ফরম্যাট নিচে দেখানো হলো।

POST https://mydomain.com/notifications // Your receiving URL.
X-Goog-Channel-ID: channel-ID-value
X-Goog-Channel-Token: channel-token-value
X-Goog-Channel-Expiration: expiration-date-and-time // In human-readable format. Present only if the channel expires.
X-Goog-Resource-ID: identifier-for-the-watched-resource
X-Goog-Resource-URI: version-specific-URI-of-the-watched-resource
X-Goog-Resource-State: sync
X-Goog-Message-Number: 1

সিঙ্ক মেসেজগুলোর X-Goog-Message-Number HTTP হেডারের মান সর্বদা 1 থাকে। এই চ্যানেলের প্রতিটি পরবর্তী নোটিফিকেশনের একটি মেসেজ নম্বর থাকে যা আগেরটির চেয়ে বড়, যদিও মেসেজ নম্বরগুলো ক্রমানুসারে হবে না।

বিজ্ঞপ্তি চ্যানেলগুলি পুনর্নবীকরণ করুন

একটি নোটিফিকেশন চ্যানেলের একটি মেয়াদ শেষ হওয়ার সময় থাকতে পারে, যার মান আপনার অনুরোধ অথবা গুগল ক্যালেন্ডার এপিআই-এর অভ্যন্তরীণ সীমা বা ডিফল্ট দ্বারা নির্ধারিত হয় (যেটি বেশি কঠোর, সেই মানটিই ব্যবহৃত হয়)। চ্যানেলটির মেয়াদ শেষ হওয়ার সময়, যদি থাকে, তবে তা watch মেথড দ্বারা ফেরত দেওয়া তথ্যে একটি ইউনিক্স টাইমস্ট্যাম্প (মিলিসেকেন্ডে) হিসেবে অন্তর্ভুক্ত থাকে। এছাড়াও, এই চ্যানেলের জন্য আপনার অ্যাপ্লিকেশন যে প্রতিটি নোটিফিকেশন মেসেজ পায়, তার X-Goog-Channel-Expiration HTTP হেডারে মেয়াদ শেষ হওয়ার তারিখ এবং সময় (সহজবোধ্য বিন্যাসে) অন্তর্ভুক্ত থাকে।

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

বিজ্ঞপ্তি গ্রহণ করুন

যখনই পর্যবেক্ষণাধীন কোনো রিসোর্স পরিবর্তিত হয়, আপনার অ্যাপ্লিকেশনটি সেই পরিবর্তন বর্ণনা করে একটি নোটিফিকেশন বার্তা পায়। গুগল ক্যালেন্ডার এপিআই এই বার্তাগুলো HTTPS POST অনুরোধ হিসেবে সেই URL-এ পাঠায়, যা আপনি এই নোটিফিকেশন চ্যানেলের জন্য address প্রপার্টি হিসেবে নির্দিষ্ট করেছেন।

বিজ্ঞপ্তি বার্তার বিন্যাস ব্যাখ্যা করুন

সমস্ত নোটিফিকেশন মেসেজে X-Goog- প্রিফিক্সযুক্ত এক সেট HTTP হেডার অন্তর্ভুক্ত থাকে। কিছু ধরণের নোটিফিকেশনে একটি মেসেজ বডিও থাকতে পারে।

হেডার

গুগল ক্যালেন্ডার এপিআই দ্বারা আপনার গ্রহণকারী ইউআরএল-এ পোস্ট করা নোটিফিকেশন মেসেজগুলিতে নিম্নলিখিত HTTP হেডারগুলি অন্তর্ভুক্ত থাকে:

হেডার বর্ণনা
সর্বদা উপস্থিত
X-Goog-Channel-ID এই নোটিফিকেশন চ্যানেলটি শনাক্ত করার জন্য আপনার দেওয়া UUID বা অন্য কোনো অনন্য স্ট্রিং।
X-Goog-Message-Number এই নোটিফিকেশন চ্যানেলের জন্য এই মেসেজটিকে শনাক্তকারী পূর্ণসংখ্যা। sync মেসেজের ক্ষেত্রে এর মান সর্বদা 1 হয়। চ্যানেলের প্রতিটি পরবর্তী মেসেজের জন্য মেসেজ নম্বর বৃদ্ধি পায়, কিন্তু সেগুলো ক্রমানুসারে সাজানো থাকে না।
X-Goog-Resource-ID পর্যবেক্ষণাধীন রিসোর্সকে শনাক্তকারী একটি অস্বচ্ছ মান। এই আইডিটি বিভিন্ন এপিআই সংস্করণে অপরিবর্তিত থাকে।
X-Goog-Resource-State নতুন রিসোর্স অবস্থা যা নোটিফিকেশনটি ট্রিগার করেছে। সম্ভাব্য মানগুলো হলো: sync , exists , অথবা not_exists
X-Goog-Resource-URI পর্যবেক্ষণাধীন রিসোর্সটির জন্য একটি এপিআই-সংস্করণ-নির্দিষ্ট শনাক্তকারী।
মাঝে মাঝে উপস্থিত
X-Goog-Channel-Expiration নোটিফিকেশন চ্যানেলের মেয়াদ শেষ হওয়ার তারিখ ও সময়, যা সহজে পাঠযোগ্য বিন্যাসে প্রকাশ করতে হবে। শুধুমাত্র সংজ্ঞায়িত করা থাকলেই এটি উপস্থিত থাকবে।
X-Goog-Channel-Token আপনার অ্যাপ্লিকেশন দ্বারা সেট করা নোটিফিকেশন চ্যানেল টোকেন, যা আপনি নোটিফিকেশনের উৎস যাচাই করতে ব্যবহার করতে পারেন। শুধুমাত্র সংজ্ঞায়িত থাকলেই এটি উপস্থিত থাকে।

ক্যালেন্ডার এপিআই দ্বারা আপনার গ্রহণকারী ইউআরএল-এ পোস্ট করা নোটিফিকেশন বার্তাগুলিতে কোনো বার্তা মূল অংশ থাকে না। এই বার্তাগুলিতে আপডেট করা রিসোর্স সম্পর্কে নির্দিষ্ট তথ্য থাকে না; পরিবর্তনের সম্পূর্ণ বিবরণ দেখতে আপনাকে অবশ্যই আরেকটি এপিআই কল করতে হবে।

উদাহরণ

পরিবর্তিত ইভেন্ট সংগ্রহের জন্য বিজ্ঞপ্তি বার্তা পরিবর্তন করুন:

POST https://mydomain.com/notifications
Content-Type: application/json; utf-8
Content-Length: 0
X-Goog-Channel-ID: 4ba78bf0-6a47-11e2-bcfd-0800200c9a66
X-Goog-Channel-Token: 398348u3tu83ut8uu38
X-Goog-Channel-Expiration: Tue, 19 Nov 2013 01:13:52 GMT
X-Goog-Resource-ID:  ret08u3rv24htgh289g
X-Goog-Resource-URI: https://www.googleapis.com/calendar/v3/calendars/my_calendar@gmail.com/events
X-Goog-Resource-State:  exists
X-Goog-Message-Number: 10

বিজ্ঞপ্তিগুলিতে সাড়া দিন

সফলতা নির্দেশ করতে, আপনি নিম্নলিখিত স্ট্যাটাস কোডগুলির যেকোনো একটি ফেরত দিতে পারেন: 200 , 201 , 202 , 204 , বা 102

যদি আপনার পরিষেবা গুগলের এপিআই ক্লায়েন্ট লাইব্রেরি ব্যবহার করে এবং 500 , 502 , 503 , বা 504 রিটার্ন করে, তাহলে গুগল ক্যালেন্ডার এপিআই এক্সপোনেনশিয়াল ব্যাকঅফ সহ পুনরায় চেষ্টা করে। অন্য সব রিটার্ন স্ট্যাটাস কোডকে মেসেজ ব্যর্থতা হিসেবে গণ্য করা হয়।

গুগল ক্যালেন্ডার এপিআই নোটিফিকেশন ইভেন্টগুলো বুঝুন

এই বিভাগে গুগল ক্যালেন্ডার এপিআই-এর সাথে পুশ নোটিফিকেশন ব্যবহার করার সময় আপনি যে নোটিফিকেশন বার্তাগুলি পেতে পারেন, সে সম্পর্কে বিস্তারিত তথ্য দেওয়া হয়েছে।

এক্স-গুগ-রিসোর্স-স্টেট প্রযোজ্য কখন ডেলিভারি করা হবে
sync ACL, ক্যালেন্ডার তালিকা, ইভেন্ট, সেটিংস। একটি নতুন চ্যানেল সফলভাবে তৈরি করা হয়েছে। এখন থেকে নোটিফিকেশন গ্রহণ করা যাবে।
exists ACL, ক্যালেন্ডার তালিকা, ইভেন্ট, সেটিংস। একটি রিসোর্স পরিবর্তিত হয়েছে। সম্ভাব্য পরিবর্তনগুলোর মধ্যে রয়েছে একটি নতুন রিসোর্স তৈরি করা, অথবা বিদ্যমান কোনো রিসোর্সের পরিবর্তন বা মুছে ফেলা।

বিজ্ঞপ্তি বন্ধ করুন

expiration প্রপার্টিটি নিয়ন্ত্রণ করে কখন নোটিফিকেশনগুলো স্বয়ংক্রিয়ভাবে বন্ধ হবে। আপনি নিম্নলিখিত URI-তে stop মেথডটি কল করে কোনো নির্দিষ্ট চ্যানেলের মেয়াদ শেষ হওয়ার আগেই সেটির জন্য নোটিফিকেশন পাওয়া বন্ধ করতে পারেন:

https://www.googleapis.com/workspace/calendar/api/v3/reference/channels/stop

এই পদ্ধতিতে আপনাকে অন্তত চ্যানেলের id এবং resourceId প্রপার্টিগুলো প্রদান করতে হবে, যেমনটি নিচের উদাহরণে দেখানো হয়েছে। উল্লেখ্য যে, গুগল ক্যালেন্ডার এপিআই-তে যদি watch মেথডসহ বিভিন্ন ধরনের রিসোর্স থাকে, তবে stop মেথড কেবল একটিই থাকে।

শুধুমাত্র যথাযথ অনুমতিপ্রাপ্ত ব্যবহারকারীরাই একটি চ্যানেল বন্ধ করতে পারেন। বিশেষত:

  • যদি চ্যানেলটি কোনো সাধারণ ব্যবহারকারী অ্যাকাউন্ট দ্বারা তৈরি করা হয়ে থাকে, তবে শুধুমাত্র একই ক্লায়েন্টের সেই ব্যবহারকারীই (অথ টোকেন থেকে প্রাপ্ত OAuth 2.0 ক্লায়েন্ট আইডি দ্বারা শনাক্তকৃত) চ্যানেলটি বন্ধ করতে পারবেন।
  • যদি চ্যানেলটি কোনো সার্ভিস অ্যাকাউন্ট দ্বারা তৈরি করা হয়ে থাকে, তাহলে একই ক্লায়েন্টের যেকোনো ব্যবহারকারী চ্যানেলটি বন্ধ করতে পারবেন।

নিম্নলিখিত কোড নমুনাটি দেখায় কিভাবে নোটিফিকেশন গ্রহণ বন্ধ করতে হয়:

POST https://www.googleapis.com/workspace/calendar/api/v3/reference/channels/stop
  
Authorization: Bearer CURRENT_USER_AUTH_TOKEN
Content-Type: application/json

{
  "id": "4ba78bf0-6a47-11e2-bcfd-0800200c9a66",
  "resourceId": "ret08u3rv24htgh289g"
}