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

চিত্র : `ProductEntity`, `StoreEntity`, এবং `RecipeEntity`। (*ইউআই শুধুমাত্র দৃষ্টান্তমূলক উদ্দেশ্যে ব্যবহৃত) - একটি সুপারিশ ক্লাস্টার
ফিচার্ড ক্লাস্টার একাধিক ডেভেলপার পার্টনারের নির্বাচিত কিছু এনটিটি একটি UI গ্রুপে প্রদর্শন করে। একটিমাত্র ফিচার্ড ক্লাস্টার থাকবে, যা UI-এর উপরের দিকে প্রদর্শিত হবে এবং সমস্ত রিকমেন্ডেশন ক্লাস্টারের উপরে অগ্রাধিকার পাবে। প্রতিটি ডেভেলপার পার্টনার ফিচার্ড ক্লাস্টারে সর্বোচ্চ ১০টি এনটিটি ব্রডকাস্ট করতে পারবে।

চিত্র : `RecipeEntity` সহ বৈশিষ্ট্যযুক্ত ক্লাস্টার। (*ইউআই শুধুমাত্র দৃষ্টান্তমূলক উদ্দেশ্যে ব্যবহৃত) ফুড শপিং কার্ট ক্লাস্টারটি একটি UI গ্রুপে একাধিক ডেভেলপার পার্টনারের গ্রোসারি শপিং কার্টের একটি ঝলক দেখায় এবং ব্যবহারকারীদের তাদের অসমাপ্ত কার্টগুলো সম্পূর্ণ করতে উৎসাহিত করে। এখানে একটিমাত্র ফুড শপিং কার্ট ক্লাস্টার রয়েছে।
ফুড শপিং কার্ট ক্লাস্টারে কার্টে থাকা আইটেমগুলোর মোট সংখ্যা অবশ্যই দেখাতে হবে এবং ব্যবহারকারীর কার্টে থাকা নির্দিষ্ট সংখ্যক আইটেমের ছবিও অন্তর্ভুক্ত থাকতে পারে।

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

চিত্র: একজন সঙ্গীর খাদ্য কেনাকাটার তালিকার গুচ্ছ। (*ইউআই শুধুমাত্র দৃষ্টান্তমূলক উদ্দেশ্যে ব্যবহৃত) রিঅর্ডার ক্লাস্টারটি একাধিক ডেভেলপার পার্টনারের পূর্ববর্তী অর্ডারগুলোর একটি সংক্ষিপ্ত ঝলক একটি UI গ্রুপে দেখায়, যা ব্যবহারকারীদের পুনরায় অর্ডার করতে উৎসাহিত করে। এখানে একটিমাত্র রিঅর্ডার ক্লাস্টার রয়েছে।
রিঅর্ডার ক্লাস্টারে ব্যবহারকারীর পূর্ববর্তী অর্ডারের মোট আইটেমের সংখ্যা অবশ্যই দেখাতে হবে এবং এর সাথে নিম্নলিখিতগুলির মধ্যে যেকোনো একটি অবশ্যই অন্তর্ভুক্ত থাকতে হবে:
- ব্যবহারকারীর পূর্ববর্তী অর্ডারের X সংখ্যক আইটেমের ছবি।
- ব্যবহারকারীর পূর্ববর্তী অর্ডারের X সংখ্যক আইটেমের লেবেল।

চিত্র: একজন অংশীদারের কাছ থেকে খাদ্য পুনঃঅর্ডারের ক্লাস্টার। (*ইউআই শুধুমাত্র দৃষ্টান্তমূলক উদ্দেশ্যে ব্যবহৃত)
প্রাক-কাজ
সর্বনিম্ন এপিআই স্তর: ১৯
আপনার অ্যাপে 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.5.12'
}
সারসংক্ষেপ
ডিজাইনটি একটি বাউন্ড সার্ভিসের বাস্তবায়নের উপর ভিত্তি করে তৈরি।
বিভিন্ন ক্লাস্টার প্রকারের জন্য একজন ক্লায়েন্ট যে ডেটা প্রকাশ করতে পারে তা নিম্নলিখিত সীমাবদ্ধতার অধীন:
| ক্লাস্টার টাইপ | ক্লাস্টার সীমা | একটি ক্লাস্টারে সত্তার সর্বোচ্চ সীমা |
|---|---|---|
| সুপারিশ ক্লাস্টার(গুলি) | সর্বাধিক ৭ | সর্বাধিক ৫০টি ( ProductEntity , RecipeEntity , বা StoreEntity ) |
| বৈশিষ্ট্যযুক্ত ক্লাস্টার | সর্বাধিক ১ | সর্বাধিক ২০টি ( ProductEntity , RecipeEntity , বা StoreEntity ) |
| খাদ্য কেনাকাটার কার্ট ক্লাস্টার | সর্বাধিক ১ | সর্বাধিক ৩টি FoodShoppingCart |
| খাবার কেনাকাটার তালিকার গুচ্ছ | সর্বাধিক ১ | সর্বাধিক ৩টি FoodShoppingList |
| খাদ্য পুনঃঅর্ডার ক্লাস্টার | সর্বাধিক ১ | সর্বাধিক ১টি ReorderEntity |
ধাপ ১: সত্তার তথ্য প্রদান করুন
এসডিকে প্রতিটি আইটেমের ধরন বোঝানোর জন্য বিভিন্ন এনটিটি সংজ্ঞায়িত করেছে। আমরা খাদ্য বিভাগের জন্য নিম্নলিখিত এনটিটিগুলো সমর্থন করি:
-
ProductEntity -
StoreEntity -
RecipeEntity -
FoodShoppingCart -
FoodShoppingList -
FoodReorderCluster
নিচের চার্টগুলোতে প্রতিটি প্রকারের জন্য উপলব্ধ বৈশিষ্ট্য এবং প্রয়োজনীয়তাগুলো তুলে ধরা হয়েছে।
ProductEntity
ProductEntity অবজেক্টটি একটি স্বতন্ত্র আইটেমকে (যেমন মুদিখানার কোনো পণ্য, রেস্তোরাঁর কোনো খাবার বা কোনো প্রচারণা) প্রতিনিধিত্ব করে, যা ডেভেলপার পার্টনাররা প্রকাশ করতে চান।

ProductEntity বৈশিষ্ট্যসমূহ
| বৈশিষ্ট্য | প্রয়োজনীয়তা | বর্ণনা | ফর্ম্যাট |
|---|---|---|---|
| পোস্টারের ছবি | প্রয়োজনীয় | কমপক্ষে একটি ছবি অবশ্যই প্রদান করতে হবে। | নির্দেশনার জন্য ছবির বিবরণ দেখুন। |
| অ্যাকশন উরি | প্রয়োজনীয় | অ্যাপের মধ্যে থাকা সেই পৃষ্ঠার ডিপ লিঙ্ক, যেখানে পণ্যটির বিবরণ প্রদর্শিত হয়। দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন। | উরি |
| শিরোনাম | ঐচ্ছিক | পণ্যটির নাম। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ৯০ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| মূল্য - বর্তমান | শর্তসাপেক্ষে আবশ্যক | পণ্যটির বর্তমান মূল্য। যদি কেটে দেওয়া মূল্য প্রদান করা হয়, তবে এটি অবশ্যই প্রদান করতে হবে। | মুক্ত পাঠ্য |
| মূল্য - কেটে দেওয়া | ঐচ্ছিক | সত্তাটির আসল মূল্য, যা UI-তে কেটে দেওয়া হয়েছে। | মুক্ত পাঠ্য |
| কলআউট | ঐচ্ছিক | পণ্যের কোনো প্রচার, ইভেন্ট বা আপডেট থাকলে, তা তুলে ধরতে উল্লেখ করুন। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ৪৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| কলআউট সূক্ষ্ম মুদ্রণ | ঐচ্ছিক | কলআউটের জন্য সূক্ষ্ম হরফের লেখা। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ৪৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| রেটিং (ঐচ্ছিক) - দ্রষ্টব্য: সকল রেটিং আমাদের প্রচলিত স্টার রেটিং পদ্ধতি ব্যবহার করে প্রদর্শন করা হয়। | |||
| রেটিং - সর্বোচ্চ মান | ঐচ্ছিক | রেটিং স্কেলের সর্বোচ্চ মান। রেটিং-এর বর্তমান মান প্রদান করা হলে এটিও অবশ্যই প্রদান করতে হবে। | সংখ্যা >= ০.০ |
| রেটিং - বর্তমান মান | ঐচ্ছিক | রেটিং স্কেলের বর্তমান মান। রেটিং-এর সর্বোচ্চ মান প্রদান করা হলে এটিও অবশ্যই প্রদান করতে হবে। | সংখ্যা >= ০.০ |
| রেটিং - গণনা | ঐচ্ছিক | পণ্যটির রেটিং সংখ্যা। দ্রষ্টব্য: আপনার অ্যাপ যদি ব্যবহারকারীদের কাছে সংখ্যাটি কীভাবে প্রদর্শিত হবে তা নিয়ন্ত্রণ করে, তবে এই ফিল্ডটি প্রদান করুন। একটি সংক্ষিপ্ত স্ট্রিং ব্যবহার করুন। উদাহরণস্বরূপ, যদি সংখ্যাটি 1,000,000 হয়, তাহলে 1M-এর মতো একটি সংক্ষিপ্ত রূপ ব্যবহার করার কথা বিবেচনা করুন, যাতে ছোট ডিসপ্লে আকারে সংখ্যাটি কেটে না যায়। | স্ট্রিং |
| রেটিং - গণনার মান | ঐচ্ছিক | পণ্যটির রেটিং সংখ্যা। দ্রষ্টব্য: আপনি যদি সংক্ষিপ্ত রূপ প্রদর্শনের লজিকটি নিজে পরিচালনা না করেন, তবে এই ফিল্ডটি প্রদান করুন। যদি Count এবং Count Value উভয়ই উপস্থিত থাকে, তবে ব্যবহারকারীদের কাছে Count প্রদর্শিত হবে। | দীর্ঘ |
| DisplayTimeWindow (ঐচ্ছিক) - সারফেসে কোনো কন্টেন্ট প্রদর্শনের জন্য একটি সময়সীমা নির্ধারণ করুন। | |||
| শুরুর সময় | ঐচ্ছিক | ইপক টাইমস্ট্যাম্প, যার পরে বিষয়বস্তুটি পৃষ্ঠে প্রদর্শিত হবে। সেট করা না থাকলে, বিষয়বস্তুটি পৃষ্ঠে প্রদর্শিত হওয়ার যোগ্য। | মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প |
| শেষ টাইমস্ট্যাম্প | ঐচ্ছিক | ইপক টাইমস্ট্যাম্প, যার পরে বিষয়বস্তুটি আর পৃষ্ঠে প্রদর্শিত হয় না। সেট করা না থাকলে, বিষয়বস্তুটি পৃষ্ঠে প্রদর্শিত হওয়ার যোগ্য। | মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প |
StoreEntity
StoreEntity অবজেক্টটি একটি স্বতন্ত্র স্টোরকে প্রতিনিধিত্ব করে, যা ডেভেলপার পার্টনাররা প্রকাশ করতে চান, যেমন একটি রেস্তোরাঁ বা মুদি দোকান।

StoreEntity অ্যাট্রিবিউটসমূহ
| বৈশিষ্ট্য | প্রয়োজনীয়তা | বর্ণনা | ফর্ম্যাট |
|---|---|---|---|
| পোস্টারের ছবি | প্রয়োজনীয় | কমপক্ষে একটি ছবি অবশ্যই প্রদান করতে হবে। | নির্দেশনার জন্য ছবির বিবরণ দেখুন। |
| অ্যাকশন উরি | প্রয়োজনীয় | অ্যাপের মধ্যে থাকা স্টোর সম্পর্কিত বিস্তারিত তথ্য প্রদর্শনকারী পেজটির ডিপ লিঙ্ক। দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন। | উরি |
| শিরোনাম | ঐচ্ছিক | দোকানের নাম। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ৪৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| অবস্থান | ঐচ্ছিক | দোকানটির অবস্থান। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ৪৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| কলআউট | ঐচ্ছিক | স্টোরের কোনো প্রোমো, ইভেন্ট বা আপডেট থাকলে, তা তুলে ধরতে কলআউট করুন। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ৪৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| কলআউট সূক্ষ্ম মুদ্রণ | ঐচ্ছিক | কলআউটের জন্য সূক্ষ্ম হরফের লেখা। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ৪৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| বর্ণনা | ঐচ্ছিক | দোকানটির একটি বিবরণ। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ৯০ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| বিভাগ | ঐচ্ছিক | খাবারের জায়গার প্রেক্ষাপটে, একটি দোকানের খাবারের ধরন হতে পারে "ফরাসি", "নিউ আমেরিকান", "রামেন", "ফাইন ডাইনিং"-এর মতো রন্ধনশৈলী। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ৪৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| দ্রষ্টব্য: সকল রেটিং আমাদের প্রচলিত তারকা রেটিং পদ্ধতি ব্যবহার করে প্রদর্শন করা হয়। | |||
| রেটিং - সর্বোচ্চ মান | ঐচ্ছিক | রেটিং স্কেলের সর্বোচ্চ মান। রেটিং-এর বর্তমান মান প্রদান করা হলে এটিও অবশ্যই প্রদান করতে হবে। | সংখ্যা >= ০.০ |
| রেটিং - বর্তমান মান | ঐচ্ছিক | রেটিং স্কেলের বর্তমান মান। রেটিং-এর সর্বোচ্চ মান প্রদান করা হলে এটিও অবশ্যই প্রদান করতে হবে। | সংখ্যা >= ০.০ |
| রেটিং - গণনা | ঐচ্ছিক | দোকানটির রেটিং সংখ্যা। দ্রষ্টব্য: আপনার অ্যাপ যদি ব্যবহারকারীদের কাছে এটি কীভাবে প্রদর্শিত হবে তা নিয়ন্ত্রণ করতে চায়, তবে এই ফিল্ডটি প্রদান করুন। ব্যবহারকারীকে দেখানোর জন্য সংক্ষিপ্ত স্ট্রিংটি প্রদান করুন। উদাহরণস্বরূপ, যদি সংখ্যাটি 1,000,000 হয়, তাহলে 1M-এর মতো সংক্ষিপ্ত রূপ ব্যবহার করার কথা বিবেচনা করুন, যাতে এটি ছোট ডিসপ্লে আকারে কেটে না যায়। | স্ট্রিং |
| রেটিং - গণনার মান | ঐচ্ছিক | দোকানটির রেটিং সংখ্যা। দ্রষ্টব্য: আপনি যদি প্রদর্শনের সংক্ষিপ্ত রূপের লজিক নিজে পরিচালনা করতে না চান, তবে এই ফিল্ডটি প্রদান করুন। যদি Count এবং Count Value উভয়ই উপস্থিত থাকে, তবে আমরা ব্যবহারকারীদের দেখানোর জন্য Count ব্যবহার করব। | দীর্ঘ |
RecipeEntity
RecipeEntity অবজেক্টটি এমন একটি রেসিপি আইটেমকে প্রতিনিধিত্ব করে যা ডেভেলপার পার্টনাররা প্রকাশ করতে চান।

RecipeEntity বৈশিষ্ট্যসমূহ
| বৈশিষ্ট্য | প্রয়োজনীয়তা | বর্ণনা | ফর্ম্যাট |
|---|---|---|---|
| পোস্টারের ছবি | প্রয়োজনীয় | কমপক্ষে একটি ছবি অবশ্যই প্রদান করতে হবে। | নির্দেশনার জন্য ছবির বিবরণ দেখুন। |
| অ্যাকশন উরি | প্রয়োজনীয় | অ্যাপের মধ্যে থাকা রেসিপি সম্পর্কিত বিস্তারিত তথ্য প্রদর্শনকারী পেজটির ডিপ লিঙ্ক। দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন। | উরি |
| শিরোনাম | ঐচ্ছিক | রেসিপিটির নাম। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ৪৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| লেখক | ঐচ্ছিক | রেসিপিটির লেখক। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ৪৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| রান্না/প্রস্তুতির সময় | ঐচ্ছিক | রেসিপিটির রান্নার সময়। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ৪৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| কলআউট | ঐচ্ছিক | রেসিপিটির কোনো প্রচার, অনুষ্ঠান বা আপডেট থাকলে, তা তুলে ধরতে উল্লেখ করুন। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ৪৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| বিভাগ | ঐচ্ছিক | রেসিপির বিভাগ। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ৪৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| বর্ণনা | ঐচ্ছিক | রন্ধনপ্রণালীটির বর্ণনা। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ৯০ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| দ্রষ্টব্য: সকল রেটিং আমাদের প্রচলিত তারকা রেটিং পদ্ধতি ব্যবহার করে প্রদর্শন করা হয়েছে। | |||
| রেটিং - সর্বোচ্চ মান | ঐচ্ছিক | রেটিং স্কেলের সর্বোচ্চ মান। রেটিং-এর বর্তমান মান প্রদান করা হলে এটিও অবশ্যই প্রদান করতে হবে। | সংখ্যা >= ০.০ |
| রেটিং - বর্তমান মান | ঐচ্ছিক | রেটিং স্কেলের বর্তমান মান। রেটিং-এর সর্বোচ্চ মান প্রদান করা হলে এটিও অবশ্যই প্রদান করতে হবে। | সংখ্যা >= ০.০ |
| রেটিং - গণনা | ঐচ্ছিক | রেসিপিটির রেটিং সংখ্যা। দ্রষ্টব্য: আপনার অ্যাপ যদি ব্যবহারকারীদের কাছে এটি কীভাবে প্রদর্শিত হবে তা নিয়ন্ত্রণ করতে চায়, তবে এই ফিল্ডটি প্রদান করুন। ব্যবহারকারীকে দেখানোর জন্য সংক্ষিপ্ত স্ট্রিংটি প্রদান করুন। উদাহরণস্বরূপ, যদি সংখ্যাটি 1,000,000 হয়, তাহলে 1M-এর মতো সংক্ষিপ্ত রূপ ব্যবহার করার কথা বিবেচনা করুন, যাতে এটি ছোট ডিসপ্লে আকারে কেটে না যায়। | স্ট্রিং |
| রেটিং - গণনার মান | ঐচ্ছিক | রেসিপিটির রেটিং সংখ্যা। দ্রষ্টব্য: আপনি যদি প্রদর্শনের সংক্ষিপ্ত রূপের লজিক নিজে পরিচালনা করতে না চান, তবে এই ফিল্ডটি প্রদান করুন। যদি Count এবং Count Value উভয়ই উপস্থিত থাকে, তবে আমরা ব্যবহারকারীদের দেখানোর জন্য Count ব্যবহার করব। | দীর্ঘ |
FoodShoppingCart

| বৈশিষ্ট্য | প্রয়োজনীয়তা | বর্ণনা | ফর্ম্যাট |
|---|---|---|---|
| অ্যাকশন উরি | প্রয়োজনীয় | অংশীদারের অ্যাপে শপিং কার্টের ডিপ লিঙ্ক। দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন। | উরি |
| আইটেমের সংখ্যা | প্রয়োজনীয় | শপিং কার্টে থাকা আইটেমের সংখ্যা (শুধু পণ্যের সংখ্যা নয়)। উদাহরণস্বরূপ: যদি কার্টে ৩টি কমলালেবু এবং ১টি আপেল থাকে, তাহলে এই সংখ্যাটি ৪ হওয়া উচিত। | পূর্ণসংখ্যা >= 1 |
| শেষ ব্যবহারকারীর মিথস্ক্রিয়ার সময় | প্রয়োজনীয় | ব্যবহারকারী শেষবার শপিং কার্টের সাথে ইন্টারঅ্যাক্ট করার মুহূর্তটি শনাক্ত করার সময় থেকে অতিবাহিত মিলিসেকেন্ডের সংখ্যা। | মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প |
| শিরোনাম | ঐচ্ছিক | কার্টের শিরোনাম (উদাহরণস্বরূপ, আপনার কার্ট )। ডেভেলপার কর্তৃক কোনো শিরোনাম প্রদান করা না হলে, আপনার কার্টই ডিফল্ট হিসেবে গণ্য হবে। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ২৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| অ্যাকশন টেক্সট | ঐচ্ছিক | শপিং কার্টের বাটনের কল টু অ্যাকশন টেক্সট (উদাহরণস্বরূপ, আপনার শপিং ব্যাগ )। ডেভেলপার কর্তৃক কোনো অ্যাকশন টেক্সট প্রদান করা না হলে, ডিফল্ট হিসেবে ‘ভিউ কার্ট’ প্রদর্শিত হয়। এই অ্যাট্রিবিউটটি সংস্করণ ১.১.০ এবং তার পরবর্তী সংস্করণগুলোতে সমর্থিত। | স্ট্রিং |
| কার্টের ছবি | ঐচ্ছিক | কার্টে থাকা প্রতিটি পণ্যের ছবি। অগ্রাধিকারের ক্রমানুসারে সর্বোচ্চ ১০টি ছবি প্রদান করা যেতে পারে; প্রদর্শিত ছবির প্রকৃত সংখ্যা ডিভাইসের ফর্ম ফ্যাক্টরের উপর নির্ভর করে। | নির্দেশনার জন্য ছবির বিবরণ দেখুন। |
| আইটেম লেবেল | ঐচ্ছিক | কেনাকাটার তালিকায় থাকা জিনিসগুলোর লেবেলের তালিকা। প্রদর্শিত লেবেলের প্রকৃত সংখ্যা ডিভাইসের ফর্ম ফ্যাক্টরের উপর নির্ভর করে। | বিনামূল্যের টেক্সট লেবেলের তালিকা প্রস্তাবিত লেখার আকার: ২০ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| DisplayTimeWindow (ঐচ্ছিক) - সারফেসে কোনো কন্টেন্ট প্রদর্শনের জন্য একটি সময়সীমা নির্ধারণ করুন। | |||
| শুরুর সময় | ঐচ্ছিক | ইপক টাইমস্ট্যাম্প, যার পরে বিষয়বস্তুটি পৃষ্ঠে প্রদর্শিত হবে। সেট করা না থাকলে, বিষয়বস্তুটি পৃষ্ঠে প্রদর্শিত হওয়ার যোগ্য। | মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প |
| শেষ টাইমস্ট্যাম্প | ঐচ্ছিক | ইপক টাইমস্ট্যাম্প, যার পরে বিষয়বস্তুটি আর পৃষ্ঠে প্রদর্শিত হয় না। সেট করা না থাকলে, বিষয়বস্তুটি পৃষ্ঠে প্রদর্শিত হওয়ার যোগ্য। | মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প |
FoodShoppingList

| বৈশিষ্ট্য | প্রয়োজনীয়তা | বর্ণনা | ফর্ম্যাট |
|---|---|---|---|
| অ্যাকশন উরি | প্রয়োজনীয় | পার্টনারের অ্যাপে থাকা শপিং লিস্টের ডিপ লিঙ্ক। দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন। | উরি |
| আইটেমের সংখ্যা | প্রয়োজনীয় | কেনাকাটার তালিকায় থাকা জিনিসপত্রের সংখ্যা। | পূর্ণসংখ্যা >= 1 |
| শেষ ব্যবহারকারীর মিথস্ক্রিয়ার সময় | প্রয়োজনীয় | ব্যবহারকারী শেষবার কেনাকাটার তালিকার সাথে ইন্টারঅ্যাক্ট করার মুহূর্তটি শনাক্ত করার সময় থেকে অতিবাহিত মিলিসেকেন্ডের সংখ্যা। | মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প |
| শিরোনাম | ঐচ্ছিক | তালিকার শিরোনাম (উদাহরণস্বরূপ, আপনার মুদিখানার তালিকা )। ডেভেলপার কোনো শিরোনাম প্রদান না করলে, 'কেনাকাটার তালিকা' ডিফল্ট হিসেবে থাকে। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ২৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| আইটেম লেবেল | প্রয়োজনীয় | কেনাকাটার তালিকায় থাকা জিনিসগুলোর লেবেলের তালিকা। কমপক্ষে ১টি লেবেল অবশ্যই প্রদান করতে হবে এবং অগ্রাধিকারের ভিত্তিতে সর্বোচ্চ ১০টি লেবেল প্রদান করা যেতে পারে; প্রদর্শিত লেবেলের প্রকৃত সংখ্যা ডিভাইসের ফর্ম ফ্যাক্টরের উপর নির্ভর করে। | বিনামূল্যের টেক্সট লেবেলের তালিকা প্রস্তাবিত লেখার আকার: ২০ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
FoodReorderCluster

| বৈশিষ্ট্য | প্রয়োজনীয়তা | বর্ণনা | ফর্ম্যাট |
|---|---|---|---|
| অ্যাকশন উরি | প্রয়োজনীয় | পার্টনারের অ্যাপে পুনরায় অর্ডার করার ডিপ লিঙ্ক। দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন। | উরি |
| অ্যাকশন টেক্সট | ঐচ্ছিক | পুনরায় অর্ডার করার বাটনের কল টু অ্যাকশন টেক্সট (উদাহরণস্বরূপ, আবার অর্ডার করুন )। ডেভেলপার কর্তৃক কোনো অ্যাকশন টেক্সট প্রদান করা না হলে, রিঅর্ডার ডিফল্ট হিসেবে সেট হয়। এই অ্যাট্রিবিউটটি সংস্করণ ১.১.০ এবং তার পরবর্তী সংস্করণগুলোতে সমর্থিত। | স্ট্রিং |
| আইটেমের সংখ্যা | প্রয়োজনীয় | পূর্ববর্তী অর্ডারের আইটেমের সংখ্যা (শুধু পণ্যের সংখ্যা নয়)। উদাহরণস্বরূপ: যদি আগের অর্ডারে ৩টি ছোট কফি এবং ১টি ক্রোসাঁ থাকে, তাহলে এই সংখ্যাটি ৪ হওয়া উচিত। | পূর্ণসংখ্যা >= 1 |
| শিরোনাম | প্রয়োজনীয় | পুনরায় অর্ডার করা আইটেমটির শিরোনাম। | মুক্ত পাঠ্য প্রস্তাবিত লেখার আকার: ৪০ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| আইটেম লেবেল | ঐচ্ছিক (প্রদত্ত না থাকলে পোস্টারের ছবি সরবরাহ করতে হবে) | পূর্ববর্তী অর্ডারের আইটেম লেবেলগুলোর তালিকা। অগ্রাধিকারের ক্রমানুসারে সর্বোচ্চ ১০টি লেবেল প্রদান করা যেতে পারে; প্রদর্শিত লেবেলের প্রকৃত সংখ্যা ডিভাইসের ফর্ম ফ্যাক্টরের উপর নির্ভর করে। | মুক্ত পাঠ্যের তালিকা প্রতিটি লেবেলের জন্য প্রস্তাবিত লেখার আকার: ২০ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখায় ডট ডট চিহ্ন (ইলিপসিস) দেখা যেতে পারে) |
| পোস্টারের ছবি | ঐচ্ছিক (প্রদান করা না থাকলে, পণ্যের লেবেল সরবরাহ করতে হবে) | পূর্ববর্তী অর্ডারের পণ্যগুলোর ছবি। অগ্রাধিকারের ক্রমানুসারে সর্বোচ্চ ১০টি ছবি প্রদান করা যেতে পারে; প্রদর্শিত ছবির প্রকৃত সংখ্যা ডিভাইসের ফর্ম ফ্যাক্টরের উপর নির্ভর করে। | নির্দেশনার জন্য ছবির বিবরণ দেখুন। |
ছবির স্পেসিফিকেশন
ইমেজ অ্যাসেটগুলির জন্য প্রয়োজনীয় স্পেসিফিকেশনগুলি নিচে তালিকাভুক্ত করা হলো:
| আকৃতির অনুপাত | সর্বনিম্ন পিক্সেল | প্রস্তাবিত পিক্সেল |
|---|---|---|
বর্গক্ষেত্র (১x১) পছন্দের | ৩০০x৩০০ | ১২০০x১২০০ |
| ভূদৃশ্য (১.৯১x১) | ৬০০x৩১৪ | ১২০০x৬২৮ |
| প্রতিকৃতি (৪x৫) | ৪৮০x৬০০ | ৯৬০x১২০০ |
ফাইল ফরম্যাট
PNG, JPG, স্ট্যাটিক GIF, WebP
সর্বোচ্চ ফাইলের আকার
৫১২০ কেবি
অতিরিক্ত সুপারিশ
- ছবির নিরাপদ এলাকা: আপনার গুরুত্বপূর্ণ বিষয়বস্তু ছবির মাঝের ৮০% অংশে রাখুন।
- একটি স্বচ্ছ ব্যাকগ্রাউন্ড ব্যবহার করুন, যাতে ছবিটি ডার্ক এবং লাইট থিম সেটিংসে সঠিকভাবে প্রদর্শিত হয়।
ধাপ ২: ক্লাস্টার ডেটা প্রদান করুন
কন্টেন্ট প্রকাশের কাজটি ব্যাকগ্রাউন্ডে (যেমন, WorkManager ব্যবহার করে) সম্পাদন করার এবং নিয়মিতভাবে বা কোনো নির্দিষ্ট ইভেন্টের ভিত্তিতে (যেমন, প্রতিবার ব্যবহারকারী অ্যাপটি খুললে বা কার্টে কিছু যোগ করলে) শিডিউল করার পরামর্শ দেওয়া হয়।
AppEngageFoodClient খাদ্য ক্লাস্টার প্রকাশ করার জন্য দায়ী।
ক্লায়েন্টে ক্লাস্টার প্রকাশ করার জন্য নিম্নলিখিত API গুলো রয়েছে:
-
isServiceAvailable -
publishRecommendationClusters -
publishFeaturedCluster -
publishFoodShoppingCarts -
publishFoodShoppingLists -
publishReorderCluster -
publishUserAccountManagementRequest -
updatePublishStatus -
deleteRecommendationsClusters -
deleteFeaturedCluster -
deleteFoodShoppingCartCluster -
deleteFoodShoppingListCluster -
deleteReorderCluster -
deleteUserManagementCluster -
deleteClusters
isServiceAvailable
পরিষেবাটি ইন্টিগ্রেশনের জন্য উপলব্ধ কিনা এবং কন্টেন্টটি ডিভাইসে প্রদর্শন করা যাবে কিনা, তা যাচাই করতে এই এপিআইটি ব্যবহৃত হয়।
কোটলিন
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 অবজেক্টগুলোর একটি তালিকা প্রকাশ করতে ব্যবহৃত হয়।
একটি RecommendationCluster অবজেক্টের নিম্নলিখিত অ্যাট্রিবিউটগুলো থাকতে পারে:
| বৈশিষ্ট্য | প্রয়োজনীয়তা | বর্ণনা |
|---|---|---|
| ProductEntity, StoreEntity, বা RecipeEntity-এর তালিকা | প্রয়োজনীয় | এই সুপারিশ ক্লাস্টারের সুপারিশগুলো গঠনকারী সত্তাগুলোর একটি তালিকা। একটি ক্লাস্টারের অন্তর্ভুক্ত সত্তাগুলো অবশ্যই একই ধরনের হতে হবে। |
| শিরোনাম | প্রয়োজনীয় | সুপারিশ ক্লাস্টারের শিরোনাম (উদাহরণস্বরূপ, থ্যাঙ্কসগিভিং মেনুতে বড় সাশ্রয় )। প্রস্তাবিত লেখার আকার: ২৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে) |
| উপশিরোনাম | ঐচ্ছিক | সুপারিশ ক্লাস্টারের উপশিরোনাম। |
| অ্যাকশন উরি | ঐচ্ছিক | পার্টনার অ্যাপের সেই পৃষ্ঠার ডিপ লিঙ্ক, যেখানে ব্যবহারকারীরা সুপারিশগুলোর সম্পূর্ণ তালিকা দেখতে পারবেন। দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন। |
কোটলিন
client.publishRecommendationClusters(
PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(
RecommendationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.setTitle("Big savings on Thanksgiving menu")
.build())
.build())
জাভা
client.publishRecommendationClusters(
new PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(
new RecommendationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.setTitle("Big savings on Thanksgiving menu")
.build())
.build());
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন একটি লেনদেনের মধ্যে নিম্নলিখিত পদক্ষেপগুলি সম্পন্ন হয়:
- বিদ্যমান সমস্ত সুপারিশ ক্লাস্টার ডেটা মুছে ফেলা হয়েছে।
- অনুরোধ থেকে প্রাপ্ত ডেটা পার্স করে নতুন সুপারিশ ক্লাস্টারগুলিতে সংরক্ষণ করা হয়।
কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
publishFeaturedCluster
এই এপিআইটি একটি FeaturedCluster অবজেক্ট প্রকাশ করতে ব্যবহৃত হয়।
কোটলিন
client.publishFeaturedCluster(
PublishFeaturedClusterRequest.Builder()
.setFeaturedCluster(
FeaturedCluster.Builder()
...
.build())
.build())
জাভা
client.publishFeaturedCluster(
new PublishFeaturedClusterRequest.Builder()
.setFeaturedCluster(
new FeaturedCluster.Builder()
...
.build())
.build());
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন একটি লেনদেনের মধ্যে নিম্নলিখিত পদক্ষেপগুলি সম্পন্ন হয়:
- ডেভেলপার পার্টনারের বিদ্যমান
FeaturedClusterডেটা মুছে ফেলা হয়েছে। - অনুরোধ থেকে প্রাপ্ত ডেটা পার্স করে আপডেট করা ফিচার্ড ক্লাস্টারে সংরক্ষণ করা হয়।
কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
publishFoodShoppingCarts
এই এপিআইটি FoodShoppingCart অবজেক্টগুলোর একটি তালিকা প্রকাশ করতে ব্যবহৃত হয়।
কোটলিন
client.publishFoodShoppingCarts(
PublishFoodShoppingCartsRequest.Builder()
.addFoodShoppingCart(
FoodShoppingCart.Builder()
...
.build())
.build())
জাভা
client.publishFoodShoppingCarts(
new PublishFoodShoppingCartsRequest.Builder()
.addFoodShoppingCart(
new FoodShoppingCart.Builder()
...
.build())
.build());
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন একটি লেনদেনের মধ্যে নিম্নলিখিত পদক্ষেপগুলি সম্পন্ন হয়:
- ডেভেলপার পার্টনারের বিদ্যমান
FoodShoppingCartডেটা মুছে ফেলা হয়েছে। - অনুরোধ থেকে প্রাপ্ত ডেটা পার্স করে আপডেট করা শপিং কার্ট ক্লাস্টারে সংরক্ষণ করা হয়।
কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
publishFoodShoppingLists
এই এপিআইটি FoodShoppingList অবজেক্টের একটি তালিকা প্রকাশ করতে ব্যবহৃত হয়।
কোটলিন
client.publishFoodShoppingLists(
PublishFoodShoppingListsRequest.Builder()
.addFoodShoppingList(
FoodShoppingListEntity.Builder()
...
.build())
.build())
জাভা
client.publishFoodShoppingLists(
new PublishFoodShoppingListsRequest.Builder()
.addFoodShoppingList(
new FoodShoppingListEntity.Builder()
...
.build())
.build());
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন একটি লেনদেনের মধ্যে নিম্নলিখিত পদক্ষেপগুলি সম্পন্ন হয়:
- ডেভেলপার পার্টনারের কাছ থেকে প্রাপ্ত
FoodShoppingListবিদ্যমান ডেটা মুছে ফেলা হয়েছে। - অনুরোধ থেকে প্রাপ্ত ডেটা পার্স করে আপডেট করা শপিং লিস্ট ক্লাস্টারে সংরক্ষণ করা হয়।
কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
publishReorderCluster
এই এপিআইটি একটি FoodReorderCluster অবজেক্ট প্রকাশ করতে ব্যবহৃত হয়।
কোটলিন
client.publishReorderCluster(
PublishReorderClusterRequest.Builder()
.setReorderCluster(
FoodReorderCluster.Builder()
...
.build())
.build())
জাভা
client.publishReorderCluster(
new PublishReorderClusterRequest.Builder()
.setReorderCluster(
new FoodReorderCluster.Builder()
...
.build())
.build());
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন একটি লেনদেনের মধ্যে নিম্নলিখিত পদক্ষেপগুলি সম্পন্ন হয়:
- ডেভেলপার পার্টনারের কাছ থেকে প্রাপ্ত বিদ্যমান
FoodReorderClusterডেটা মুছে ফেলা হয়েছে। - অনুরোধ থেকে প্রাপ্ত ডেটা পার্স করে আপডেট করা রিঅর্ডার ক্লাস্টারে সংরক্ষণ করা হয়।
কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
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();
সার্ভিসটি অনুরোধটি গ্রহণ করলে, এটি ফিচার্ড ক্লাস্টার থেকে বিদ্যমান ডেটা মুছে ফেলে। কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
deleteFoodShoppingCartCluster
এই এপিআইটি ফুড শপিং কার্ট ক্লাস্টারের কন্টেন্ট মুছে ফেলার জন্য ব্যবহৃত হয়।
কোটলিন
client.deleteFoodShoppingCartCluster()
জাভা
client.deleteFoodShoppingCartCluster();
সার্ভিসটি অনুরোধটি গ্রহণ করলে, এটি ফুড শপিং কার্ট ক্লাস্টার থেকে বিদ্যমান ডেটা মুছে ফেলে। কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
deleteFoodShoppingListCluster
এই এপিআইটি ফুড শপিং লিস্ট ক্লাস্টারের কন্টেন্ট মুছে ফেলার জন্য ব্যবহৃত হয়।
কোটলিন
client.deleteFoodShoppingListCluster()
জাভা
client.deleteFoodShoppingListCluster();
সার্ভিসটি অনুরোধটি গ্রহণ করলে, এটি ফুড শপিং লিস্ট ক্লাস্টার থেকে বিদ্যমান ডেটা মুছে ফেলে। কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
deleteReorderCluster
এই এপিআইটি FoodReorderCluster-এর কন্টেন্ট মুছে ফেলার জন্য ব্যবহৃত হয়।
কোটলিন
client.deleteReorderCluster()
জাভা
client.deleteReorderCluster();
সার্ভিসটি অনুরোধটি গ্রহণ করলে, এটি রিঅর্ডার ক্লাস্টার থেকে বিদ্যমান ডেটা মুছে ফেলে। কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
deleteUserManagementCluster
এই এপিআইটি UserAccountManagement ক্লাস্টারের বিষয়বস্তু মুছে ফেলার জন্য ব্যবহৃত হয়।
কোটলিন
client.deleteUserManagementCluster()
জাভা
client.deleteUserManagementCluster();
সার্ভিসটি অনুরোধটি গ্রহণ করলে, এটি UserAccountManagement ক্লাস্টার থেকে বিদ্যমান ডেটা মুছে ফেলে। কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
deleteClusters
এই এপিআইটি একটি নির্দিষ্ট ক্লাস্টার টাইপের কন্টেন্ট মুছে ফেলার জন্য ব্যবহৃত হয়।
কোটলিন
client.deleteClusters(
DeleteClustersRequest.Builder()
.addClusterType(ClusterType.TYPE_FEATURED)
.addClusterType(ClusterType.TYPE_RECOMMENDATION)
...
.build())
জাভা
client.deleteClusters(
new DeleteClustersRequest.Builder()
.addClusterType(ClusterType.TYPE_FEATURED)
.addClusterType(ClusterType.TYPE_RECOMMENDATION)
...
.build());
সার্ভিসটি অনুরোধটি গ্রহণ করলে, এটি নির্দিষ্ট ক্লাস্টার টাইপের সাথে মিলে যাওয়া সমস্ত ক্লাস্টার থেকে বিদ্যমান ডেটা মুছে ফেলে। ক্লায়েন্টরা একটি বা একাধিক ক্লাস্টার টাইপ বেছে নিতে পারেন। কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
ত্রুটি পরিচালনা
পাবলিশ এপিআই (publish API) থেকে টাস্কের ফলাফল শুনে নেওয়ার জন্য বিশেষভাবে সুপারিশ করা হচ্ছে, যাতে একটি সফল টাস্ক পুনরুদ্ধার করে পুনরায় জমা দেওয়ার জন্য পরবর্তী পদক্ষেপ নেওয়া যায়।
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 food shopping cart cluster publish when PUBLISH_FOOD_SHOPPING_CART broadcast
// is received
// Trigger food shopping list cluster publish when PUBLISH_FOOD_SHOPPING_LIST broadcast
// is received
// Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER 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 food Shopping Cart Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_FOOD_SHOPPING_CART),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
// Register food Shopping List Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_FOOD_SHOPPING_LIST),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
// Register Reorder Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_REORDER_CLUSTER),
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 food shopping cart cluster publish when PUBLISH_FOOD_SHOPPING_CART broadcast is
// received
// Trigger food shopping list cluster publish when PUBLISH_FOOD_SHOPPING_LIST broadcast is
// received
// Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER 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 food Shopping Cart Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_FOOD_SHOPPING_CART),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
// Register food Shopping List Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_FOOD_SHOPPING_LIST),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
// Register Reorder Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_REORDER_CLUSTER),
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.food.PUBLISH_FOOD_SHOPPING_CART" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_LIST" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.food.PUBLISH_REORDER_CLUSTER" />
</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.food.PUBLISH_FOOD_SHOPPING_CARTএই ইন্টেন্টটি গ্রহণ করার সময় একটিpublishFoodShoppingCartsকল শুরু করার পরামর্শ দেওয়া হয়। -
com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_LISTএই ইন্টেন্টটি পেলে একটিpublishFoodShoppingListsকল শুরু করার পরামর্শ দেওয়া হয়। -
com.google.android.engage.action.food.PUBLISH_REORDER_CLUSTERএই ইন্টেন্টটি পেলে একটিpublishReorderClusterকল শুরু করার পরামর্শ দেওয়া হয়।
ইন্টিগ্রেশন ওয়ার্কফ্লো
আপনার ইন্টিগ্রেশন সম্পন্ন হওয়ার পর তা যাচাই করার ধাপে ধাপে নির্দেশিকার জন্য, Engage ডেভেলপার ইন্টিগ্রেশন ওয়ার্কফ্লো দেখুন।
প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
প্রায়শই জিজ্ঞাসিত প্রশ্নগুলির জন্য Engage SDK-এর প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী দেখুন।
যোগাযোগ করুন
ইন্টিগ্রেশন প্রক্রিয়া চলাকালীন কোনো প্রশ্ন থাকলে engage-developers@google.com এ যোগাযোগ করুন। আমাদের টিম যত তাড়াতাড়ি সম্ভব উত্তর দেবে।
পরবর্তী পদক্ষেপ
এই ইন্টিগ্রেশনটি সম্পন্ন করার পর, আপনার পরবর্তী পদক্ষেপগুলো নিম্নরূপ:
-
engage-developers@google.comএ একটি ইমেল পাঠান এবং আপনার ইন্টিগ্রেটেড APK-টি সংযুক্ত করুন, যা গুগলের পরীক্ষার জন্য প্রস্তুত। - ইন্টিগ্রেশনটি প্রত্যাশিতভাবে কাজ করছে কিনা তা নিশ্চিত করার জন্য গুগল অভ্যন্তরীণভাবে একটি যাচাই ও পর্যালোচনা করবে। কোনো পরিবর্তনের প্রয়োজন হলে, গুগল প্রয়োজনীয় বিবরণসহ আপনার সাথে যোগাযোগ করবে।
- টেস্টিং সম্পন্ন হলে এবং কোনো পরিবর্তনের প্রয়োজন না থাকলে, গুগল আপনার সাথে যোগাযোগ করে জানিয়ে দেবে যে আপনি আপডেট করা ও সমন্বিত APK ফাইলটি প্লে স্টোরে প্রকাশ করা শুরু করতে পারেন।
- আপনার আপডেট করা APK প্লে স্টোরে প্রকাশিত হয়েছে বলে গুগল নিশ্চিত করার পর, আপনার Recommendation , Featured , Shopping Cart , Shopping List , এবং Reorder ক্লাস্টারগুলো প্রকাশিত হবে এবং ব্যবহারকারীরা তা দেখতে পাবেন।