Engage SDK Shopping: থার্ড-পার্টি টেকনিক্যাল ইন্টিগ্রেশন সংক্রান্ত নির্দেশাবলী

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

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

বিভাগ সংক্রান্ত সহায়তা ও সারফেস

Engage SDK সারফেসের উপযুক্ততা আপনার অ্যাপের কন্টেন্ট বিভাগের উপর নির্ভর করে। নির্দিষ্ট সারফেসে আপনার যোগ্যতা নির্ধারণ করতে নিম্নলিখিত টেবিল ব্যবহার করুন:

স্ট্যাটাস কন্টেন্ট বিভাগ বা ব্যবহারিক প্রয়োগ যেসব সারফেসে কাজ করে
কাজ করে
(সব সারফেসে উপযুক্ত)
  • পোশাক কেনাকাটা
  • অনলাইন মার্কেটপ্লেস
  • রিটেলার
  • খাদ্য ও পানীয় সংক্রান্ত জিনিস কেনাকাটা / মুদিখানা
  • ডিসকাউন্ট ও কুপন
  • পোষ্য / সাপ্লাই
  • ঘর ও বাড়ি / রিয়েল এস্টেট
  • সংগ্রহ
  • Play Store অ্যাপ ট্যাব
  • Play Store-এর অ্যাকাউন্ট ট্যাব
  • Play Store-এর স্টোর লিস্টিং পৃষ্ঠা
কাজ করে না
  • ক্রেতা অ্যাপ
  • B2B Shopping
  • বিক্রেতা / মার্চেন্ট অ্যাপ
  • রসিদ স্ক্যানার পুরস্কার
  • টেলিকম পরিষেবা
  • এখন কিনুন, পরে পেমেন্ট করুন

ইন্টিগ্রেশনের বিবরণ

এই বিভাগে শপিং কন্টেন্টের জন্য Engage SDK-এর সাথে ইন্টিগ্রেট করার জন্য প্রয়োজনীয় ধাপ, ডেটা মডেল এবং পরিভাষা সম্পর্কে বিস্তারিত আলোচনা করা হয়েছে।

পরিভাষা

এই ইন্টিগ্রেশনে নিম্নলিখিত পাঁচটি ক্লাস্টার টাইপ অন্তর্ভুক্ত: সাজেশন, ফিচার করা, শপিং কার্ট, শপিং লিস্ট, আবার অর্ডার করা এবং শপিং অর্ডার ট্র্যাকিং।

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

    আপনার সাজেশন নিম্নলিখিত স্ট্রাকচার অনুযায়ী তৈরি হয়:

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

    • ShoppingEntity: একটি ক্লাস্টারে একটি আইটেমকে উপস্থাপন করে এমন একটি অবজেক্ট।

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

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

    আপনার শপিং কার্ট নিম্নলিখিত স্ট্রাকচার অনুযায়ী কাজ করে:

    • শপিং কার্ট ক্লাস্টার: একটি UI ভিউ যাতে অনেক ডেভেলপার পার্টনারের শপিং কার্টের প্রিভিউয়ের গ্রুপ থাকে।

    • ShoppingCart: শপিং কার্ট ক্লাস্টারে দেখানোর জন্য, একক ডেভেলপার পার্টনারের শপিং কার্ট প্রিভিউকে উপস্থাপনকারী অবজেক্ট। ShoppingCart-এ কার্টে থাকা আইটেমের মোট সংখ্যা দেখাতে হবে এবং ব্যবহারকারীর কার্টে থাকা কিছু আইটেমের ছবিও অন্তর্ভুক্ত থাকতে পারে।

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

  • আবার অর্ডার করুন ক্লাস্টারটি একাধিক ডেভেলপার পার্টনারের থেকে আগের অর্ডারের একটি স্নিক পিক দেখায় একটি UI গ্রুপিংয়ে, ব্যবহারকারীদের আবার অর্ডার করতে অনুরোধ করে। একটি মাত্র রিঅর্ডার ক্লাস্টার আছে।

    • আবার অর্ডার করার ক্লাস্টারে ব্যবহারকারীর আগের অর্ডারে আইটেমের মোট সংখ্যা দেখাতে হবে এবং নিম্নলিখিতগুলির মধ্যে একটিও অন্তর্ভুক্ত করতে হবে:

      • ব্যবহারকারীর আগের অর্ডারে Xটি আইটেমের ছবি।
      • ব্যবহারকারীর আগের অর্ডারে Xটি আইটেমের লেবেল।
  • শপিং অর্ডার ট্র্যাকিং ক্লাস্টারটি একটি UI গ্রুপিংয়ে অনেক ডেভেলপার পার্টনারের কাছ থেকে বাকি থাকা বা সম্প্রতি সম্পূর্ণ হওয়া শপিং অর্ডারের একটি স্নিক পিক দেখায়, যা ব্যবহারকারীদের তাদের অর্ডার ট্র্যাক করতে দেয়।

    UI-এর উপরের দিকে একটি ShoppingOrderTracking ক্লাস্টার দেখানো হয়, যেটি সব সাজেশন ক্লাস্টারের উপরে অগ্রাধিকারের ভিত্তিতে প্লেস করা হয়। প্রত্যেক ডেভেলপার পার্টনারকে Shopping অর্ডার ট্র্যাকিং ক্লাস্টারে একাধিক ShoppingOrderTrackingEntity আইটেম ব্রডকাস্ট করার অনুমতি দেওয়া হয়।

    • আপনার ShoppingOrderTrackingCluster-এর স্ট্রাকচার নিম্নলিখিতভাবে তৈরি করা হয়:

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

প্রি-ওয়ার্ক

ন্যূনতম API লেভেল: ১৯

আপনার অ্যাপে 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'
}

আরও তথ্যের জন্য, Android 11-এ প্যাকেজের দৃশ্যমানতা দেখুন।

সারাংশ

ডিজাইনটি বাউন্ড পরিষেবার প্রয়োগের উপর ভিত্তি করে তৈরি করা হয়েছে।

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

ক্লাস্টারের ধরন ক্লাস্টারের সীমা একটি ক্লাস্টারে সর্বাধিক এন্টিটি সীমা
সাজেশন ক্লাস্টার সর্বাধিক ৭টি সর্বাধিক ৫০টি ShoppingEntity
ফিচার করা ক্লাস্টার সর্বাধিক ১টি সর্বাধিক ২০টি ShoppingEntity
শপিং কার্ট ক্লাস্টার সর্বাধিক ১টি সর্বাধিক ৩টি ShoppingCart

প্রতি মার্চেন্টের জন্য আলাদা কার্ট সহ অ্যাপের ক্ষেত্রে একাধিক কার্ট প্রত্যাশিত।

শপিং লিস্ট ক্লাস্টার সর্বাধিক ১টি সর্বাধিক ৩টি ShoppingList
Shopping Reorder Cluster সর্বাধিক ১টি সর্বাধিক ১টি ReorderEntity
শপিং অর্ডার ট্র্যাকিং ক্লাস্টার সর্বাধিক ৩টি সর্বাধিক ৩টি ShoppingOrderTrackingEntity

ধাপ ১: এন্টিটি ডেটা প্রদান করুন

প্রতিটি আইটেমের ধরন দেখানোর জন্য SDK-তে বিভিন্ন এন্টিটি সংজ্ঞায়িত করা আছে। Shopping বিভাগের জন্য নিম্নলিখিত এন্টিটি কাজ করে:

  1. ShoppingEntity
  2. ShoppingCart
  3. ShoppingList
  4. Reorder
  5. ShoppingOrderTracking

নিম্নলিখিত চার্টে প্রতিটি ধরনের জন্য উপলভ্য অ্যাট্রিবিউট ও প্রয়োজনীয়তার আউটলাইন দেওয়া আছে।

ShoppingEntity

ShoppingEntity অবজেক্টটি প্রোডাক্ট, প্রোমোশন, ডিল, সাবস্ক্রিপশন বা ইভেন্টকে দেখায়, যা ডেভেলপার পার্টনাররা প্রকাশ করতে চান।

ShoppingEntity
অ্যাট্রিবিউট প্রয়োজনীয়তা বর্ণনা ফর্ম্যাট
পোস্টার ছবি প্রয়োজনীয় অন্তত একটি ছবি দিতে হবে। নির্দেশনার জন্য ছবির স্পেসিফিকেশন দেখুন।
অ্যাকশন Uri প্রয়োজনীয়

অ্যাপের পৃষ্ঠায় ডিপ লিঙ্ক যা এন্টিটি সম্পর্কে বিবরণ দেখায়।

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

URI
শীর্ষক ঐচ্ছিক এন্টিটির নাম।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ৯০ অক্ষরের কম (টেক্সট খুব বড় হলে উপবৃত্ত দেখানো হতে পারে)

দাম - বর্তমান শর্তসাপেক্ষে প্রয়োজন

এন্টিটির বর্তমান দাম।

স্ট্রাইকথ্রু দাম দেওয়া থাকলে এটি দিতেই হবে।

ফ্রি টেক্সট
দাম - স্ট্রাইকথ্রু ঐচ্ছিক এন্টিটির আসল দাম, যা UI-তে কাটা চিহ্নের মাধ্যমে দেখানো হবে। ফ্রি টেক্সট
কলআউট ঐচ্ছিক উপলভ্য থাকলে, এন্টিটির জন্য প্রোমো, ইভেন্ট বা আপডেট ফিচার করার জন্য কলআউট।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ৪৫ অক্ষরের কম (টেক্সট খুব বড় হলে উপবৃত্ত দেখানো হতে পারে)

কলআউট ফাইন প্রিন্ট ঐচ্ছিক কলআউটের জন্য ফাইন প্রিন্ট টেক্সট।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ৪৫ অক্ষরের কম (টেক্সট খুব বড় হলে উপবৃত্ত দেখানো হতে পারে)

রেটিং (ঐচ্ছিক) - মনে রাখবেন: সব রেটিং আমাদের স্ট্যান্ডার্ড স্টার রেটিং সিস্টেম ব্যবহার করে দেখানো হয়।
রেটিং - সর্বোচ্চ ভ্যালু ঐচ্ছিক

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

রেটিংয়ের বর্তমান ভ্যালু দেওয়া থাকলে এটিও দিতে হবে।

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

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

রেটিংয়ের সর্বাধিক মান দেওয়া থাকলে এটিও দিতে হবে।

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

সত্ত্বার জন্য রেটিংয়ের সংখ্যা।

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

স্ট্রিং
রেটিং - গণনা ভ্যালু ঐচ্ছিক

সত্ত্বার জন্য রেটিংয়ের সংখ্যা।

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

দীর্ঘ
DisplayTimeWindow (ঐচ্ছিক) - সারফেসে কন্টেন্ট দেখানোর জন্য একটি টাইম উইন্ডো সেট করুন
শুরুর টাইমস্ট্যাম্প ঐচ্ছিক

যে ইপক টাইমস্ট্যাম্পের পরে সারফেসে কন্টেন্ট দেখানো হবে।

সেট করা না থাকলে, কন্টেন্ট সারফেসে দেখানোর উপযুক্ত হবে।

মিলিসেকেন্ডে Epoch টাইমস্ট্যাম্প
শেষের টাইমস্ট্যাম্প ঐচ্ছিক

যে ইপক টাইমস্ট্যাম্পের পরে কন্টেন্ট আর সারফেসে দেখানো হয় না।

সেট করা না থাকলে, কন্টেন্ট সারফেসে দেখানোর উপযুক্ত হবে।

মিলিসেকেন্ডে Epoch টাইমস্ট্যাম্প

ShoppingCart

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

পার্টনারের অ্যাপে শপিং কার্টের ডিপ লিঙ্ক।

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

URI
আইটেমের সংখ্যা প্রয়োজনীয়

শপিং কার্টে আইটেমের সংখ্যা (শুধু প্রোডাক্টের সংখ্যা নয়)।

যেমন: কার্টে ৩টি একই ধরনের শার্ট এবং ১টি টুপি থাকলে, এই সংখ্যাটি ৪ হতে হবে।

পূর্ণসংখ্যা >= ১
অ্যাকশন টেক্সট ঐচ্ছিক

শপিং কার্টে বোতামের কল টু অ্যাকশন টেক্সট (যেমন, আপনার শপিং ব্যাগ)।

ডেভেলপার কোনও অ্যাকশন টেক্সট না দিলে, কার্ট দেখুন ডিফল্ট হিসেবে সেট করা থাকে।

এই অ্যাট্রিবিউট 1.1.0 ভার্সন থেকে কাজ করে।

স্ট্রিং
শীর্ষক ঐচ্ছিক

কার্টের শীর্ষক (যেমন, আপনার শপিং ব্যাগ)।

ডেভেলপার কোনও শিরোনাম না দিলে, আপনার কার্ট ডিফল্ট হিসেবে সেট করা হয়।

ডেভেলপার পার্টনার যদি প্রতিটি মার্চেন্টের জন্য আলাদা কার্ট প্রকাশ করেন, তাহলে টাইটেলে মার্চেন্টের নাম অন্তর্ভুক্ত করুন।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ২৫টি অক্ষরের কম (টেক্সট খুব বড় হলে ইলিপসিস দেখানো হতে পারে)

কার্টের ছবি ঐচ্ছিক

কার্টে থাকা প্রতিটি প্রোডাক্টের ছবি।

অগ্রাধিকারের ক্রম অনুযায়ী সর্বাধিক ১০টি ছবি দেওয়া যেতে পারে; কতগুলি ছবি দেখানো হবে তা ডিভাইসের ফর্ম ফ্যাক্টরের উপর নির্ভর করে।

নির্দেশনার জন্য ছবির স্পেসিফিকেশন দেখুন।
আইটেম লেবেল ঐচ্ছিক

শপিং লিস্টে থাকা আইটেমের লেবেলের তালিকা।

প্রকৃত কতগুলি লেবেল দেখানো হবে তা ডিভাইসের ফর্ম ফ্যাক্টরের উপর নির্ভর করে।

ফ্রি টেক্সট লেবেলের তালিকা

সাজেস্ট করা টেক্সটের সাইজ: ২০টি অক্ষরের কম (টেক্সট খুব বড় হলে ইলিপসিস দেখানো হতে পারে)

ব্যবহারকারীর শেষ ইন্টার‍্যাকশনের টাইমস্ট্যাম্প ঐচ্ছিক ব্যবহারকারী শেষবার কার্টের সাথে ইন্টার‍্যাক্ট করার সময় থেকে কত মিলিসেকেন্ড অতিবাহিত হয়েছে।

এটি ডেভেলপার পার্টনার ইনপুট হিসেবে পাস করবেন যারা মার্চেন্ট পিছু আলাদা কার্ট প্রকাশ করেন এবং এটি র‍্যাংকিংয়ের জন্য ব্যবহার করা হতে পারে।

মিলিসেকেন্ডে Epoch টাইমস্ট্যাম্প
DisplayTimeWindow (ঐচ্ছিক) - সারফেসে কন্টেন্ট দেখানোর জন্য একটি টাইম উইন্ডো সেট করুন
শুরুর টাইমস্ট্যাম্প ঐচ্ছিক

যে ইপক টাইমস্ট্যাম্পের পরে সারফেসে কন্টেন্ট দেখানো হবে।

সেট করা না থাকলে, কন্টেন্ট সারফেসে দেখানোর উপযুক্ত হবে।

মিলিসেকেন্ডে Epoch টাইমস্ট্যাম্প
শেষের টাইমস্ট্যাম্প ঐচ্ছিক

যে ইপক টাইমস্ট্যাম্পের পরে কন্টেন্ট আর সারফেসে দেখানো হয় না।

সেট করা না থাকলে, কন্টেন্ট সারফেসে দেখানোর উপযুক্ত হবে।

মিলিসেকেন্ডে Epoch টাইমস্ট্যাম্প

ShoppingList

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

পার্টনারের অ্যাপে শপিং লিস্টের ডিপ লিঙ্ক।

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

URI
আইটেমের সংখ্যা প্রয়োজনীয় শপিং লিস্টে থাকা আইটেমের সংখ্যা। পূর্ণসংখ্যা >= ১
শীর্ষক ঐচ্ছিক

তালিকার নাম (যেমন, আপনার মুদিখানার তালিকা)।

ডেভেলপার কোনও নাম না দিলে, শপিং লিস্ট ডিফল্ট হিসেবে সেট করা হয়।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ২৫টি অক্ষরের কম (টেক্সট খুব বড় হলে ইলিপসিস দেখানো হতে পারে)

আইটেম লেবেল প্রয়োজনীয়

শপিং লিস্টে থাকা আইটেমের লেবেলের তালিকা।

কমপক্ষে ১টি লেবেল দিতে হবে এবং অগ্রাধিকারের ভিত্তিতে সর্বাধিক ১০টি লেবেল দেওয়া যেতে পারে; কতগুলি লেবেল দেখানো হবে তা নির্ভর করে ডিভাইসের ফর্ম ফ্যাক্টরের উপর।

ফ্রি টেক্সট লেবেলের তালিকা

সাজেস্ট করা টেক্সটের সাইজ: ২০টি অক্ষরের কম (টেক্সট খুব বড় হলে ইলিপসিস দেখানো হতে পারে)

ব্যবহারকারীর শেষ ইন্টার‍্যাকশনের টাইমস্ট্যাম্প প্রয়োজনীয় ব্যবহারকারী শেষবার যখন শপিং লিস্টের সাথে ইন্টার‍্যাক্ট করেছেন, সেই সময় শনাক্ত করে ইপক থেকে কত মিলিসেকেন্ড অতিবাহিত হয়েছে তার সংখ্যা। মিলিসেকেন্ডে Epoch টাইমস্ট্যাম্প

ShoppingReorderCluster

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

পার্টনারের অ্যাপে আবার অর্ডার করার ডিপ লিঙ্ক।

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

URI
অ্যাকশন টেক্সট ঐচ্ছিক

আবার অর্ডার করুন বোতামের কল টু অ্যাকশন টেক্সট (যেমন, আবার অর্ডার করুন)।

ডেভেলপার কোনও অ্যাকশন টেক্সট না দিলে, আবার সাজান ডিফল্ট হিসেবে সেট করা হয়।

এই অ্যাট্রিবিউট 1.1.0 ভার্সন থেকে কাজ করে।

স্ট্রিং
আইটেমের সংখ্যা প্রয়োজনীয়

আগের অর্ডারে আইটেমের সংখ্যা (শুধু প্রোডাক্টের সংখ্যা নয়)।

যেমন: আগের অর্ডারে ৩টি ছোট কফি ও ১টি ক্রোয়াসা থাকলে, এই সংখ্যাটি ৪ হতে হবে।

পূর্ণসংখ্যা >= ১
শীর্ষক প্রয়োজনীয় আবার সাজানো আইটেমের শীর্ষক।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ৪০ অক্ষরের কম (টেক্সট খুব বড় হলে উপবৃত্তাকার চিহ্ন দেখানো হতে পারে)

আইটেম লেবেল

ঐচ্ছিক

(এটি না দেওয়া হলে, পোস্টার ছবি দিতে হবে)

আগের অর্ডারের জন্য আইটেম লেবেলের তালিকা।

অগ্রাধিকারের ক্রম অনুসারে সর্বাধিক ১০টি লেবেল প্রদান করা যেতে পারে; প্রকৃতপক্ষে কতগুলি লেবেল দেখানো হবে তা ডিভাইসের ফর্ম ফ্যাক্টরের উপর নির্ভর করে।

ফ্রি টেক্সটের তালিকা

প্রতি লেবেলে সাজেস্ট করা টেক্সটের সাইজ: ২০টি অক্ষরের কম (টেক্সট খুব বড় হলে উপবৃত্ত দেখানো হতে পারে)

পোস্টার ছবি

ঐচ্ছিক

(প্রদান করা না হলে, আইটেম লেবেল প্রদান করতে হবে)

আগের অর্ডারে থাকা আইটেমের ছবি।

অগ্রাধিকারের ক্রম অনুযায়ী সর্বাধিক ১০টি ছবি দেওয়া যেতে পারে; কতগুলি ছবি দেখানো হবে তা ডিভাইসের ফর্ম ফ্যাক্টরের উপর নির্ভর করে।

নির্দেশনার জন্য ছবির স্পেসিফিকেশন দেখুন।

ShoppingOrderTrackingCluster

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

ট্র্যাক করা হচ্ছে এমন প্যাকেজ/আইটেমের সংক্ষিপ্ত নাম বা ট্র্যাকিং নম্বর।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ৫০টি অক্ষর (খুব বড় টেক্সট হলে ইলিপসিস দেখানো হবে)

অর্ডারের ধরন প্রয়োজনীয়

ট্র্যাক করা হচ্ছে এমন প্যাকেজ/আইটেমের সংক্ষিপ্ত নাম বা ট্র্যাকিং নম্বর।

Enum: IN_STORE_PICKUP, SAME_DAY_DELIVERY, MULTI_DAY_DELIVERY

স্ট্যাটাস প্রয়োজনীয়

অর্ডারের বর্তমান স্ট্যাটাস।

যেমন: "দেরি হচ্ছে", "ট্রানজিটে আছে", "দেরি হয়েছে", "শিপ করা হয়েছে", "ডেলিভার করা হয়েছে", "স্টক শেষ", "অর্ডার রেডি"

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ২৫টি অক্ষর (টেক্সট অনেক বড় হলে ইলিপসিস দেখানো হবে)

অর্ডারের সময় প্রয়োজনীয়

অর্ডার করার সময় মিলিসেকেন্ডে দেখানো ইপক টাইমস্ট্যাম্প।

ডেলিভারির সম্ভাব্য সময়সীমা উপলভ্য না থাকলে, অর্ডারের সময় দেখানো হবে

মিলিসেকেন্ডে Epoch টাইমস্ট্যাম্প
অ্যাকশন Uri প্রয়োজনীয়

পার্টনারের অ্যাপে অর্ডার ট্র্যাকিংয়ের ডিপ লিঙ্ক।

URI
OrderDeliveryTimeWindow (ঐচ্ছিক) - অর্ডার করার সময় থেকে প্রত্যাশিত/প্রকৃত ডেলিভারির সময় পর্যন্ত ট্র্যাক করা হচ্ছে এমন অর্ডারের জন্য একটি সময়সীমা সেট করুন।
OrderDeliveryTimeWindow - শুরুর সময় ঐচ্ছিক

মিলি সেকেন্ডে ইপক টাইমস্ট্যাম্প, যে তারিখে/তারিখের পরে অর্ডার ডেলিভার করা হবে বা পিক-আপের জন্য প্রস্তুত থাকবে।

মিলিসেকেন্ডে Epoch টাইমস্ট্যাম্প
OrderDeliveryTimeWindow - শেষ হওয়ার সময় ঐচ্ছিক

মিলি সেকেন্ডে ইপক টাইমস্ট্যাম্প, যে তারিখে বা তার আগে অর্ডার ডেলিভার করা হবে বা পিক-আপের জন্য রেডি থাকবে।

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

অর্ডারের অংশ হিসেবে একটি আইটেম/প্রোডাক্টের ছবি।

সাজেস্ট করা অ্যাস্পেক্ট রেশিও হল ১:১

নির্দেশনার জন্য ছবির স্পেসিফিকেশন দেখুন।
আইটেমের সংখ্যা ঐচ্ছিক অর্ডারে আইটেমের সংখ্যা। পূর্ণসংখ্যা >= ১
বর্ণনা ঐচ্ছিক

অর্ডারে থাকা আইটেমগুলি বর্ণনা করার জন্য টেক্সটের একটি অনুচ্ছেদ।

মনে রাখবেন: ব্যবহারকারীকে বিবরণ অথবা সাবটাইটেল তালিকা দেখানো হবে, দুটি একসাথে দেখানো হবে না।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ১৮০টি অক্ষর

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

সর্বাধিক ৩টি সাবটাইটেল, প্রতিটি সাবটাইটেলে এক লাইনের টেক্সট থাকবে।

মনে রাখবেন: ব্যবহারকারীকে বিবরণ অথবা সাবটাইটেল তালিকা দেখানো হবে, দুটি একসাথে দেখানো হবে না।

ফ্রি টেক্সট

প্রতিটি সাবটাইটেলের জন্য সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ৫০টি অক্ষর

অর্ডার ভ্যালু - CurrentPrice ঐচ্ছিক অর্ডারের বর্তমান ভ্যালু। ফ্রি টেক্সট
অর্ডার নম্বর ঐচ্ছিক অর্ডার নম্বর/আইডি যা অর্ডারটি অনন্যভাবে শনাক্ত করতে ব্যবহার করা যেতে পারে।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ২৫টি অক্ষর

ট্র্যাকিং নম্বর ঐচ্ছিক অর্ডার ডেলিভারি করার প্রয়োজন হলে, অর্ডার/পার্সেল ডেলিভারির ট্র্যাকিং নম্বর।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ২৫টি অক্ষর

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

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

অ্যাস্পেক্ট রেশিও ন্যূনতম পিক্সেল সাজেস্ট করা পিক্সেল

বর্গাকার (১x১)

ফিচার করা হয়নি এমন ক্লাস্টারের জন্য পছন্দ করা হয়

৩০০x৩০০ ১২০০x১২০০

ল্যান্ডস্কেপ (১.৯১x১)

ফিচার করা ক্লাস্টারের জন্য পছন্দ করা হয়

৬০০x৩১৪ ১২০০x৬২৮
পোর্ট্রেট (৪x৫) ৪৮০x৬০০ ৯৬০x১২০০

ফাইলের ফর্ম্যাট

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

ফাইলের সর্বাধিক সাইজ

৫১২০ কেবি

অতিরিক্ত সাজেশন

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

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

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

শপিং ক্লাস্টার প্রকাশ করার জন্য AppEngageShoppingClient দায়বদ্ধ।

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

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishShoppingCarts
  • publishShoppingLists
  • publishShoppingReorderCluster
  • publishShoppingOrderTrackingCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteShoppingCartCluster
  • deleteShoppingListCluster
  • deleteReorderCluster
  • deleteShoppingOrderTrackingCluster
  • deleteUserManagementCluster
  • deleteClusters

isServiceAvailable

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

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

ক্লাস্টারের ধরন ক্লাস্টারের ধরন কনস্ট্যান্ট পূর্ণসংখ্যার মান
অজানা TYPE_UNKNOWN 0
সাজেশন ক্লাস্টার TYPE_RECOMMENDATION 1
ফিচার করা ক্লাস্টার TYPE_FEATURED 2
কন্টিনিউয়েশন ক্লাস্টার TYPE_CONTINUATION 3
শপিং কার্ট ক্লাস্টার TYPE_SHOPPING_CART 4
ব্যবহারকারী ম্যানেজমেন্ট ক্লাস্টার TYPE_ENGAGEMENT 8
শপিং লিস্ট ক্লাস্টার TYPE_SHOPPING_LIST 9
Shopping Reorder Cluster TYPE_SHOPPING_REORDER 10
শপিং অর্ডার ট্র্যাকিং ক্লাস্টার TYPE_SHOPPING_ORDER_TRACKING 11
সাবস্ক্রিপশন ক্লাস্টার TYPE_SUBSCRIPTION 12

Kotlin

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-developers@google.com-এ যোগাযোগ করুন।

v1.6.0-এর আগের SDK ভার্সনের জন্য (বন্ধ হয়ে গেছে)

Kotlin

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 অবজেক্টের তালিকা প্রকাশ করতে এই API ব্যবহার করা হয়।

RecommendationCluster অবজেক্টে নিম্নলিখিত অ্যাট্রিবিউট থাকতে পারে:

অ্যাট্রিবিউট প্রয়োজনীয়তা বর্ণনা
ShoppingEntity-এর তালিকা প্রয়োজনীয় ShoppingEntity অবজেক্টের একটি তালিকা যা এই সাজেশন ক্লাস্টারের জন্য সাজেশন তৈরি করে।
শীর্ষক প্রয়োজনীয়

সাজেশন ক্লাস্টারের শীর্ষক।

সাজেস্ট করা টেক্সটের সাইজ: ২৫টি অক্ষরের কম (টেক্সট অনেক বড় হলে উপবৃত্ত দেখানো হতে পারে)

সাবটাইটেল ঐচ্ছিক সাজেশন ক্লাস্টারের সাবটাইটেল।
অ্যাকশন Uri ঐচ্ছিক

পার্টনার অ্যাপের পৃষ্ঠার ডিপ লিঙ্ক যেখানে ব্যবহারকারী সাজেশনের সম্পূর্ণ তালিকা দেখতে পাবেন।

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

Kotlin

client.publishRecommendationClusters(
            PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Black Friday Deals")
                        .build())
                .build())

জাভা

client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Black Friday Deals")
                        .build())
                .build());

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

  • আগে থেকে থাকা সব সাজেশন ক্লাস্টার ডেটা সরিয়ে দেওয়া হয়েছে।
  • অনুরোধ থেকে পাওয়া ডেটা পার্স করা হয় এবং নতুন সাজেশন ক্লাস্টারে স্টোর করা হয়।

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

publishFeaturedCluster

এই API-এর মাধ্যমে FeaturedCluster অবজেক্ট প্রকাশ করা হয়।

Kotlin

client.publishFeaturedCluster(
            PublishFeaturedClusterRequest.Builder()
                .setFeaturedCluster(
                    FeaturedCluster.Builder()
                        ...
                        .build())
                .build())

জাভা

client.publishFeaturedCluster(
            new PublishFeaturedClusterRequest.Builder()
                .setFeaturedCluster(
                    new FeaturedCluster.Builder()
                        ...
                        .build())
                .build());

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

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

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

publishShoppingCarts

ShoppingCart অবজেক্টের তালিকা প্রকাশ করতে এই API ব্যবহার করা হয়। এটি ডেভেলপার পার্টনারের ক্ষেত্রে প্রযোজ্য যারা প্রতিটি মার্চেন্টের জন্য আলাদা কার্ট প্রকাশ করেন। এই API ব্যবহার করার সময়, শিরোনামে মার্চেন্টের নাম অন্তর্ভুক্ত করুন।

Kotlin

client.publishShoppingCarts(
            PublishShoppingCartClustersRequest.Builder()
                .addShoppingCart(
                    ShoppingCart.Builder()
                        ...
                        .build())
                .build())

জাভা

client.publishShoppingCarts(
            new PublishShoppingCartClustersRequest.Builder()
                .addShoppingCart(
                    new ShoppingCart.Builder()
                        ...
                        .build())
                .build())

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

  • ডেভেলপার পার্টনারের থেকে পাওয়া আগে থেকে থাকা ShoppingCart ডেটা সরিয়ে দেওয়া হয়েছে।
  • অনুরোধ থেকে পাওয়া ডেটা পার্স করা হয় এবং আপডেট করা শপিং কার্ট ক্লাস্টারে স্টোর করা হয়।

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

publishShoppingLists

ShoppingList অবজেক্টের তালিকা প্রকাশ করতে এই API ব্যবহার করা হয়।

Kotlin

client.publishShoppingLists(
            PublishShoppingListsRequest.Builder()
                .addShoppingList(
                    ShoppingList.Builder()
                        ...
                        .build())
                .build())

জাভা

client.publishShoppingLists(
            new PublishShoppingListsRequest.Builder()
                .addShoppingList(
                    new ShoppingList.Builder()
                        ...
                        .build())
                .build());

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

  • ডেভেলপার পার্টনারের থেকে পাওয়া আগে থেকে থাকা ShoppingList ডেটা সরিয়ে দেওয়া হয়েছে।
  • অনুরোধ থেকে পাওয়া ডেটা পার্স করা হয় এবং আপডেট করা শপিং লিস্ট ক্লাস্টারে স্টোর করা হয়।

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

publishShoppingReorderCluster

এই API-এর মাধ্যমে ShoppingReorderCluster অবজেক্ট প্রকাশ করা হয়।

Kotlin

client.publishShoppingReorderCluster(
            PublishShoppingReorderClusterRequest.Builder()
                .setReorderCluster(
                    ShoppingReorderCluster.Builder()
                        ...
                        .build())
                .build())

জাভা

client.publishShoppingReorderCluster(
            new PublishShoppingReorderClusterRequest.Builder()
                .setReorderCluster(
                    new ShoppingReorderCluster.Builder()
                        ...
                        .build())
                .build());

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

  • ডেভেলপার পার্টনারের থেকে পাওয়া আগে থেকে থাকা ShoppingReorderCluster ডেটা সরিয়ে দেওয়া হয়েছে।
  • অনুরোধ থেকে পাওয়া ডেটা পার্স করা হয় এবং আপডেট করা রিঅর্ডার ক্লাস্টারে স্টোর করা হয়।

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

publishShoppingOrderTrackingCluster

এই API-এর মাধ্যমে ShoppingOrderTrackingCluster অবজেক্ট প্রকাশ করা হয়।

Kotlin

client.publishShoppingOrderTrackingCluster(
            PublishShoppingOrderTrackingClusterRequest.Builder()
                .setShoppingOrderTrackingCluster(
                    ShoppingOrderTrackingCluster.Builder()
                        ...
                        .build())
                .build())

জাভা

client.publishShoppingOrderTrackingCluster(
            new PublishShoppingOrderTrackingClusterRequest.Builder()
                .setShoppingOrderTrackingCluster(
                    new ShoppingOrderTrackingCluster.Builder()
                        ...
                        .build())
                .build());

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

  • ডেভেলপার পার্টনারের থেকে পাওয়া আগে থেকে থাকা ShoppingOrderTrackingCluster ডেটা সরিয়ে দেওয়া হয়েছে।
  • অনুরোধ থেকে পাওয়া ডেটা পার্স করা হয় এবং আপডেট করা শপিং অর্ডার ট্র্যাকিং ক্লাস্টারে স্টোর করা হয়।

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

publishUserAccountManagementRequest

এই API ব্যবহার করে সাইন-ইন কার্ড প্রকাশ করা হয়। সাইন-ইন অ্যাকশন ব্যবহারকারীকে অ্যাপের সাইন-ইন পৃষ্ঠায় নিয়ে যায় যাতে অ্যাপটি কন্টেন্ট প্রকাশ করতে পারে (অথবা আরও পছন্দমতো কন্টেন্ট প্রদান করতে পারে)

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

অ্যাট্রিবিউট প্রয়োজনীয়তা বর্ণনা
অ্যাকশন Uri প্রয়োজনীয় অ্যাকশনের ডিপলিঙ্ক (যেমন, অ্যাপের সাইন-ইন পৃষ্ঠায় নেভিগেট করে)
ছবি ঐচ্ছিক - এটি না দিলে, শীর্ষক দিতেই হবে

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

১২৬৪x৭১২ রেজোলিউশন সহ ১৬x৯ অ্যাস্পেক্ট রেশিওর ছবি

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

Kotlin

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 == PUBLISHED), সব পরিস্থিতিতে স্ট্যাটাস প্রদান করা গুরুত্বপূর্ণ, যাতে ড্যাশবোর্ডগুলি আপনার ইন্টিগ্রেশনের স্বাস্থ্য এবং অন্যান্য মেট্রিক্স জানাতে এই স্পষ্ট স্ট্যাটাস ব্যবহার করতে পারে।
  • কোনও কন্টেন্ট প্রকাশ করা না হলেও ইন্টিগ্রেশন স্ট্যাটাস যদি ঠিক থাকে (STATUS == NOT_PUBLISHED), Google অ্যাপের হেলথ ড্যাশবোর্ডে অ্যালার্ট ট্রিগার করা এড়াতে পারে। এটি নিশ্চিত করে যে প্রদানকারীর দৃষ্টিকোণ থেকে একটি প্রত্যাশিত পরিস্থিতির কারণে কন্টেন্ট প্রকাশ করা হয়নি।
  • এটি ডেভেলপারদের ডেটা কখন প্রকাশিত হয় বনাম কখন হয় না সে সম্পর্কে ইনসাইট প্রদান করতে সাহায্য করে।
  • 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

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

Kotlin

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());

deleteRecommendationsClusters

এই API-এর মাধ্যমে সাজেশন ক্লাস্টারের কন্টেন্ট মুছে ফেলা হয়।

Kotlin

client.deleteRecommendationsClusters()

জাভা

client.deleteRecommendationsClusters();

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

deleteFeaturedCluster

ফিচার করা ক্লাস্টারের কন্টেন্ট মুছে দিতে এই API ব্যবহার করা হয়।

Kotlin

client.deleteFeaturedCluster()

জাভা

client.deleteFeaturedCluster();

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

deleteShoppingCartCluster

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

Kotlin

client.deleteShoppingCartCluster()

জাভা

client.deleteShoppingCartCluster();

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

deleteShoppingListCluster

এই API, শপিং লিস্ট ক্লাস্টারের কন্টেন্ট মুছে ফেলার জন্য ব্যবহার করা হয়।

Kotlin

client.deleteShoppingListCluster()

জাভা

client.deleteShoppingListCluster();

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

deleteReorderCluster

এই API, Shopping Reorder Cluster-এর কন্টেন্ট মুছে দিতে ব্যবহার করা হয়।

Kotlin

client.deleteReorderCluster()

জাভা

client.deleteReorderCluster();

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

deleteShoppingOrderTrackingCluster

এই API, শপিং অর্ডার ট্র্যাকিং ক্লাস্টারের কন্টেন্ট মুছে ফেলার জন্য ব্যবহার করা হয়।

Kotlin

client.deleteShoppingOrderTrackingCluster()

জাভা

client.deleteShoppingOrderTrackingCluster();

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

deleteUserManagementCluster

UserAccountManagement ক্লাস্টারের কন্টেন্ট মুছে ফেলার জন্য এই API ব্যবহার করা হয়।

Kotlin

client.deleteUserManagementCluster()

জাভা

client.deleteUserManagementCluster();

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

deleteClusters

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

Kotlin

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());

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

সমস্যা ম্যানেজ করা

প্রকাশিত API থেকে টাস্কের ফলাফল শোনার জন্য অত্যন্ত সাজেস্ট করা হয় যাতে একটি সফল টাস্ক রিকভার ও আবার জমা দেওয়ার জন্য ফলো-আপ অ্যাকশন নেওয়া যেতে পারে।

Kotlin

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 পরিষেবা কল খুব ঘন ঘন করা হয়।

ধাপ ৩: ব্রডকাস্ট ইনটেন্ট ম্যানেজ করা

জবের মাধ্যমে কন্টেন্ট প্রকাশ করার API কল করার পাশাপাশি, কন্টেন্ট প্রকাশের অনুরোধ পাওয়ার জন্য BroadcastReceiver সেট-আপ করতে হবে।

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

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

  • Context.registerReceiver() ব্যবহার করে BroadcastReceiver ক্লাসের ইনস্ট্যান্স ডায়নামিক্যালি রেজিস্টার করুন। এটি মেমরিতে এখনও লাইভ আছে এমন অ্যাপ্লিকেশন থেকে কমিউনিকেশন চালু করে।

Kotlin

class AppEngageBroadcastReceiver : BroadcastReceiver(){
  // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION
  // broadcast is received
  // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is
  // received
  // Trigger shopping cart cluster publish when PUBLISH_SHOPPING_CART broadcast
  // is received
  // Trigger shopping list cluster publish when PUBLISH_SHOPPING_LIST broadcast
  // is received
  // Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER broadcast is
  // received
  // Trigger shopping order tracking cluster publish when
  // PUBLISH_SHOPPING_ORDER_TRACKING_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 Shopping Cart Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_SHOPPING_CART),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)

// Register Shopping List Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_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)

// Register Shopping Order Tracking Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_SHOPPING_ORDER_TRACKING_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 shopping cart cluster publish when PUBLISH_SHOPPING_CART broadcast is
// received

// Trigger shopping list cluster publish when PUBLISH_SHOPPING_LIST broadcast is
// received

// Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER broadcast is
// received

// Trigger reorder cluster publish when PUBLISH_SHOPPING_ORDER_TRACKING_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 Shopping Cart Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_SHOPPING_CART),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

// Register Shopping List Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_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);

// Register Shopping Order Tracking Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_SHOPPING_ORDER_TRACKING_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.shopping.PUBLISH_SHOPPING_CART" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.shopping.PUBLISH_SHOPPING_LIST" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.shopping.PUBLISH_REORDER_CLUSTER" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.shopping.PUBLISH_SHOPPING_ORDER_TRACKING_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.shopping.PUBLISH_SHOPPING_CART এই ইনটেন্ট পাওয়া গেলে publishShoppingCarts কল শুরু করার সাজেশন দেওয়া হয়।
  • com.google.android.engage.action.shopping.PUBLISH_SHOPPING_LIST এই ইনটেন্ট পাওয়া গেলে publishShoppingLists কল শুরু করার সাজেশন দেওয়া হয়।
  • com.google.android.engage.action.shopping.PUBLISH_REORDER_CLUSTER এই ইনটেন্ট পাওয়া গেলে publishReorderCluster কল শুরু করার সাজেশন দেওয়া হয়।
  • com.google.android.engage.action.shopping.PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER এই ইনটেন্ট পাওয়া গেলে, publishShoppingOrderTrackingCluster কল শুরু করার সাজেশন দেওয়া হয়।

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

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

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

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

যোগাযোগ করুন

ইন্টিগ্রেশন প্রসেস চলাকালীন কোনও প্রশ্ন থাকলে engage-developers@google.com-এর সাথে যোগাযোগ করুন। আমাদের টিম যত তাড়াতাড়ি সম্ভব উত্তর দেয়।

পরবর্তী ধাপ

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

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