SDK স্বাস্থ্য এবং ফিটনেস যুক্ত করুন: তৃতীয় পক্ষের প্রযুক্তিগত ইন্টিগ্রেশন নির্দেশাবলী

আপনার ব্যবহারকারীরা যেখানেই থাকুক না কেন, তাদের কাছে পৌঁছে অ্যাপের সম্পৃক্ততা বাড়ান। কালেকশন , এন্টারটেইনমেন্ট স্পেস এবং প্লে স্টোরের মতো ডিভাইসের বিভিন্ন প্ল্যাটফর্মে ব্যবহারকারীদের কাছে সরাসরি ব্যক্তিগতকৃত সুপারিশ এবং ধারাবাহিক কন্টেন্ট পৌঁছে দিতে Engage SDK ইন্টিগ্রেট করুন। এই ইন্টিগ্রেশনটি গড় APK-তে ৫০ কেবি-রও কম (কম্প্রেসড) সাইজ যোগ করে এবং বেশিরভাগ অ্যাপের জন্য ডেভেলপারদের প্রায় এক সপ্তাহ সময় লাগে। আমাদের বিজনেস সাইটে আরও জানুন।

এই নির্দেশিকায় ডেভেলপার পার্টনারদের জন্য Engage কন্টেন্ট সারফেসে স্বাস্থ্য ও ফিটনেস কন্টেন্ট সরবরাহ করার নির্দেশনা রয়েছে।

একীকরণের বিবরণ

পরিভাষা

এই ইন্টিগ্রেশনে নিম্নলিখিত তিন ধরনের ক্লাস্টার অন্তর্ভুক্ত রয়েছে: রিকমেন্ডেশন , ফিচার্ড এবং কন্টিনিউয়েশন

  • সুপারিশ ক্লাস্টারগুলো একজন স্বতন্ত্র ডেভেলপার পার্টনারের কাছ থেকে ব্যক্তিগতকৃত স্বাস্থ্য ও ফিটনেস পরামর্শ দেখায়। এই সুপারিশগুলো ব্যবহারকারীর জন্য ব্যক্তিগতকৃত বা সাধারণীকৃত হতে পারে (উদাহরণস্বরূপ, ট্রেন্ডিং ফিটনেস ও স্বাস্থ্য)। স্বাস্থ্য ও ফিটনেস সম্পর্কিত প্রবন্ধ বা ব্যক্তিদের খুঁজে পেতে এগুলো ব্যবহার করুন।

    • একটি সুপারিশ ক্লাস্টার ArticleEntity , PersonEntity , বা EventEntity দিয়ে তৈরি হতে পারে, কিন্তু বিভিন্ন ধরনের এনটিটির মিশ্রণ দিয়ে নয়।

    আপনার সুপারিশগুলোর কাঠামোটি নিম্নরূপ:

    • সুপারিশ ক্লাস্টার: একটি UI ভিউ যেখানে একই ডেভেলপার পার্টনারের দেওয়া একাধিক সুপারিশ থাকে।

    • সত্তা: একটি ক্লাস্টারের মধ্যে থাকা একটি একক আইটেমকে প্রতিনিধিত্বকারী একটি অবজেক্ট। এই ইন্টিগ্রেশনটি এমন কিছু সত্তা প্রদান করে যা রিকমেন্ডেশন ক্লাস্টার ব্যবহার করে প্রদর্শিত হবে:

      • ArticleEntity : ArticleEntity হলো স্বাস্থ্য ও ফিটনেস সম্পর্কিত টেক্সট-ভিত্তিক কন্টেন্টের জন্য একটি সুপারিশ। এটি আর্টিকেল, ব্লগপোস্ট, মার্কেটিং কন্টেন্ট, সংবাদের সংক্ষিপ্ত অংশ ইত্যাদির জন্য ব্যবহার করা যেতে পারে।

        চিত্র ১: রিকমেন্ডেশনস ক্লাস্টারের মধ্যে একটিমাত্র আর্টিকেলএন্টিটি দেখানো ইউআই।
      • PersonEntity : PersonEntity একজন ব্যক্তিকে বোঝায়। এক্ষেত্রে একজন কোচ বা স্বাস্থ্য ও ফিটনেসের সাথে সম্পর্কিত যেকোনো ব্যক্তিকে তুলে ধরার পরামর্শ দেওয়া যেতে পারে।

        চিত্র ২: রিকমেন্ডেশন ক্লাস্টারের মধ্যে একটিমাত্র পার্সনএন্টিটি দেখানো ইউআই।
      • ইভেন্টএন্টিটি (EventEntity) : ইভেন্টএন্টিটি ভবিষ্যতে ঘটতে যাওয়া কোনো ইভেন্টকে উপস্থাপন করে। ইভেন্ট শুরুর সময় একটি অত্যন্ত গুরুত্বপূর্ণ তথ্য যা ব্যবহারকারীদের জানানো প্রয়োজন। স্বাস্থ্য ও ফিটনেস সম্পর্কিত রক্তদান শিবির, প্রশিক্ষণ সেশন, জিম বা যোগ ক্লাস ইত্যাদির মতো ইভেন্টগুলো তুলে ধরার জন্য এই এন্টিটিটি ব্যবহার করা যেতে পারে।

        চিত্র ৩: রিকমেন্ডেশনস ক্লাস্টারের মধ্যে একটিমাত্র ইভেন্টএন্টিটি দেখানো ইউআই।
  • কন্টিনিউয়েশন ক্লাস্টার একাধিক ডেভেলপার পার্টনারের ব্যবহারকারীদের দ্বারা সম্প্রতি ব্যবহৃত কন্টেন্ট একটি একক UI গ্রুপে প্রদর্শন করে। প্রতিটি ডেভেলপার পার্টনারকে কন্টিনিউয়েশন ক্লাস্টারে সর্বোচ্চ ১০টি এনটিটি ব্রডকাস্ট করার অনুমতি দেওয়া হবে।

    আপনার পরবর্তী বিষয়বস্তু নিম্নলিখিত কাঠামো অনুসরণ করতে পারে:

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

      চিত্র ৬. একটি কন্টিনিউয়েশন ক্লাস্টারের মধ্যে একটিমাত্র ArticleEntity প্রদর্শনকারী UI।
    • EventReservationEntity : EventReservationEntity কোনো ইভেন্টের রিজার্ভেশনকে বোঝায় এবং ব্যবহারকারীদের আসন্ন বা চলমান ফিটনেস ও স্বাস্থ্য ইভেন্টের রিজার্ভেশন ট্র্যাক করতে সাহায্য করে। উদাহরণ: ট্রেনিং সেশন

      চিত্র ৮. একটি কন্টিনিউয়েশন ক্লাস্টারের মধ্যে অবস্থিত একটিমাত্র ইভেন্টরিজারভেশনএন্টিটি (EventReservationEntity) প্রদর্শনকারী ইউআই (UI)।
  • ফিচার্ড ক্লাস্টার একাধিক ডেভেলপার পার্টনারের নির্বাচিত কিছু এনটিটি একটি UI গ্রুপে প্রদর্শন করে। একটিমাত্র ফিচার্ড ক্লাস্টার থাকবে, যা UI-এর উপরের দিকে প্রদর্শিত হবে এবং সমস্ত রিকমেন্ডেশন ক্লাস্টারের উপরে অগ্রাধিকার পাবে। প্রতিটি ডেভেলপার পার্টনার ফিচার্ড ক্লাস্টারে সর্বোচ্চ ১০টি এনটিটি ব্রডকাস্ট করতে পারবে।

    • GenericFeaturedEntity : GenericFeaturedEntity, Recommendation আইটেম থেকে এই কারণে ভিন্ন যে, Featured আইটেমটি ডেভেলপারদের তৈরি একটি সেরা কন্টেন্টের জন্য ব্যবহৃত হওয়া উচিত এবং এটি এমন একটি সবচেয়ে গুরুত্বপূর্ণ কন্টেন্টকে উপস্থাপন করবে যা ব্যবহারকারীদের কাছে আকর্ষণীয় এবং প্রাসঙ্গিক হবে।

      চিত্র ১২: একটি ফিচার্ড ক্লাস্টারের মধ্যে একটি একক হিরো GenericFeaturedEntity কার্ড প্রদর্শনকারী UI।

প্রাক-কাজ

সর্বনিম্ন এপিআই স্তর: ১৯

আপনার অ্যাপে com.google.android.engage:engage-core লাইব্রেরিটি যোগ করুন:

dependencies {
    // Make sure you also include that repository in your project's build.gradle file.
    implementation 'com.google.android.engage:engage-core:1.6.0'
}

সারসংক্ষেপ

ডিজাইনটি একটি বাউন্ড সার্ভিসের বাস্তবায়নের উপর ভিত্তি করে তৈরি।

বিভিন্ন ক্লাস্টার প্রকারের জন্য একজন ক্লায়েন্ট যে ডেটা প্রকাশ করতে পারে তা নিম্নলিখিত সীমাবদ্ধতার অধীন:

ক্লাস্টার টাইপ ক্লাস্টার সীমা একটি ক্লাস্টারে সর্বনিম্ন সত্তার সীমা একটি ক্লাস্টারে সত্তার সর্বোচ্চ সীমা
সুপারিশ ক্লাস্টার(গুলি) সর্বাধিক ৭ অন্তত ১ সর্বাধিক ৫০ ( ArticleEntity , PersonEntity , বা EventEntity )
ধারাবাহিকতা ক্লাস্টার সর্বাধিক ১ অন্তত ১ সর্বাধিক ২০ ( ArticleEntity , অথবা EventReservationEntity )
বৈশিষ্ট্যযুক্ত ক্লাস্টার সর্বাধিক ১ অন্তত ১ সর্বাধিক ২০ ( GenericFeaturedEntity )

ধাপ ১: সত্তার তথ্য প্রদান করুন

এসডিকে প্রতিটি আইটেমের ধরন বোঝানোর জন্য বিভিন্ন এনটিটি সংজ্ঞায়িত করেছে। আমরা স্বাস্থ্য ও ফিটনেস বিভাগের জন্য নিম্নলিখিত এনটিটিগুলো সমর্থন করি:

  1. GenericFeaturedEntity
  2. ArticleEntity
  3. PersonEntity
  4. EventEntity
  5. EventReservationEntity

নিচের চার্টগুলোতে প্রতিটি প্রকারের জন্য উপলব্ধ বৈশিষ্ট্য এবং প্রয়োজনীয়তাগুলো তুলে ধরা হয়েছে।

GenericFeaturedEntity

বৈশিষ্ট্য প্রয়োজনীয়তা বর্ণনা ফর্ম্যাট
অ্যাকশন উরি প্রয়োজনীয়

প্রোভাইডার অ্যাপে থাকা এনটিটির ডিপ লিঙ্ক।

দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন।

উরি
পোস্টারের ছবি প্রয়োজনীয়

একাধিক ছবি দেওয়া হলে আমরা কেবল ১টি ছবিই দেখাব। প্রস্তাবিত অ্যাসপেক্ট রেশিও হলো ১৬:৯।

দ্রষ্টব্য: যদি কোনো ব্যাজ প্রদান করা হয়, অনুগ্রহ করে ছবিটির উপরে এবং নীচে উভয় দিকে ২৪ ডিপিএস-এর নিরাপদ স্থান নিশ্চিত করুন।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
শিরোনাম ঐচ্ছিক সত্তার শিরোনাম।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ৫০ অক্ষর

বর্ণনা ঐচ্ছিক

সত্তাটির বর্ণনা দেওয়ার জন্য একটিমাত্র অনুচ্ছেদ।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ১৮০ অক্ষর

সাবটাইটেল তালিকা ঐচ্ছিক

সর্বোচ্চ ৩টি সাবটাইটেল, এবং প্রতিটি সাবটাইটেল এক লাইনের লেখা হবে।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রতিটি উপশিরোনামের জন্য প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

ব্যাজ ঐচ্ছিক

প্রতিটি ব্যাজ হয় মুক্ত লেখা (সর্বোচ্চ ১৫ অক্ষর) অথবা একটি ছোট ছবি।

ছবি/ভিডিওর উপরে বিশেষ ইউএক্স ট্রিটমেন্ট, যেমন ছবির উপর ব্যাজ ওভারলে হিসেবে।

  • সরাসরি আপডেট
  • প্রবন্ধ পড়ার সময়কাল
ব্যাজ - টেক্সট ঐচ্ছিক

ব্যাজের জন্য শিরোনাম

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ১৫ অক্ষর

ব্যাজ - ছবি ঐচ্ছিক

ছোট ছবি

বিশেষ ইউএক্স ট্রিটমেন্ট, যেমন ছবি/ভিডিও থাম্বনেইলের উপর ব্যাজ ওভারলে হিসেবে।

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
বিষয়বস্তুর বিভাগ ঐচ্ছিক সত্তাটির বিষয়বস্তুর শ্রেণি বর্ণনা করুন।

এনামের তালিকা

নির্দেশনার জন্য বিষয়বস্তুর শ্রেণীবিভাগ দেখুন।

ArticleEntity

বৈশিষ্ট্য প্রয়োজনীয়তা বর্ণনা ফর্ম্যাট
অ্যাকশন উরি প্রয়োজনীয়

প্রোভাইডার অ্যাপে থাকা এনটিটির ডিপ লিঙ্ক।

দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন।

উরি
শিরোনাম প্রয়োজনীয় সত্তার শিরোনাম।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

পোস্টারের ছবি ঐচ্ছিক

একাধিক ছবি দেওয়া হলে আমরা কেবল ১টি ছবিই দেখাব। প্রস্তাবিত অ্যাসপেক্ট রেশিও হলো ১৬:৯।

দ্রষ্টব্য: ছবি ব্যবহার করা বিশেষভাবে বাঞ্ছনীয়। যদি ব্যাজ প্রদান করা হয়, তবে অনুগ্রহ করে ছবির উপরে এবং নীচে ২৪ ডিপিএস-এর নিরাপদ স্থান নিশ্চিত করুন।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
উৎস - শিরোনাম ঐচ্ছিক লেখক, সংস্থা বা প্রতিবেদকের নাম

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ২৫ অক্ষরের কম

উৎস - ছবি ঐচ্ছিক লেখক, সংস্থা, প্রতিবেদকের মতো উৎসের একটি ছবি। নির্দেশনার জন্য ছবির বিবরণ দেখুন।
বর্ণনা ঐচ্ছিক

সত্তাটির বর্ণনা দেওয়ার জন্য একটিমাত্র অনুচ্ছেদ।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ১৮০ অক্ষর

সাবটাইটেল তালিকা ঐচ্ছিক

সর্বোচ্চ ৩টি সাবটাইটেল, এবং প্রতিটি সাবটাইটেল এক লাইনের লেখা হবে।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রতিটি উপশিরোনামের জন্য প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

ব্যাজ ঐচ্ছিক

প্রতিটি ব্যাজ হয় মুক্ত লেখা (সর্বোচ্চ ১৫ অক্ষর) অথবা একটি ছোট ছবি।

ছবি/ভিডিওর উপরে বিশেষ ইউএক্স ট্রিটমেন্ট, যেমন ছবির উপর ব্যাজ ওভারলে হিসেবে।

  • সরাসরি আপডেট
  • প্রবন্ধ পড়ার সময়কাল
ব্যাজ - টেক্সট ঐচ্ছিক

ব্যাজের জন্য শিরোনাম

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ১৫ অক্ষর

ব্যাজ - ছবি ঐচ্ছিক

ছোট ছবি

বিশেষ ইউএক্স ট্রিটমেন্ট, যেমন ছবি/ভিডিও থাম্বনেইলের উপর ব্যাজ ওভারলে হিসেবে।

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
বিষয়বস্তু প্রকাশের সময় ঐচ্ছিক অ্যাপে কন্টেন্টটি কখন প্রকাশিত বা আপডেট করা হয়েছিল, এটি সেই ইপক টাইমস্ট্যাম্প যা মিলিসেকেন্ডে পরিমাপ করা হয়। মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প
শেষ বাগদানের সময় শর্তসাপেক্ষে আবশ্যক

ব্যবহারকারী শেষবার এই সত্তাটির সাথে যখন ইন্টারঅ্যাক্ট করেছিলেন, সেই ইপক টাইমস্ট্যাম্প (মিলিসেকেন্ডে)।

দ্রষ্টব্য: এই সত্তাটি যদি কন্টিনিউয়েশন ক্লাস্টারের অংশ হয়, তবে এই ফিল্ডটি আবশ্যক।

মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প
অগ্রগতির শতাংশ শর্তসাপেক্ষে আবশ্যক

ব্যবহারকারী কর্তৃক এ পর্যন্ত সম্পূর্ণ কন্টেন্টের যে শতাংশ গ্রহণ করা হয়েছে।

দ্রষ্টব্য: এই সত্তাটি যদি কন্টিনিউয়েশন ক্লাস্টারের অংশ হয়, তবে এই ফিল্ডটি আবশ্যক।

০ থেকে ১০০ পর্যন্ত একটি পূর্ণসংখ্যা।
বিষয়বস্তুর বিভাগ ঐচ্ছিক সত্তাটির বিষয়বস্তুর শ্রেণি বর্ণনা করুন।

এনামের তালিকা

নির্দেশনার জন্য বিষয়বস্তুর শ্রেণীবিভাগ দেখুন।

PersonEntity

বৈশিষ্ট্য প্রয়োজনীয়তা বর্ণনা ফর্ম্যাট
অ্যাকশন উরি প্রয়োজনীয়

প্রোভাইডার অ্যাপে থাকা এনটিটির ডিপ লিঙ্ক।

দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন।

উরি
প্রোফাইল - নাম প্রয়োজনীয় প্রোফাইলের নাম বা আইডি বা হ্যান্ডেল, যেমন 'জন ডো', '@টিমপিক্সেল', ইত্যাদি।

স্ট্রিং

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

প্রোফাইল - অবতার প্রয়োজনীয়

ব্যবহারকারীর প্রোফাইল ছবি বা অ্যাভাটার ছবি।

দ্রষ্টব্য: ছবিটি অবশ্যই ১:১ বর্গাকার হতে হবে।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
প্রোফাইল - অতিরিক্ত লেখা ঐচ্ছিক প্রোফাইল হ্যান্ডেলের মতো মুক্ত লেখা।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ১৫ অক্ষর

প্রোফাইল - অতিরিক্ত ছবি ঐচ্ছিক যাচাইকৃত ব্যাজের মতো ছোট ছবি। নির্দেশনার জন্য ছবির বিবরণ দেখুন।
হেডার ইমেজ ঐচ্ছিক

একাধিক ছবি দেওয়া হলে আমরা কেবল ১টি ছবিই দেখাব। প্রস্তাবিত অ্যাসপেক্ট রেশিও হলো ১৬:৯।

দ্রষ্টব্য: ছবি ব্যবহার করা বিশেষভাবে বাঞ্ছনীয়। যদি ব্যাজ প্রদান করা হয়, তবে অনুগ্রহ করে ছবির উপরে এবং নীচে ২৪ ডিপিএস-এর নিরাপদ স্থান নিশ্চিত করুন।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
জনপ্রিয়তা - গণনা ঐচ্ছিক

অনুসারীর সংখ্যা বা জনপ্রিয়তার মান উল্লেখ করুন, যেমন - "৩.৭ মিলিয়ন"।

দ্রষ্টব্য: যদি Count এবং Count Value উভয়ই প্রদান করা হয়, তবে Count ব্যবহৃত হবে।

স্ট্রিং

প্রস্তাবিত লেখার আকার: সংখ্যা ও লেবেল মিলিয়ে সর্বোচ্চ ২০ অক্ষর

জনপ্রিয়তা - গণনার মান ঐচ্ছিক

অনুসারীর সংখ্যা বা জনপ্রিয়তার মান।

দ্রষ্টব্য: যদি আপনার অ্যাপ বিভিন্ন ডিসপ্লে আকারের জন্য একটি বড় সংখ্যাকে কীভাবে অপ্টিমাইজ করা হবে সেই লজিকটি পরিচালনা করতে না চায়, তাহলে Count Value প্রদান করুন। যদি Count এবং Count Value উভয়ই প্রদান করা হয়, তবে Count ব্যবহৃত হবে।

দীর্ঘ
জনপ্রিয়তা - লেবেল ঐচ্ছিক জনপ্রিয়তার লেবেলটি কী তা উল্লেখ করুন। উদাহরণস্বরূপ - "লাইক"।

স্ট্রিং

প্রস্তাবিত লেখার আকার: সংখ্যা ও লেবেল মিলিয়ে সর্বোচ্চ ২০টি অক্ষর

জনপ্রিয়তা - চাক্ষুষ ঐচ্ছিক

ইন্টারঅ্যাকশনটি কীসের জন্য তা উল্লেখ করুন। উদাহরণস্বরূপ - লাইক আইকন, ইমোজি দেখানো ছবি।

একাধিক ছবি দেওয়া যেতে পারে, তবে সবগুলো ছবি সব ফর্ম ফ্যাক্টরে দেখানো নাও যেতে পারে।

দ্রষ্টব্য: ছবিটি অবশ্যই ১:১ বর্গাকার হতে হবে।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
রেটিং - সর্বোচ্চ মান প্রয়োজনীয়

রেটিং স্কেলের সর্বোচ্চ মান।

রেটিং-এর বর্তমান মান প্রদান করা হলে এটিও অবশ্যই প্রদান করতে হবে।

সংখ্যা >= ০.০
রেটিং - বর্তমান মান প্রয়োজনীয়

রেটিং স্কেলের বর্তমান মান।

রেটিং-এর সর্বোচ্চ মান প্রদান করা হলে এটিও অবশ্যই প্রদান করতে হবে।

সংখ্যা >= ০.০
রেটিং - গণনা ঐচ্ছিক

সত্তাটির রেটিং সংখ্যা।

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

স্ট্রিং
রেটিং - গণনার মান ঐচ্ছিক

সত্তাটির রেটিং সংখ্যা।

দ্রষ্টব্য: আপনি যদি সংক্ষিপ্ত রূপ প্রদর্শনের লজিকটি নিজে পরিচালনা না করেন, তবে এই ফিল্ডটি প্রদান করুন। যদি Count এবং Count Value উভয়ই উপস্থিত থাকে, তবে ব্যবহারকারীদের কাছে Count প্রদর্শিত হবে।

দীর্ঘ
অবস্থান - দেশ ঐচ্ছিক যে দেশে ব্যক্তিটি অবস্থান করছেন বা কর্মরত আছেন।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - শহর ঐচ্ছিক যে শহরে ব্যক্তিটি অবস্থান করছেন বা কর্মরত আছেন।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - ঠিকানা প্রদর্শন করুন ঐচ্ছিক ব্যক্তিটি যেখানে অবস্থান করছেন বা কর্মরত আছেন, সেই ঠিকানাটি ব্যবহারকারীকে দেখানো হবে।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - রাস্তার ঠিকানা ঐচ্ছিক ব্যক্তিটি যেখানে অবস্থান করছেন বা পরিষেবা দিচ্ছেন, সেই রাস্তার ঠিকানা (যদি প্রযোজ্য হয়)।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - রাজ্য ঐচ্ছিক যে রাজ্যে (প্রযোজ্য ক্ষেত্রে) ব্যক্তিটি অবস্থান করছেন বা কর্মরত আছেন।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - জিপ কোড ঐচ্ছিক ব্যক্তিটি যেখানে অবস্থান করছেন বা কর্মরত আছেন, তার জিপ কোড (যদি প্রযোজ্য হয়)।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - এলাকা ঐচ্ছিক যে এলাকায় (প্রযোজ্য ক্ষেত্রে) ব্যক্তিটি অবস্থান করছেন বা সেবা প্রদান করছেন।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

ব্যাজ ঐচ্ছিক

প্রতিটি ব্যাজ হয় মুক্ত লেখা (সর্বোচ্চ ১৫ অক্ষর) অথবা একটি ছোট ছবি।

ব্যাজ - টেক্সট ঐচ্ছিক

ব্যাজের জন্য শিরোনাম

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ১৫ অক্ষর

ব্যাজ - ছবি ঐচ্ছিক

ছোট ছবি

বিশেষ ইউএক্স ট্রিটমেন্ট, যেমন ছবি/ভিডিও থাম্বনেইলের উপর ব্যাজ ওভারলে হিসেবে।

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
বর্ণনা ঐচ্ছিক

সত্তাটির বর্ণনা দেওয়ার জন্য একটিমাত্র অনুচ্ছেদ।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ১৮০ অক্ষর

সাবটাইটেল তালিকা ঐচ্ছিক

সর্বোচ্চ ৩টি সাবটাইটেল, এবং প্রতিটি সাবটাইটেল এক লাইনের লেখা হবে।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রতিটি উপশিরোনামের জন্য প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

বিষয়বস্তুর বিভাগ ঐচ্ছিক সত্তাটির বিষয়বস্তুর শ্রেণি বর্ণনা করুন।

যোগ্য এনামের তালিকা

  • স্বাস্থ্য ও ফিটনেসের ধরণ (উদাহরণ - যোগ/ফিটনেস প্রশিক্ষক)
  • TYPE_HOME_AND_AUTO (উদাহরণ - প্লাম্বার)
  • খেলার ধরণ (উদাহরণ - খেলোয়াড়)
  • ডেটিংয়ের ধরণ

নির্দেশনার জন্য বিষয়বস্তুর শ্রেণীবিভাগ দেখুন।

EventEntity

বৈশিষ্ট্য প্রয়োজনীয়তা বর্ণনা ফর্ম্যাট
অ্যাকশন উরি প্রয়োজনীয়

প্রোভাইডার অ্যাপে থাকা এনটিটির ডিপ লিঙ্ক।

দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন।

উরি
শিরোনাম প্রয়োজনীয় সত্তার শিরোনাম।

স্ট্রিং

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

শুরুর সময় প্রয়োজনীয়

যে ইপক টাইমস্ট্যাম্পে ইভেন্টটি শুরু হওয়ার কথা।

দ্রষ্টব্য: এটি মিলিসেকেন্ডে প্রকাশ করা হবে।

মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প
ইভেন্ট মোড প্রয়োজনীয়

অনুষ্ঠানটি ভার্চুয়াল, সশরীরে নাকি উভয়ই হবে, তা নির্দেশ করার জন্য একটি ক্ষেত্র।

Enum: ভার্চুয়াল, সশরীরে, অথবা হাইব্রিড
পোস্টারের ছবি প্রয়োজনীয়

একাধিক ছবি দেওয়া হলে আমরা কেবল ১টি ছবিই দেখাব। প্রস্তাবিত অ্যাসপেক্ট রেশিও হলো ১৬:৯।

দ্রষ্টব্য: ছবি ব্যবহার করা বিশেষভাবে বাঞ্ছনীয়। যদি ব্যাজ প্রদান করা হয়, তবে অনুগ্রহ করে ছবির উপরে এবং নীচে ২৪ ডিপিএস-এর নিরাপদ স্থান নিশ্চিত করুন।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
অবস্থান - দেশ শর্তসাপেক্ষে আবশ্যক

যে দেশে অনুষ্ঠানটি অনুষ্ঠিত হচ্ছে।

দ্রষ্টব্য: যেসব অনুষ্ঠান সরাসরি উপস্থিতিতে (IN_PERSON) অথবা হাইব্রিড (HYBRID) পদ্ধতিতে অনুষ্ঠিত হয়, সেগুলোর জন্য এটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - শহর শর্তসাপেক্ষে আবশ্যক

যে শহরে অনুষ্ঠানটি অনুষ্ঠিত হচ্ছে।

দ্রষ্টব্য: যেসব অনুষ্ঠান সরাসরি উপস্থিতিতে (IN_PERSON) অথবা হাইব্রিড (HYBRID) পদ্ধতিতে অনুষ্ঠিত হয়, সেগুলোর জন্য এটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - ঠিকানা প্রদর্শন করুন শর্তসাপেক্ষে আবশ্যক

অনুষ্ঠানটি যে ঠিকানায় বা স্থানে অনুষ্ঠিত হবে, তা ব্যবহারকারীকে দেখানো উচিত।

দ্রষ্টব্য: যেসব অনুষ্ঠান সরাসরি উপস্থিতিতে (IN_PERSON) অথবা হাইব্রিড (HYBRID) পদ্ধতিতে অনুষ্ঠিত হয়, সেগুলোর জন্য এটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - রাস্তার ঠিকানা ঐচ্ছিক যে স্থানে অনুষ্ঠানটি আয়োজন করা হচ্ছে, সেই স্থানের রাস্তার ঠিকানা (যদি প্রযোজ্য হয়)।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - রাজ্য ঐচ্ছিক যে রাজ্য বা প্রদেশে (প্রযোজ্য ক্ষেত্রে) অনুষ্ঠানটি আয়োজিত হচ্ছে।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - জিপ কোড ঐচ্ছিক যে স্থানে অনুষ্ঠানটি আয়োজন করা হচ্ছে, সেই স্থানের জিপ কোড (যদি প্রযোজ্য হয়)।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - এলাকা ঐচ্ছিক যে এলাকায় (প্রযোজ্য ক্ষেত্রে) অনুষ্ঠানটি আয়োজন করা হচ্ছে।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

শেষ সময় ঐচ্ছিক

যে ইপক টাইমস্ট্যাম্পে ইভেন্টটি শেষ হওয়ার কথা।

দ্রষ্টব্য: এটি মিলিসেকেন্ডে প্রকাশ করা হবে।

মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প
বর্ণনা ঐচ্ছিক

সত্তাটির বর্ণনা দেওয়ার জন্য একটিমাত্র অনুচ্ছেদ।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ১৮০ অক্ষর

সাবটাইটেল তালিকা ঐচ্ছিক

সর্বোচ্চ ৩টি সাবটাইটেল, এবং প্রতিটি সাবটাইটেল এক লাইনের লেখা হবে।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রতিটি উপশিরোনামের জন্য প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

ব্যাজ ঐচ্ছিক

প্রতিটি ব্যাজ হয় মুক্ত লেখা (সর্বোচ্চ ১৫ অক্ষর) অথবা একটি ছোট ছবি।

ব্যাজ - টেক্সট ঐচ্ছিক

ব্যাজের জন্য শিরোনাম

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ১৫ অক্ষর

ব্যাজ - ছবি ঐচ্ছিক

ছোট ছবি

বিশেষ ইউএক্স ট্রিটমেন্ট, যেমন ছবি/ভিডিও থাম্বনেইলের উপর ব্যাজ ওভারলে হিসেবে।

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
মূল্য - বর্তমান মূল্য শর্তসাপেক্ষে আবশ্যক

অনুষ্ঠানটির টিকিট/পাসের বর্তমান মূল্য।

যদি কেটে দেওয়া মূল্য প্রদান করা হয়, তবে এটি অবশ্যই প্রদান করতে হবে।

মুক্ত পাঠ্য
মূল্য - কাটা-চিহ্নিত মূল্য ঐচ্ছিক অনুষ্ঠানটির টিকিট/পাসের মূল মূল্য। মুক্ত পাঠ্য
মূল্য ঘোষণা ঐচ্ছিক কোনো প্রোমো, ইভেন্ট বা সদস্য ছাড় (যদি থাকে) তুলে ধরতে মূল্য উল্লেখ করা হবে।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ৪৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে)

বিষয়বস্তুর বিভাগ ঐচ্ছিক সত্তাটির বিষয়বস্তুর শ্রেণি বর্ণনা করুন।

যোগ্য এনামের তালিকা

  • চলচ্চিত্র ও টিভি অনুষ্ঠানের ধরণ (উদাহরণ - সিনেমা)
  • ডিজিটাল গেমসের ধরণ (উদাহরণ - ই-স্পোর্টস)
  • সঙ্গীতের ধরণ (উদাহরণ - কনসার্ট)
  • ভ্রমণ ও স্থানীয় ধরন (উদাহরণ - ট্যুর, উৎসব)
  • স্বাস্থ্য ও ফিটনেসের ধরণ (উদাহরণ - যোগ ক্লাস)
  • শিক্ষার ধরণ (উদাহরণ - শ্রেণী)
  • খেলাধুলার ধরণ (উদাহরণ - ফুটবল খেলা)
  • ডেটিংয়ের ধরণ (উদাহরণ - মিটআপ)

নির্দেশনার জন্য বিষয়বস্তুর শ্রেণীবিভাগ দেখুন।

EventReservationEntity

বৈশিষ্ট্য প্রয়োজনীয়তা বর্ণনা ফর্ম্যাট
অ্যাকশন উরি প্রয়োজনীয়

প্রোভাইডার অ্যাপে থাকা এনটিটির ডিপ লিঙ্ক।

দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন।

উরি
শিরোনাম প্রয়োজনীয় সত্তার শিরোনাম।

স্ট্রিং

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

শুরুর সময় প্রয়োজনীয়

যে ইপক টাইমস্ট্যাম্পে ইভেন্টটি শুরু হওয়ার কথা।

দ্রষ্টব্য: এটি মিলিসেকেন্ডে প্রকাশ করা হবে।

মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প
ইভেন্ট মোড প্রয়োজনীয়

অনুষ্ঠানটি ভার্চুয়াল, সশরীরে নাকি উভয়ই হবে, তা নির্দেশ করার জন্য একটি ক্ষেত্র।

Enum: ভার্চুয়াল, সশরীরে, অথবা হাইব্রিড
অবস্থান - দেশ শর্তসাপেক্ষে আবশ্যক

যে দেশে অনুষ্ঠানটি অনুষ্ঠিত হচ্ছে।

দ্রষ্টব্য: যেসব অনুষ্ঠান সরাসরি উপস্থিতিতে (IN_PERSON) অথবা হাইব্রিড (HYBRID) পদ্ধতিতে অনুষ্ঠিত হয়, সেগুলোর জন্য এটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - শহর শর্তসাপেক্ষে আবশ্যক

যে শহরে অনুষ্ঠানটি অনুষ্ঠিত হচ্ছে।

দ্রষ্টব্য: যেসব অনুষ্ঠান সরাসরি উপস্থিতিতে (IN_PERSON) অথবা হাইব্রিড (HYBRID) পদ্ধতিতে অনুষ্ঠিত হয়, সেগুলোর জন্য এটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - ঠিকানা প্রদর্শন করুন শর্তসাপেক্ষে আবশ্যক

অনুষ্ঠানটি যে ঠিকানায় বা স্থানে অনুষ্ঠিত হবে, তা ব্যবহারকারীকে দেখানো উচিত।

দ্রষ্টব্য: যেসব অনুষ্ঠান সরাসরি উপস্থিতিতে (IN_PERSON) অথবা হাইব্রিড (HYBRID) পদ্ধতিতে অনুষ্ঠিত হয়, সেগুলোর জন্য এটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - রাস্তার ঠিকানা ঐচ্ছিক যে স্থানে অনুষ্ঠানটি আয়োজন করা হচ্ছে, সেই স্থানের রাস্তার ঠিকানা (যদি প্রযোজ্য হয়)।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - রাজ্য ঐচ্ছিক যে রাজ্য বা প্রদেশে (প্রযোজ্য ক্ষেত্রে) অনুষ্ঠানটি আয়োজিত হচ্ছে।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - জিপ কোড ঐচ্ছিক যে স্থানে অনুষ্ঠানটি আয়োজন করা হচ্ছে, সেই স্থানের জিপ কোড (যদি প্রযোজ্য হয়)।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - এলাকা ঐচ্ছিক যে এলাকায় (প্রযোজ্য ক্ষেত্রে) অনুষ্ঠানটি আয়োজন করা হচ্ছে।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

পোস্টারের ছবি ঐচ্ছিক

একাধিক ছবি দেওয়া হলে আমরা কেবল ১টি ছবিই দেখাব। প্রস্তাবিত অ্যাসপেক্ট রেশিও হলো ১৬:৯।

দ্রষ্টব্য: ছবি ব্যবহার করা বিশেষভাবে বাঞ্ছনীয়। যদি ব্যাজ প্রদান করা হয়, তবে অনুগ্রহ করে ছবির উপরে এবং নীচে ২৪ ডিপিএস-এর নিরাপদ স্থান নিশ্চিত করুন।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
শেষ সময় ঐচ্ছিক

যে ইপক টাইমস্ট্যাম্পে ইভেন্টটি শেষ হওয়ার কথা।

দ্রষ্টব্য: এটি মিলিসেকেন্ডে প্রকাশ করা হবে।

মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প
পরিষেবা প্রদানকারী - নাম ঐচ্ছিক

সেবা প্রদানকারীর নাম।

দ্রষ্টব্য: পরিষেবা প্রদানকারীর জন্য হয় লেখা অথবা ছবি প্রয়োজন।

মুক্ত লেখা। যেমন, অনুষ্ঠান আয়োজক/ট্যুরের নাম।
পরিষেবা প্রদানকারী - ছবি ঐচ্ছিক

সেবা প্রদানকারীর লোগো/ছবি।

দ্রষ্টব্য: পরিষেবা প্রদানকারীর জন্য হয় লেখা অথবা ছবি প্রয়োজন।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
বর্ণনা ঐচ্ছিক

সত্তাটির বর্ণনা দেওয়ার জন্য একটিমাত্র অনুচ্ছেদ।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ১৮০ অক্ষর

সাবটাইটেল তালিকা ঐচ্ছিক

সর্বোচ্চ ৩টি সাবটাইটেল, এবং প্রতিটি সাবটাইটেল এক লাইনের লেখা হবে।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রতিটি উপশিরোনামের জন্য প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

ব্যাজ ঐচ্ছিক

প্রতিটি ব্যাজ হয় মুক্ত লেখা (সর্বোচ্চ ১৫ অক্ষর) অথবা একটি ছোট ছবি।

ব্যাজ - টেক্সট ঐচ্ছিক

ব্যাজের জন্য শিরোনাম

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ১৫ অক্ষর

ব্যাজ - ছবি ঐচ্ছিক

ছোট ছবি

বিশেষ ইউএক্স ট্রিটমেন্ট, যেমন ছবি/ভিডিও থাম্বনেইলের উপর ব্যাজ ওভারলে হিসেবে।

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
রিজার্ভেশন আইডি ঐচ্ছিক ইভেন্ট রিজার্ভেশনের রিজার্ভেশন আইডি। মুক্ত পাঠ্য
মূল্য - বর্তমান মূল্য শর্তসাপেক্ষে আবশ্যক

অনুষ্ঠানটির টিকিট/পাসের বর্তমান মূল্য।

যদি কেটে দেওয়া মূল্য প্রদান করা হয়, তবে এটি অবশ্যই প্রদান করতে হবে।

মুক্ত পাঠ্য
মূল্য - কাটা-চিহ্নিত মূল্য ঐচ্ছিক অনুষ্ঠানটির টিকিট/পাসের মূল মূল্য। মুক্ত পাঠ্য
মূল্য ঘোষণা ঐচ্ছিক কোনো প্রোমো, ইভেন্ট বা সদস্য ছাড় (যদি থাকে) তুলে ধরতে মূল্য উল্লেখ করা হবে।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ৪৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে)

রেটিং - সর্বোচ্চ মান ঐচ্ছিক

রেটিং স্কেলের সর্বোচ্চ মান।

রেটিং-এর বর্তমান মান প্রদান করা হলে এটিও অবশ্যই প্রদান করতে হবে।

সংখ্যা >= ০.০
রেটিং - বর্তমান মান ঐচ্ছিক

রেটিং স্কেলের বর্তমান মান।

রেটিং-এর সর্বোচ্চ মান প্রদান করা হলে এটিও অবশ্যই প্রদান করতে হবে।

সংখ্যা >= ০.০
রেটিং - গণনা ঐচ্ছিক

ইভেন্টটির রেটিং সংখ্যা।

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

স্ট্রিং
রেটিং - গণনার মান ঐচ্ছিক

ইভেন্টটির রেটিং সংখ্যা।

দ্রষ্টব্য: আপনি যদি প্রদর্শনের সংক্ষিপ্ত রূপের লজিক নিজে পরিচালনা করতে না চান, তবে এই ফিল্ডটি প্রদান করুন। যদি Count এবং Count Value উভয়ই উপস্থিত থাকে, তবে আমরা ব্যবহারকারীদের দেখানোর জন্য Count ব্যবহার করব।

দীর্ঘ
বিষয়বস্তুর বিভাগ ঐচ্ছিক সত্তাটির বিষয়বস্তুর শ্রেণি বর্ণনা করুন।

যোগ্য এনামের তালিকা

  • চলচ্চিত্র ও টিভি অনুষ্ঠানের ধরণ (উদাহরণ - সিনেমা)
  • ডিজিটাল গেমসের ধরণ (উদাহরণ - ই-স্পোর্টস)
  • সঙ্গীতের ধরণ (উদাহরণ - কনসার্ট)
  • ভ্রমণ ও স্থানীয় ধরন (উদাহরণ - ট্যুর, উৎসব)
  • স্বাস্থ্য ও ফিটনেসের ধরণ (উদাহরণ - যোগ ক্লাস)
  • শিক্ষার ধরণ (উদাহরণ - শ্রেণী)
  • খেলাধুলার ধরণ (উদাহরণ - ফুটবল খেলা)
  • ডেটিংয়ের ধরণ (উদাহরণ - মিটআপ)

নির্দেশনার জন্য বিষয়বস্তুর শ্রেণীবিভাগ দেখুন।

ছবির স্পেসিফিকেশন

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

আকৃতির অনুপাত সর্বনিম্ন পিক্সেল প্রস্তাবিত পিক্সেল

বর্গক্ষেত্র (১x১)

পছন্দের

৩০০x৩০০ ১২০০x১২০০
ভূদৃশ্য (১.৯১x১) ৬০০x৩১৪ ১২০০x৬২৮
প্রতিকৃতি (৪x৫) ৪৮০x৬০০ ৯৬০x১২০০

ছবিগুলো পাবলিক সিডিএন-এ হোস্ট করা প্রয়োজন, যাতে গুগল সেগুলোতে অ্যাক্সেস করতে পারে।

ফাইল ফরম্যাট

PNG, JPG, স্ট্যাটিক GIF, WebP

সর্বোচ্চ ফাইলের আকার

৫১২০ কেবি

অতিরিক্ত সুপারিশ

  • ছবির নিরাপদ এলাকা: আপনার গুরুত্বপূর্ণ বিষয়বস্তু ছবির মাঝের ৮০% অংশে রাখুন।
  • একটি স্বচ্ছ ব্যাকগ্রাউন্ড ব্যবহার করুন, যাতে ছবিটি ডার্ক এবং লাইট থিম সেটিংসে সঠিকভাবে প্রদর্শিত হয়।

বিষয়বস্তুর বিভাগ

কন্টেন্ট ক্যাটাগরি অ্যাপগুলোকে একাধিক ক্যাটাগরির অন্তর্ভুক্ত কন্টেন্ট প্রকাশ করার সুযোগ দেয়। এটি কন্টেন্টকে কিছু পূর্বনির্ধারিত ক্যাটাগরির সাথে সংযুক্ত করে, যথা:

  • TYPE_EDUCATION
  • TYPE_SPORTS
  • TYPE_MOVIES_AND_TV_SHOWS
  • TYPE_BOOKS
  • TYPE_AUDIOBOOKS
  • TYPE_MUSIC
  • TYPE_DIGITAL_GAMES
  • TYPE_TRAVEL_AND_LOCAL
  • TYPE_HOME_AND_AUTO
  • TYPE_BUSINESS
  • TYPE_NEWS
  • TYPE_FOOD_AND_DRINK
  • TYPE_SHOPPING
  • TYPE_HEALTH_AND_FITENESS
  • TYPE_MEDICAL
  • TYPE_PARENTING
  • TYPE_DATING

ছবিগুলো পাবলিক সিডিএন-এ হোস্ট করা প্রয়োজন, যাতে গুগল সেগুলোতে অ্যাক্সেস করতে পারে।

বিষয়বস্তুর বিভাগগুলি ব্যবহারের নির্দেশিকা

  1. ArticleEntity এবং GenericFeaturedEntity- এর মতো কিছু এনটিটি যেকোনো কন্টেন্ট ক্যাটাগরি ব্যবহার করার যোগ্য। EventEntity , EventReservationEntity , PersonEntity- এর মতো অন্যান্য এনটিটিগুলোর জন্য, এই ক্যাটাগরিগুলোর শুধুমাত্র একটি উপসেট যোগ্য। তালিকাটি পূরণ করার আগে কোনো এনটিটি টাইপের জন্য যোগ্য ক্যাটাগরিগুলোর তালিকা দেখে নিন।
  2. কিছু কন্টেন্ট ক্যাটাগরির জন্য জেনেরিক এনটিটি এবং কন্টেন্টক্যাটাগরির সংমিশ্রণের পরিবর্তে নির্দিষ্ট এনটিটি টাইপ ব্যবহার করুন:

    • TYPE_MOVIES_AND_TV_SHOWS - জেনেরিক এনটিটিগুলো ব্যবহার করার আগে ওয়াচ ইন্টিগ্রেশন গাইড থেকে এনটিটিগুলো দেখে নিন।
    • TYPE_BOOKS - জেনেরিক এনটিটিগুলো ব্যবহার করার আগে EbookEntity- টি যাচাই করে নিন।
    • TYPE_AUDIOBOOKS - জেনেরিক এনটিটিগুলো ব্যবহার করার আগে AudiobookEntity দেখে নিন।
    • TYPE_SHOPPING - জেনেরিক এনটিটিগুলো ব্যবহার করার আগে ShoppingEntity দেখে নিন।
    • TYPE_FOOD_AND_DRINK - জেনেরিক এনটিটিগুলো ব্যবহার করার আগে ফুড ইন্টিগ্রেশন গাইড থেকে এনটিটিগুলো দেখে নিন।
  3. ContentCategory ফিল্ডটি ঐচ্ছিক এবং কন্টেন্টটি পূর্বে উল্লিখিত কোনো ক্যাটাগরির অন্তর্ভুক্ত না হলে এটি খালি রাখা উচিত।

  4. একাধিক কন্টেন্ট ক্যাটাগরি দেওয়া থাকলে, কন্টেন্টের প্রাসঙ্গিকতা অনুসারে সেগুলোকে সাজান এবং সবচেয়ে প্রাসঙ্গিক ক্যাটাগরিটি তালিকার প্রথমে রাখুন।

ধাপ ২: ক্লাস্টার ডেটা প্রদান করুন

কন্টেন্ট প্রকাশের কাজটি ব্যাকগ্রাউন্ডে (যেমন, WorkManager ব্যবহার করে) সম্পাদন করার এবং নিয়মিতভাবে বা কোনো নির্দিষ্ট ইভেন্টের ভিত্তিতে (যেমন, প্রতিবার ব্যবহারকারী অ্যাপটি খুললে বা কার্টে কিছু যোগ করলে) শিডিউল করার পরামর্শ দেওয়া হয়।

AppEngagePublishClient ক্লাস্টার প্রকাশ করার জন্য দায়ী।

ক্লায়েন্টে ক্লাস্টার প্রকাশ করার জন্য নিম্নলিখিত API গুলো রয়েছে:

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishContinuationCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteContinuationCluster
  • deleteUserManagementCluster
  • deleteClusters

isServiceAvailable

পরিষেবাটি ইন্টিগ্রেশনের জন্য উপলব্ধ কিনা এবং কন্টেন্টটি ডিভাইসে প্রদর্শন করা যাবে কিনা, তা যাচাই করতে এই এপিআইটি ব্যবহৃত হয়।

আপনি যে প্রতিটি ক্লাস্টার টাইপ প্রকাশ করতে চান, তার জন্য পরিষেবার প্রাপ্যতা পরীক্ষা করতে পারেন। isServiceAvailable API-টি ServiceAvailabilityRequest নামক একটি রিকোয়েস্ট অবজেক্ট গ্রহণ করে, যেটিতে সেইসব ক্লাস্টার টাইপ থাকে যাদের জন্য পরিষেবার প্রাপ্যতা পরীক্ষা করা প্রয়োজন। ServiceAvailabilityRequest জন্য প্রয়োজনীয় ClusterType enum ভ্যালুগুলো আপনি নিচের টেবিল থেকে খুঁজে নিতে পারেন।

ক্লাস্টার টাইপ ক্লাস্টার টাইপ ধ্রুবক পূর্ণসংখ্যার মান
অজানা TYPE_UNKNOWN
সুপারিশ ক্লাস্টার TYPE_RECOMMENDATION
বৈশিষ্ট্যযুক্ত ক্লাস্টার TYPE_FEATURED
ধারাবাহিকতা ক্লাস্টার TYPE_CONTINUATION
ব্যবহারকারী ব্যবস্থাপনা ক্লাস্টার TYPE_ENGAGEMENT
সাবস্ক্রিপশন ক্লাস্টার TYPE_SUBSCRIPTION ১২

কোটলিন

val request = ServiceAvailabilityRequest.Builder()
    .addIntendedClusterType(ClusterType.TYPE_CONTINUATION)
    .addIntendedClusterType(ClusterType.TYPE_RECOMMENDATION)
    .build()

client.isServiceAvailable(request).addOnCompleteListener { task ->
    if (task.isSuccessful) {
        val availabilityMap = task.result
        if (availabilityMap[ClusterType.TYPE_CONTINUATION] == true) {
            // Proceed with publishing continuation content
        }
        if (availabilityMap[ClusterType.TYPE_RECOMMENDATION] == true) {
            // Proceed with publishing recommendation content
        }
    } else {
        // The IPC call itself fails, proceed with error handling logic here,
        // such as retry.
    }
}

জাভা

ServiceAvailabilityRequest request =
    new ServiceAvailabilityRequest.Builder()
        .addIntendedClusterType(ClusterType.TYPE_CONTINUATION)
        .addIntendedClusterType(ClusterType.TYPE_RECOMMENDATION)
        .build();

client.isServiceAvailable(request).addOnCompleteListener(task -> {
    if (task.isSuccessful()) {
        Map<Integer, Boolean> availabilityMap = task.getResult();
        if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_CONTINUATION))) {
            // Proceed with publishing continuation content
        }
        if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_RECOMMENDATION))) {
            // Proceed with publishing recommendation content
        }
    } else {
        // The IPC call itself fails, proceed with error handling logic here,
        // such as retry.
    }
});
শর্তসাপেক্ষ পরিষেবা উপলব্ধতার বৈশিষ্ট্য

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

v1.6.0 থেকে শুরু করে, Engage SDK নির্দিষ্ট ক্লাস্টার টাইপের প্রাপ্যতা যাচাই করার সুযোগ দেয়। এটি আরও বেশি নমনীয়তা প্রদান করে, যার ফলে যদি কোনো নির্দিষ্ট অ্যাপ্লিকেশন ইন্টারমিটেন্ট কন্টেন্ট স্ট্র্যাটেজি গ্রহণ করে, তবে কিছু ক্লাস্টার টাইপ সেই ইন্টারমিটেন্ট স্ট্র্যাটেজি অনুসরণ করতে পারে, অন্যদিকে অন্য ক্লাস্টার টাইপগুলো সর্বদা সক্রিয় থাকে (যেমন কন্টিনিউয়েশন ক্লাস্টার)।

যেকোনো কারণে যদি সমস্ত সমর্থিত ডিভাইসে Engage পরিষেবাটি 'ধারাবাহিকভাবে' সক্রিয় না থাকে এবং কোনো নির্দিষ্ট ডিভাইসের সেটের জন্য এটি সবিরাম তথ্যগ্রহণের (intermittent ingestion) জন্য কনফিগার করা থাকে, তাহলেও সমস্ত কন্টিনিউয়েশন ক্লাস্টার পাবলিকেশন (যেমন Continue Reading এবং Event Reservations) ডিফল্ট কনফিগারেশন অনুযায়ী সক্রিয় থাকবে এবং বাকি ক্লাস্টার টাইপগুলো সবিরামভাবে সক্রিয় ও নিষ্ক্রিয় হবে। যদি সবিরাম তথ্যগ্রহণ আপনার ক্ষেত্রে প্রযোজ্য হয় কিন্তু এই ডিফল্ট কনফিগারেশনটি আপনার প্রয়োজনের জন্য উপযুক্ত না হয়, তাহলে অনুগ্রহ করে engage-developers@google.com-এ যোগাযোগ করুন।

v1.6.0 (অপ্রচলিত)-এর পূর্ববর্তী SDK সংস্করণগুলির জন্য

কোটলিন

client.isServiceAvailable.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        // Handle IPC call success
        if(task.result) {
          // Service is available on the device, proceed with content publish
          // calls.
        } else {
          // Service is not available, no further action is needed.
        }
    } else {
      // The IPC call itself fails, proceed with error handling logic here,
      // such as retry.
    }
}

জাভা

client.isServiceAvailable().addOnCompleteListener(task - > {
    if (task.isSuccessful()) {
        // Handle success
        if(task.getResult()) {
          // Service is available on the device, proceed with content publish
          // calls.
        } else {
          // Service is not available, no further action is needed.
        }
    } else {
      // The IPC call itself fails, proceed with error handling logic here,
      // such as retry.
    }
});

publishRecommendationClusters

এই এপিআইটি RecommendationCluster অবজেক্টগুলোর একটি তালিকা প্রকাশ করতে ব্যবহৃত হয়।

কোটলিন

client.publishRecommendationClusters(
      PublishRecommendationClustersRequest.Builder()
        .addRecommendationCluster(
          RecommendationCluster.Builder()
            .addEntity(entity1)
            .addEntity(entity2)
            .setTitle("Top Picks For You")
            .build()
        )
        .build()
    )

জাভা

client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Top Picks For You")
                        .build())
                .build());

যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন একটি লেনদেনের মধ্যে নিম্নলিখিত পদক্ষেপগুলি সম্পন্ন হয়:

  • ডেভেলপার পার্টনারের বিদ্যমান RecommendationCluster ডেটা মুছে ফেলা হয়েছে।
  • অনুরোধ থেকে প্রাপ্ত ডেটা পার্স করে আপডেট করা রিকমেন্ডেশন ক্লাস্টারে সংরক্ষণ করা হয়।

কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।

publishFeaturedCluster

এই এপিআইটি FeaturedCluster অবজেক্টগুলোর একটি তালিকা প্রকাশ করতে ব্যবহৃত হয়।

কোটলিন

client.publishFeaturedCluster(
    PublishFeaturedClusterRequest.Builder()
      .setFeaturedCluster(
        FeaturedCluster.Builder()
          .addEntity(entity1)
          .addEntity(entity2)
          .build())
      .build())

জাভা

client.publishFeaturedCluster(
            new PublishFeaturedClustersRequest.Builder()
                .addFeaturedCluster(
                    new FeaturedCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build());

যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন একটি লেনদেনের মধ্যে নিম্নলিখিত পদক্ষেপগুলি সম্পন্ন হয়:

  • ডেভেলপার পার্টনারের বিদ্যমান FeaturedCluster ডেটা মুছে ফেলা হয়েছে।
  • অনুরোধ থেকে প্রাপ্ত ডেটা পার্স করে আপডেট করা ফিচার্ড ক্লাস্টারে সংরক্ষণ করা হয়।

কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।

publishContinuationCluster

এই এপিআইটি একটি ContinuationCluster অবজেক্ট প্রকাশ করতে ব্যবহৃত হয়।

কোটলিন

client.publishContinuationCluster(
    PublishContinuationClusterRequest.Builder()
      .setContinuationCluster(
        ContinuationCluster.Builder()
          .addEntity(entity1)
          .addEntity(entity2)
          .build())
      .build())

জাভা

client.publishContinuationCluster(
            new PublishContinuationClusterRequest.Builder()
                .setContinuationCluster(
                    new ContinuationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build());

যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন একটি লেনদেনের মধ্যে নিম্নলিখিত পদক্ষেপগুলি সম্পন্ন হয়:

  • ডেভেলপার পার্টনারের বিদ্যমান ContinuationCluster ডেটা মুছে ফেলা হয়েছে।
  • অনুরোধ থেকে প্রাপ্ত ডেটা পার্স করে আপডেট করা কন্টিনিউয়েশন ক্লাস্টারে সংরক্ষণ করা হয়।

কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।

publishUserAccountManagementRequest

এই এপিআইটি একটি সাইন ইন কার্ড প্রকাশ করতে ব্যবহৃত হয়। সাইন ইন অ্যাকশনটি ব্যবহারকারীদের অ্যাপের সাইন ইন পৃষ্ঠায় নিয়ে যায়, যাতে অ্যাপটি কন্টেন্ট প্রকাশ করতে (বা আরও ব্যক্তিগতকৃত কন্টেন্ট সরবরাহ করতে) পারে।

নিম্নলিখিত মেটাডেটা সাইন ইন কার্ডের একটি অংশ -

বৈশিষ্ট্য প্রয়োজনীয়তা বর্ণনা
অ্যাকশন উরি প্রয়োজনীয় অ্যাকশনের জন্য ডিপলিঙ্ক (অর্থাৎ অ্যাপ সাইন ইন পেজে নিয়ে যায়)
ছবি ঐচ্ছিক - প্রদান করা না হলে, শিরোনাম অবশ্যই প্রদান করতে হবে।

কার্ডে দেখানো ছবি

1264x712 রেজোলিউশনের 16x9 অ্যাসপেক্ট রেশিওর ছবি

শিরোনাম ঐচ্ছিক - প্রদান করা না হলে, ছবি অবশ্যই প্রদান করতে হবে। কার্ডের শিরোনাম
অ্যাকশন টেক্সট ঐচ্ছিক CTA-তে দেখানো টেক্সট (যেমন সাইন ইন)
উপশিরোনাম ঐচ্ছিক কার্ডে ঐচ্ছিক সাবটাইটেল

কোটলিন

var SIGN_IN_CARD_ENTITY =
      SignInCardEntity.Builder()
          .addPosterImage(
              Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build()

client.publishUserAccountManagementRequest(
            PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

জাভা

SignInCardEntity SIGN_IN_CARD_ENTITY =
      new SignInCardEntity.Builder()
          .addPosterImage(
              new Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build();

client.publishUserAccountManagementRequest(
            new PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন একটি লেনদেনের মধ্যে নিম্নলিখিত পদক্ষেপগুলি সম্পন্ন হয়:

  • ডেভেলপার পার্টনারের বিদ্যমান UserAccountManagementCluster ডেটা মুছে ফেলা হয়েছে।
  • অনুরোধ থেকে প্রাপ্ত ডেটা পার্স করে আপডেট করা UserAccountManagementCluster ক্লাস্টারে সংরক্ষণ করা হয়।

কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।

updatePublishStatus

যদি কোনো অভ্যন্তরীণ ব্যবসায়িক কারণে কোনো ক্লাস্টারই প্রকাশিত না হয়, তাহলে আমরা updatePublishStatus API ব্যবহার করে প্রকাশনার অবস্থা হালনাগাদ করার জন্য দৃঢ়ভাবে সুপারিশ করছি । এটি গুরুত্বপূর্ণ কারণ:

  • সব পরিস্থিতিতেই স্ট্যাটাস প্রদান করা অত্যন্ত গুরুত্বপূর্ণ, এমনকি যখন কন্টেন্ট প্রকাশিত হয় তখনও (স্ট্যাটাস == পাবলিশড)। এর ফলে এমন ড্যাশবোর্ডগুলো ডেটা দিয়ে পূর্ণ করা যায়, যা আপনার ইন্টিগ্রেশনের স্বাস্থ্য এবং অন্যান্য মেট্রিকস জানাতে এই সুস্পষ্ট স্ট্যাটাসটি ব্যবহার করে।
  • যদি কোনো কন্টেন্ট প্রকাশিত না হয় কিন্তু ইন্টিগ্রেশন স্ট্যাটাসটি অক্ষত থাকে (STATUS == NOT_PUBLISHED), তাহলে Google অ্যাপ হেলথ ড্যাশবোর্ডে অ্যালার্ট দেখানো এড়িয়ে যেতে পারে। এটি নিশ্চিত করে যে প্রোভাইডারের দৃষ্টিকোণ থেকে একটি প্রত্যাশিত পরিস্থিতির কারণেই কন্টেন্টটি প্রকাশিত হয়নি।
  • এটি ডেভেলপারদের ডেটা কখন প্রকাশিত হচ্ছে আর কখন হচ্ছে না, সে সম্পর্কে ধারণা পেতে সাহায্য করে।
  • গুগল স্ট্যাটাস কোডগুলো ব্যবহার করে ব্যবহারকারীকে অ্যাপের মধ্যে নির্দিষ্ট কিছু কাজ করতে উৎসাহিত করতে পারে, যাতে তারা অ্যাপের বিষয়বস্তু দেখতে বা বাধাটি অতিক্রম করতে পারে।

যোগ্য প্রকাশনা স্ট্যাটাস কোডগুলির তালিকা হলো:

// Content is published
AppEngagePublishStatusCode.PUBLISHED,

// Content is not published as user is not signed in
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN,

// Content is not published as user is not subscribed
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SUBSCRIPTION,

// Content is not published as user location is ineligible
AppEngagePublishStatusCode.NOT_PUBLISHED_INELIGIBLE_LOCATION,

// Content is not published as there is no eligible content
AppEngagePublishStatusCode.NOT_PUBLISHED_NO_ELIGIBLE_CONTENT,

// Content is not published as the feature is disabled by the client
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_FEATURE_DISABLED_BY_CLIENT,

// Content is not published as the feature due to a client error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_CLIENT_ERROR,

// Content is not published as the feature due to a service error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_SERVICE_ERROR,

// Content is not published due to some other reason
// Reach out to engage-developers@ before using this enum.
AppEngagePublishStatusCode.NOT_PUBLISHED_OTHER

যদি কোনো ব্যবহারকারী লগ ইন না করার কারণে কন্টেন্টটি প্রকাশিত না হয়, তাহলে গুগল সাইন ইন কার্ডটি প্রকাশ করার পরামর্শ দেবে। যদি কোনো কারণে প্রোভাইডাররা সাইন ইন কার্ডটি প্রকাশ করতে না পারেন, তাহলে আমরা NOT_PUBLISHED_REQUIRES_SIGN_IN স্ট্যাটাস কোড সহ updatePublishStatus API-টি কল করার পরামর্শ দিই।

কোটলিন

client.updatePublishStatus(
   PublishStatusRequest.Builder()
     .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
     .build())

জাভা

client.updatePublishStatus(
    new PublishStatusRequest.Builder()
        .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
        .build());

deleteRecommendationClusters

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

কোটলিন

client.deleteRecommendationClusters()

জাভা

client.deleteRecommendationClusters();

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

deleteFeaturedCluster

এই এপিআইটি ফিচার্ড ক্লাস্টারের কন্টেন্ট মুছে ফেলার জন্য ব্যবহৃত হয়।

কোটলিন

client.deleteFeaturedCluster()

জাভা

client.deleteFeaturedCluster();

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

deleteContinuationCluster

এই এপিআইটি কন্টিনিউয়েশন ক্লাস্টারের কন্টেন্ট মুছে ফেলার জন্য ব্যবহৃত হয়।

কোটলিন

client.deleteContinuationCluster()

জাভা

client.deleteContinuationCluster();

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

deleteUserManagementCluster

এই এপিআইটি UserAccountManagement ক্লাস্টারের বিষয়বস্তু মুছে ফেলার জন্য ব্যবহৃত হয়।

কোটলিন

client.deleteUserManagementCluster()

জাভা

client.deleteUserManagementCluster();

সার্ভিসটি অনুরোধটি গ্রহণ করলে, এটি UserAccountManagement ক্লাস্টার থেকে বিদ্যমান ডেটা মুছে ফেলে। কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।

deleteClusters

এই এপিআইটি একটি নির্দিষ্ট ক্লাস্টার টাইপের কন্টেন্ট মুছে ফেলার জন্য ব্যবহৃত হয়।

কোটলিন

client.deleteClusters(
    DeleteClustersRequest.Builder()
      .addClusterType(ClusterType.TYPE_CONTINUATION)
      .addClusterType(ClusterType.TYPE_FEATURED)
      .addClusterType(ClusterType.TYPE_RECOMMENDATION)
      .build())

জাভা

client.deleteClusters(
            new DeleteClustersRequest.Builder()
                .addClusterType(ClusterType.TYPE_CONTINUATION)
                .addClusterType(ClusterType.TYPE_FEATURED)
                .addClusterType(ClusterType.TYPE_RECOMMENDATION)
                .build());

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

ত্রুটি পরিচালনা

পাবলিশ এপিআই (publish API) থেকে টাস্কের ফলাফল শুনে নেওয়ার জন্য বিশেষভাবে সুপারিশ করা হচ্ছে, যাতে একটি সফল টাস্ক পুনরুদ্ধার করে পুনরায় জমা দেওয়ার জন্য পরবর্তী পদক্ষেপ নেওয়া যায়।

কোটলিন

client.publishRecommendationClusters(
        PublishRecommendationClustersRequest.Builder()
          .addRecommendationCluster(..)
          .build())
      .addOnCompleteListener { task ->
        if (task.isSuccessful) {
          // do something
        } else {
          val exception = task.exception
          if (exception is AppEngageException) {
            @AppEngageErrorCode val errorCode = exception.errorCode
            if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
              // do something
            }
          }
        }
      }

জাভা

client.publishRecommendationClusters(
              new PublishRecommendationClustersRequest.Builder()
                  .addRecommendationCluster(...)
                  .build())
          .addOnCompleteListener(
              task -> {
                if (task.isSuccessful()) {
                  // do something
                } else {
                  Exception exception = task.getException();
                  if (exception instanceof AppEngageException) {
                    @AppEngageErrorCode
                    int errorCode = ((AppEngageException) exception).getErrorCode();
                    if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
                      // do something
                    }
                  }
                }
              });

ত্রুটিটি একটি AppEngageException হিসেবে ফেরত আসে এবং এর কারণটি একটি ত্রুটি কোড হিসেবে অন্তর্ভুক্ত থাকে।

ত্রুটি কোড ত্রুটির নাম দ্রষ্টব্য
1 SERVICE_NOT_FOUND প্রদত্ত ডিভাইসটিতে পরিষেবাটি উপলব্ধ নয়।
2 SERVICE_NOT_AVAILABLE পরিষেবাটি প্রদত্ত ডিভাইসে উপলব্ধ আছে, কিন্তু কল করার সময় তা পাওয়া যাচ্ছে না (উদাহরণস্বরূপ, এটি স্পষ্টভাবে নিষ্ক্রিয় করা আছে)।
3 SERVICE_CALL_EXECUTION_FAILURE থ্রেডিং সমস্যার কারণে টাস্কটি সম্পাদন করা ব্যর্থ হয়েছে। এক্ষেত্রে, এটি পুনরায় চেষ্টা করা যেতে পারে।
4 SERVICE_CALL_PERMISSION_DENIED কলারকে সার্ভিস কল করার অনুমতি নেই।
5 SERVICE_CALL_INVALID_ARGUMENT অনুরোধটিতে অবৈধ ডেটা রয়েছে (উদাহরণস্বরূপ, অনুমোদিত সংখ্যার চেয়ে বেশি ক্লাস্টার)।
6 SERVICE_CALL_INTERNAL সার্ভিস সাইডে একটি ত্রুটি রয়েছে।
7 SERVICE_CALL_RESOURCE_EXHAUSTED সার্ভিস কলটি খুব ঘন ঘন করা হয়।

ধাপ ৩: ব্রডকাস্ট ইন্টেন্ট পরিচালনা করুন

একটি জবের মাধ্যমে কন্টেন্ট পাবলিশ এপিআই কল করার পাশাপাশি, কন্টেন্ট পাবলিশের অনুরোধ গ্রহণ করার জন্য একটি BroadcastReceiver সেট আপ করা প্রয়োজন।

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

BroadcastReceiver নিম্নলিখিত দুটি উপায়ে সেট আপ করতে হবে:

  • Context.registerReceiver() ব্যবহার করে BroadcastReceiver ক্লাসের একটি ইনস্ট্যান্স ডায়নামিকভাবে রেজিস্টার করুন। এটি মেমরিতে সক্রিয় থাকা অ্যাপ্লিকেশনগুলো থেকে যোগাযোগ সক্ষম করে।

কোটলিন

class AppEngageBroadcastReceiver : BroadcastReceiver(){
  // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
  // is received
  // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received
  // Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is
  // received
}

fun registerBroadcastReceivers(context: Context){
  var  context = context
  context = context.applicationContext

// Register Recommendation Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_RECOMMENDATION),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)

// Register Featured Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_FEATURED),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)

// Register Continuation Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)
}

জাভা

class AppEngageBroadcastReceiver extends BroadcastReceiver {
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
// is received

// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received

// Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is
// received
}

public static void registerBroadcastReceivers(Context context) {

context = context.getApplicationContext();

// Register Recommendation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

// Register Featured Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

// Register Continuation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

}
  • আপনার AndroidManifest.xml ফাইলে <receiver> ট্যাগ ব্যবহার করে একটি ইমপ্লিমেন্টেশন স্ট্যাটিক্যালি ডিক্লেয়ার করুন। এর ফলে অ্যাপ্লিকেশনটি চালু না থাকা অবস্থাতেও ব্রডকাস্ট ইন্টেন্ট গ্রহণ করতে পারে এবং কন্টেন্ট পাবলিশও করতে পারে।

<application>
   <receiver
      android:name=".AppEngageBroadcastReceiver"
      android:permission="com.google.android.engage.REQUEST_ENGAGE_DATA"
      android:exported="true"
      android:enabled="true">
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_CONTINUATION" />
      </intent-filter>
   </receiver>
</application>

পরিষেবাটি থেকে নিম্নলিখিত ইন্টেন্টগুলো পাঠানো হয়:

  • com.google.android.engage.action.PUBLISH_RECOMMENDATION এই ইন্টেন্টটি গ্রহণ করার সময় একটি publishRecommendationClusters কল শুরু করার পরামর্শ দেওয়া হয়।
  • com.google.android.engage.action.PUBLISH_FEATURED এই ইন্টেন্টটি গ্রহণ করার সময় একটি publishFeaturedCluster কল শুরু করার পরামর্শ দেওয়া হয়।
  • com.google.android.engage.action.PUBLISH_CONTINUATION এই ইন্টেন্টটি গ্রহণ করার পর একটি publishContinuationCluster কল শুরু করার পরামর্শ দেওয়া হয়।

ইন্টিগ্রেশন ওয়ার্কফ্লো

আপনার ইন্টিগ্রেশন সম্পন্ন হওয়ার পর তা যাচাই করার ধাপে ধাপে নির্দেশিকার জন্য, Engage ডেভেলপার ইন্টিগ্রেশন ওয়ার্কফ্লো দেখুন।

প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী

প্রায়শই জিজ্ঞাসিত প্রশ্নগুলির জন্য Engage SDK-এর প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী দেখুন।

যোগাযোগ করুন

ইন্টিগ্রেশন প্রক্রিয়া চলাকালীন কোনো প্রশ্ন থাকলে engage-developers@google.com এ যোগাযোগ করুন।

পরবর্তী পদক্ষেপ

এই ইন্টিগ্রেশনটি সম্পন্ন করার পর, আপনার পরবর্তী পদক্ষেপগুলো নিম্নরূপ:

  • engage-developers@google.com এ একটি ইমেল পাঠান এবং আপনার ইন্টিগ্রেটেড APK-টি সংযুক্ত করুন, যা গুগলের পরীক্ষার জন্য প্রস্তুত।
  • ইন্টিগ্রেশনটি প্রত্যাশিতভাবে কাজ করছে কিনা তা নিশ্চিত করার জন্য গুগল অভ্যন্তরীণভাবে যাচাই ও পর্যালোচনা করে। কোনো পরিবর্তনের প্রয়োজন হলে, গুগল প্রয়োজনীয় বিবরণসহ আপনার সাথে যোগাযোগ করে।
  • টেস্টিং সম্পন্ন হলে এবং কোনো পরিবর্তনের প্রয়োজন না থাকলে, গুগল আপনার সাথে যোগাযোগ করে জানিয়ে দেয় যে আপনি আপডেট করা ও সমন্বিত APK ফাইলটি প্লে স্টোরে প্রকাশ করা শুরু করতে পারেন।
  • আপনার আপডেট করা APK প্লে স্টোরে প্রকাশিত হয়েছে বলে গুগল নিশ্চিত করার পর, আপনার Recommendation , Featured , এবং Continuation ক্লাস্টারগুলো প্রকাশিত হতে পারে এবং ব্যবহারকারীরা তা দেখতে পেতে পারেন।