Assistant-এর জন্য প্রাসঙ্গিক কন্টেন্ট অপ্টিমাইজ করা

Android 6.0 Marshmallow ব্যবহারকারীদের জন্য অ্যাসিস্ট্যান্ট অ্যাপের মাধ্যমে অ্যাপের সাথে যুক্ত হওয়ার একটি নতুন উপায় নিয়ে এসেছে, যেমন Google Assistant। সহকারী হল একটি টপ-লেভেল উইন্ডো যা ব্যবহারকারীরা বর্তমান অ্যাক্টিভিটির জন্য প্রাসঙ্গিক অ্যাকশন পেতে দেখতে পারেন। এইসব অ্যাকশনের মধ্যে ডিভাইসে থাকা অন্যান্য অ্যাপের ডিপ লিঙ্ক অন্তর্ভুক্ত থাকতে পারে।

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

Google Assistant-এর মতো কোনও অ্যাসিস্ট্যান্ট অ্যাপ, Now on Tap নামের একটি ফিচারের মাধ্যমে অ্যাসিস্ট্যান্ট ওভারলে উইন্ডো প্রয়োগ করে, যা Android প্ল্যাটফর্ম-লেভেল কার্যকারিতার সাথে কাজ করে। সিস্টেম ব্যবহারকারীকে একটি অ্যাসিস্ট্যান্ট অ্যাপ বেছে নিতে দেয়, যা Android-এর Assist API ব্যবহার করে আপনার অ্যাপ থেকে প্রাসঙ্গিক তথ্য পায়।

এই গাইড থেকে জানা যায় যে কীভাবে Android অ্যাপ, Android-এর Assist API ব্যবহার করে অ্যাসিস্ট্যান্টের ব্যবহারকারীর অভিজ্ঞতা উন্নত করে। Assistant যাতে লঞ্চ ও কন্ট্রোল করতে পারে সেই জন্য কীভাবে মিডিয়া অ্যাপ তৈরি করতে হয় তা জানতে, Google Assistant ও মিডিয়া অ্যাপ দেখুন।

Assistant ব্যবহার করা

ছবি ১-এ অ্যাসিস্ট্যান্টের সাথে ব্যবহারকারীর সাধারণ ইন্টার‍্যাকশন দেখানো হয়েছে। ব্যবহারকারী হোম বোতাম কিছুক্ষণ প্রেস করে রাখলে, Assist API কলব্যাক সোর্স অ্যাপে (ধাপ ১) ইনভোক করা হয়। Assistant ওভারলে উইন্ডো রেন্ডার করে (ধাপ ২ ও ৩), এবং তারপরে ব্যবহারকারী যে অ্যাকশন পারফর্ম করতে চান সেটি বেছে নেন। Assistant বেছে নেওয়া অ্যাকশনটি এক্সিকিউট করে, যেমন, (ডেস্টিনেশন) রেস্তোরাঁ অ্যাপে ডিপ লিঙ্ক সহ ইনটেন্ট ফায়ার করা (ধাপ ৪)।

ছবি ১. Google অ্যাপের Now on Tap ফিচারের সাথে Assistant-এর ইন্টার‍্যাকশনের উদাহরণ

ব্যবহারকারী সেটিংস > অ্যাপ > ডিফল্ট অ্যাপ > অ্যাসিস্ট ও ভয়েস ইনপুট বিকল্প বেছে নিয়ে অ্যাসিস্ট্যান্ট কনফিগার করতে পারবেন। ব্যবহারকারীরা সিস্টেম বিকল্প পরিবর্তন করতে পারেন, যেমন, টেক্সট হিসেবে স্ক্রিনের কন্টেন্ট অ্যাক্সেস করা এবং স্ক্রিনশট অ্যাক্সেস করা, যেমনটি ২ নম্বর ছবিতে দেখানো হয়েছে।

ছবি ২. সহায়তা ও ভয়েস ইনপুট সেটিংস

সোর্স অ্যাপ

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

সহায়তার জন্য Assistant-এর সাথে অতিরিক্ত তথ্য শেয়ার করুন

টেক্সট ও স্ক্রিনশট ছাড়াও, আপনার অ্যাপ অ্যাসিস্ট্যান্টের সাথে অন্যান্য তথ্য শেয়ার করতে পারে। যেমন, আপনার মিউজিক অ্যাপ বর্তমান অ্যালবামের তথ্য পাস করার বিকল্প বেছে নিতে পারে যাতে অ্যাসিস্ট্যান্ট বর্তমান অ্যাক্টিভিটি অনুযায়ী আরও স্মার্ট অ্যাকশন সাজেস্ট করতে পারে। মনে রাখবেন, Assist API মিডিয়া কন্ট্রোল প্রদান করে না। মিডিয়া কন্ট্রোল যোগ করতে, Google Assistant ও মিডিয়া অ্যাপ দেখুন।

অ্যাসিস্ট্যান্টকে অতিরিক্ত তথ্য প্রদান করতে, আপনার অ্যাপ অ্যাপ লিসনার রেজিস্টার করার মাধ্যমে গ্লোবাল অ্যাপ্লিকেশন কনটেক্সট প্রদান করে এবং ফিগার ৩-এ দেখানো অ্যাক্টিভিটি কলব্যাকের মাধ্যমে অ্যাক্টিভিটি-নির্দিষ্ট তথ্য সাপ্লাই করে:

ছবি ৩. Assist API লাইফসাইকেল সিকোয়েন্স ডায়াগ্রাম

গ্লোবাল অ্যাপ্লিকেশন কনটেক্সট প্রদান করতে, অ্যাপ Application.OnProvideAssistDataListener-এর একটি প্রয়োগ তৈরি করে এবং registerOnProvideAssistDataListener() ব্যবহার করে সেটি রেজিস্টার করে। অ্যাক্টিভিটি-নির্দিষ্ট প্রাসঙ্গিক তথ্য প্রদান করতে, অ্যাক্টিভিটি onProvideAssistData() ও onProvideAssistContent()-কে ওভাররাইড করে। ঐচ্ছিক গ্লোবাল কলব্যাক ইনভোক করার পরে দুটি অ্যাক্টিভিটি পদ্ধতি কল করা হয়। কলব্যাকগুলি মূল থ্রেডে এক্সিকিউট হয় বলে, সেগুলি দ্রুত সম্পূর্ণ হতে হবে। অ্যাক্টিভিটি চলমান থাকলেই শুধু কলব্যাক ইনভোক করা হয়।

প্রসঙ্গ প্রদান করা

ব্যবহারকারী অ্যাসিস্ট্যান্ট অ্যাক্টিভেট করলে, onProvideAssistData()-কে সম্পূর্ণ ACTION_ASSIST ইনটেন্ট তৈরি করার জন্য কল করা হয়, যার মধ্যে AssistStructure-এর ইনস্ট্যান্স হিসেবে দেখানো বর্তমান অ্যাপ্লিকেশনের সমস্ত প্রসঙ্গ থাকে। সহায়তা ইনটেন্টের EXTRA_ASSIST_CONTEXT অংশে দেখানোর জন্য বান্ডেলে আপনার পছন্দমতো যেকোনও কিছু প্লেস করতে আপনি এই পদ্ধতি ওভাররাইড করতে পারবেন।

কন্টেন্টের বিবরণ দেওয়া

বর্তমান অ্যাক্টিভিটি সম্পর্কিত কন্টেন্ট-ভিত্তিক রেফারেন্স প্রদান করে, আপনার অ্যাপ onProvideAssistContent() ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারে। JSON-LD অবজেক্টের মাধ্যমে, আপনি Schema.org-এর দ্বারা সংজ্ঞায়িত সাধারণ শব্দভান্ডার ব্যবহার করে অ্যাপ কন্টেন্ট বর্ণনা করতে পারবেন। নিচের উদাহরণে, একটি মিউজিক অ্যাপ ব্যবহারকারী বর্তমানে যে মিউজিক অ্যালবাম দেখছেন সেটি বর্ণনা করার জন্য স্ট্রাকচার্ড ডেটা প্রদান করে:

Kotlin

override fun onProvideAssistContent(assistContent: AssistContent) {
    super.onProvideAssistContent(assistContent)

    val structuredJson: String = JSONObject()
            .put("@type", "MusicRecording")
            .put("@id", "https://example.com/music/recording")
            .put("name", "Album Title")
            .toString()

    assistContent.structuredData = structuredJson
}

জাভা

@Override
public void onProvideAssistContent(AssistContent assistContent) {
  super.onProvideAssistContent(assistContent);

  String structuredJson = new JSONObject()
       .put("@type", "MusicRecording")
       .put("@id", "https://example.com/music/recording")
       .put("name", "Album Title")
       .toString();

  assistContent.setStructuredData(structuredJson);
}

এছাড়াও, আপনি কাস্টম বাস্তবায়নের মাধ্যমে ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারেন onProvideAssistContent(), যা নিম্নলিখিত সুবিধা প্রদান করতে পারে:

মনে রাখবেন: যেসব অ্যাপ কাস্টম টেক্সট বেছে নেওয়ার প্রয়োগ ব্যবহার করে, সেগুলির সম্ভবত onProvideAssistContent() প্রয়োগ করতে এবং setClipData() কল করতে হবে।

ডিফল্ট প্রয়োগ

onProvideAssistData() বা onProvideAssistContent() কলব্যাক প্রয়োগ করা না থাকলেও, সিস্টেম এগিয়ে যায় এবং অ্যাসিস্ট্যান্টকে অটোমেটিক সংগ্রহ করা তথ্য পাস করে দেয়, যদি না বর্তমান উইন্ডোকে সুরক্ষিত হিসেবে ফ্ল্যাগ করা হয়। ছবি ৩-এ দেখানো হয়েছে, সিস্টেমটি টেক্সট সংগ্রহ করতে এবং ভিউ হায়ারার্কি সংক্রান্ত তথ্য পেতে onProvideStructure() ও onProvideVirtualStructure()-এর ডিফল্ট প্রয়োগ ব্যবহার করে। আপনার ভিউ কাস্টম টেক্সট ড্রয়িং প্রয়োগ করলে, onProvideStructure() ওভাররাইড করে setText(CharSequence) কল করার মাধ্যমে ব্যবহারকারীকে দেখানো টেক্সট Assistant-কে দিন।

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

  • android:contentDescription অ্যাট্রিবিউট প্রদান করুন।
  • কাস্টম ভিউয়ের জন্য AccessibilityNodeInfo পূরণ করুন।
  • কাস্টম ViewGroup অবজেক্ট যেন সঠিকভাবে তার চাইল্ডদের এক্সপোজ করে তা নিশ্চিত করুন।

অ্যাসিস্ট্যান্টের মতামত বাদ দিয়ে

সংবেদনশীল তথ্য হ্যান্ডেল করতে, আপনার অ্যাপ অ্যাসিস্ট্যান্ট থেকে বর্তমান ভিউ বাদ দিতে পারে WindowManager-এর FLAG_SECURE লেআউট প্যারামিটার সেট করার মাধ্যমে। অ্যাক্টিভিটি দ্বারা তৈরি করা প্রতিটি উইন্ডোর জন্য, ডায়ালগ সহ, আপনাকে অবশ্যই FLAG_SECURE স্পষ্টভাবে সেট করতে হবে। এছাড়াও, আপনার অ্যাপ setSecure() ব্যবহার করে অ্যাসিস্ট্যান্ট থেকে কোনও সারফেস বাদ দিতে পারে। Assistant থেকে সব ভিউ বাদ দেওয়ার জন্য কোনও গ্লোবাল (অ্যাপ-লেভেল) মেকানিজম নেই। মনে রাখবেন যে FLAG_SECURE Assist API কলব্যাক ফায়ার করা বন্ধ করে দেয় না। FLAG_SECURE ব্যবহার করে এমন অ্যাক্টিভিটি এখনও এই নির্দেশিকায় আগে বর্ণনা করা কলব্যাক ব্যবহার করে অ্যাসিস্ট্যান্ট অ্যাপকে স্পষ্টভাবে তথ্য প্রদান করতে পারে।

মনে রাখবেন: এন্টারপ্রাইজ অ্যাকাউন্টের (Android for Work) ক্ষেত্রে, অ্যাডমিনিস্ট্রেটর DevicePolicyManager API-এর setScreenCaptureDisabled() পদ্ধতি ব্যবহার করে কাজের প্রোফাইলের জন্য Assistant ডেটা সংগ্রহ করা বন্ধ করে দিতে পারেন।

ভয়েস ইন্টার‍্যাকশন

এছাড়াও, কীফ্রেজ শনাক্তকরণ হলে Assist API কলব্যাক ইনভোক করা হয়। আরও তথ্যের জন্য, ভয়েস অ্যাকশন ডকুমেন্টেশন দেখুন।

Z-অর্ডার সংক্রান্ত বিবেচনা

অ্যাসিস্ট্যান্ট, বর্তমান অ্যাক্টিভিটির উপরে দেখানো একটি হালকা ওজনের ওভারলে উইন্ডো ব্যবহার করে। যেহেতু ব্যবহারকারী যেকোনও সময় অ্যাসিস্ট্যান্ট অ্যাক্টিভেট করতে পারেন, স্থায়ী সিস্টেম অ্যালার্ট উইন্ডো তৈরি করবেন না যা ওভারলে উইন্ডোতে বাধা দেয়, যেমন ছবি ৪-এ দেখানো হয়েছে।

ছবি ৪. অ্যাসিস্ট লেয়ার Z-অর্ডার

আপনার অ্যাপ সিস্টেম অ্যালার্ট উইন্ডো ব্যবহার করলে, সেগুলি অবিলম্বে সরিয়ে দিন কারণ সেগুলি স্ক্রিনে রাখলে ব্যবহারকারীর অভিজ্ঞতা খারাপ হয়।

ডেস্টিনেশন অ্যাপ

গন্তব্য অ্যাপ খুঁজে পাওয়ার জন্য Assistant অ্যাপ সাধারণত ডিপ লিঙ্কিংয়ের সুবিধা নেয়। আপনার অ্যাপকে সম্ভাব্য ডেস্টিনেশন অ্যাপ হিসেবে তৈরি করতে, ডিপ লিঙ্কিং সংক্রান্ত সহায়তা যোগ করার কথা বিবেচনা করুন। বর্তমান ব্যবহারকারীর প্রসঙ্গ এবং ওভারলে উইন্ডোতে (ছবি ১-এর ৩ নম্বর ধাপে দেখানো হয়েছে) দেখানো ডিপ লিঙ্ক বা অন্যান্য সম্ভাব্য অ্যাকশনের মধ্যে ম্যাচিং Google Assistant-এর প্রয়োগের ক্ষেত্রে নির্দিষ্ট। যেমন, Google Assistant অ্যাপ ডেস্টিনেশন অ্যাপে ট্রাফিক ড্রাইভ করার জন্য ডিপ লিঙ্কিং ও অ্যাপ লিঙ্ক ব্যবহার করে।

আপনার নিজস্ব Assistant প্রয়োগ করা

আপনি হয়ত নিজের অ্যাসিস্ট্যান্ট প্রয়োগ করতে চাইবেন। ছবি ২-এ দেখানো হয়েছে, ব্যবহারকারী অ্যাক্টিভ Assistant অ্যাপ বেছে নিতে পারবেন। এই VoiceInteraction উদাহরণে দেখানো হয়েছে, Assistant অ্যাপকে VoiceInteractionSessionService ও VoiceInteractionSession-এর প্রয়োগ করতে হবে। এছাড়াও, BIND_VOICE_INTERACTION অনুমতি প্রয়োজন। অ্যাসিস্ট্যান্ট তখন টেক্সটটি গ্রহণ করতে এবং AssistStructure-এর ইনস্ট্যান্স হিসেবে দেখানো হায়ারার্কি onHandleAssist()-এ দেখতে পারবে। এটি onHandleScreenshot()-এর মাধ্যমে স্ক্রিনশট পায়।