১. সংক্ষিপ্ত বিবরণ
অ্যাপ অ্যাকশন-এর মাধ্যমে, আপনি গুগল অ্যাসিস্ট্যান্ট ব্যবহার করে সরাসরি অ্যাপের ফিচারগুলোতে প্রবেশ করতে এবং আপনার কণ্ঠস্বর ব্যবহার করে বিভিন্ন কাজ সম্পন্ন করতে পারেন। একজন অ্যান্ড্রয়েড ডেভেলপার হিসেবে, আপনি অ্যাপ অ্যাকশন যোগ করার জন্য ক্যাপাবিলিটি এলিমেন্ট প্রয়োগ করেন। ক্যাপাবিলিটি অ্যাসিস্ট্যান্টকে জানিয়ে দেয় যে অ্যাপের কোন ফিচারগুলো ব্যবহারকারীর ভয়েস রিকোয়েস্ট সমর্থন করে এবং আপনি কীভাবে সেই রিকোয়েস্টগুলো পূরণ করতে চান।
এই কোডল্যাবটিতে অ্যাপ অ্যাকশন ব্যবহার করে ডেভেলপ করার জন্য প্রাথমিক স্তরের ধারণাগুলো আলোচনা করা হয়েছে। এই কোডল্যাবটি অনুসরণ করার জন্য আপনার অ্যান্ড্রয়েড অ্যাপ এবং অ্যান্ড্রয়েড ইন্টেন্ট ডেভেলপ করার পূর্ব অভিজ্ঞতা থাকা উচিত। আপনি যদি অ্যান্ড্রয়েডে নতুন হন, তবে এর পরিবর্তে অ্যান্ড্রয়েড ডেভেলপার ফান্ডামেন্টালস- এর কোডল্যাবগুলোর মধ্যে একটি দিয়ে শুরু করতে পারেন।
আপনি যা তৈরি করবেন
এই কোডল্যাবে, আপনি একটি নমুনা ফিটনেস অ্যান্ড্রয়েড অ্যাপে দুটি অ্যাপ অ্যাকশন বিল্ট-ইন ইন্টেন্ট (BII) যোগ করবেন, যা ব্যবহারকারীদের তাদের কণ্ঠস্বর ব্যবহার করে একটি ব্যায়ামের টাইমার শুরু এবং বন্ধ করতে সক্ষম করবে।
আপনি যা শিখবেন
আপনি শিখবেন কীভাবে হেলথ অ্যান্ড ফিটনেস ক্যাটাগরির BII ব্যবহার করে অ্যাসিস্ট্যান্টকে একটি অ্যান্ড্রয়েড অ্যাপে সম্প্রসারিত করা যায়। এছাড়াও, আপনার BII পরীক্ষা করার জন্য অ্যান্ড্রয়েড স্টুডিওর গুগল অ্যাসিস্ট্যান্ট প্লাগইন ব্যবহার করতেও আপনি শিখবেন।
পূর্বশর্ত
এগিয়ে যাওয়ার আগে, নিশ্চিত করুন যে আপনার পরিবেশে নিম্নলিখিত সরঞ্জামগুলি রয়েছে:
- গিট ইনস্টল করা থাকলে শেল কমান্ড চালানোর জন্য একটি টার্মিনাল।
- অ্যান্ড্রয়েড স্টুডিও- এর সর্বশেষ সংস্করণ।
- [গুগল প্লে কনসোল]-এ প্রবেশাধিকার সহ একটি গুগল অ্যাকাউন্ট।
- প্লে স্টোরে প্রবেশের ইন্টারনেট সংযোগসহ একটি ভৌত বা ভার্চুয়াল অ্যান্ড্রয়েড ডিভাইস।
চালিয়ে যাওয়ার আগে নিশ্চিত হয়ে নিন যে আপনার টেস্ট ডিভাইসের Android Studio এবং Google অ্যাপে একই Google অ্যাকাউন্ট দিয়ে সাইন ইন করা আছে।
২. এটি কীভাবে কাজ করে তা বুঝুন
অ্যাপ অ্যাকশন ব্যবহারকারীদের গুগল অ্যাসিস্ট্যান্ট থেকে আপনার অ্যান্ড্রয়েড অ্যাপের সাথে সংযুক্ত করে। এগুলো কীভাবে কাজ করে?
যখন কোনো ব্যবহারকারী আপনার অ্যাপ ব্যবহার করে অ্যাসিস্ট্যান্টকে কোনো কাজ করতে বলেন, তখন অ্যাসিস্ট্যান্ট তাদের জিজ্ঞাসাটিকে আপনার অ্যাপের shortcuts.xml এক্সএমএল রিসোর্সে সংজ্ঞায়িত একটি অ্যাপ অ্যাকশনস capability সাথে মিলিয়ে নেয়।

চিত্র ১. একটি ফ্লো ডায়াগ্রাম, যা দেখাচ্ছে অ্যাসিস্ট্যান্ট কীভাবে একটি অ্যাপ অ্যাকশন ভয়েস কোয়েরি প্রসেস করে।
প্রতিটি সক্ষমতা উপাদান সংজ্ঞায়িত করে:
- একটি ইন্টেন্ট : অ্যাপ অ্যাকশনস ভয়েস ইন্টেন্ট যা ক্যাপাবিলিটিটি ট্রিগার করবে।
- এক বা একাধিক ফুলফিলমেন্ট : অ্যান্ড্রয়েড ইন্টেন্ট বা ডিপ লিঙ্ক যা অ্যাসিস্ট্যান্ট অ্যাপটি চালু করতে এবং ব্যবহারকারীর ভয়েস অনুরোধ পূরণ করতে তৈরি করে। ফুলফিলমেন্ট ডেফিনিশন নির্দিষ্ট করে দেয় যে ব্যবহারকারীর কোয়েরি থেকে কোন প্যারামিটারগুলো প্রত্যাশিত এবং সেই প্যারামিটারগুলো লঞ্চ নির্দেশাবলীতে কীভাবে এনকোড করা উচিত।
অভিপ্রায়
ন্যাচারাল ল্যাঙ্গুয়েজ আন্ডারস্ট্যান্ডিং (NLU)-এ, ইন্টেন্ট হলো ব্যবহারকারীর বলা কিছু বাক্যাংশের সমষ্টি যা একই অর্থ বহন করে। গুগল অ্যাপ অ্যাকশনস-এর মাধ্যমে বিভিন্ন ধরনের অনুরোধের জন্য কয়েক ডজন "বিল্ট-ইন" ইন্টেন্ট (BII) উপলব্ধ করেছে। উদাহরণস্বরূপ, অ্যাসিস্ট্যান্টকে "Order a pizza" বা "show me the dessert menu" এই বাক্যাংশগুলোকে ORDER_MENU_ITEM BII-এর সাথে যুক্ত করতে প্রশিক্ষণ দেওয়া হয়েছে। অ্যাপ অ্যাকশনস-এর সাহায্যে, আপনি এই BII-গুলো ব্যবহার করে সাধারণ ভয়েস অনুরোধগুলোকে দ্রুত অ্যাপের কার্যকারিতায় প্রসারিত করতে পারেন।
পরিপূর্ণতা
যখন কোনো ব্যবহারকারীর অনুরোধ shortcuts.xml এ থাকা কোনো অ্যাপ অ্যাকশনকে ট্রিগার করে, তখন আপনার অ্যান্ড্রয়েড অ্যাক্টিভিটিকে অবশ্যই আগত অ্যান্ড্রয়েড ইন্টেন্ট বা ডিপ লিঙ্কটি শনাক্ত ও পরিচালনা করতে হবে এবং ব্যবহারকারীকে তার কাঙ্ক্ষিত কার্যকারিতা প্রদান করতে হবে। এর ফলে একটি ভয়েস-চালিত ব্যবহারকারীর অভিজ্ঞতা তৈরি হয়, যেখানে ব্যবহারকারীর জিজ্ঞাসার জবাবে অ্যাসিস্ট্যান্ট আপনার অ্যাপটিকে চালু করে।
৩. আপনার ডেভেলপমেন্ট পরিবেশ প্রস্তুত করুন
এই কোডল্যাবে অ্যান্ড্রয়েডের জন্য ফিটনেস স্যাম্পল অ্যাপটি ব্যবহার করা হয়েছে। এই অ্যাপটি ব্যবহারকারীদের ব্যায়ামের টাইমার চালু ও বন্ধ করতে এবং তাদের ব্যায়ামের রুটিন সম্পর্কিত পরিসংখ্যান দেখতে দেয়।
Download your base files
এই কোডল্যাবের বেস ফাইলগুলো পেতে, গিটহাব রিপোজিটরিটি ক্লোন করার জন্য নিম্নলিখিত কমান্ডটি চালান:
git clone --branch codelab-start https://github.com/actions-on-google/appactions-fitness-kotlin.git
রিপোজিটরিটি ক্লোন করার পর, অ্যান্ড্রয়েড স্টুডিওতে এটি খুলুন:
- "Welcome to Android Studio" ডায়ালগ বক্সে, "Import project" -এ ক্লিক করুন।
- যে ফোল্ডারে আপনি রিপোটি ক্লোন করেছেন, সেটি খুঁজুন এবং নির্বাচন করুন।
অ্যান্ড্রয়েড অ্যাপ্লিকেশন আইডি আপডেট করুন
অ্যাপের অ্যাপ্লিকেশন আইডি আপডেট করলে আপনার টেস্ট ডিভাইসে অ্যাপটিকে একটি স্বতন্ত্র পরিচয় দেওয়া যায় এবং প্লে কনসোলে অ্যাপটি আপলোড করার সময় "ডুপ্লিকেট প্যাকেজ নেম" ত্রুটি এড়ানো যায়। অ্যাপ্লিকেশন আইডি আপডেট করতে, app/build.gradle খুলুন:
android {
...
defaultConfig {
applicationId "com.MYUNIQUENAME.android.fitactions"
...
}
}
applicationId ফিল্ডে থাকা 'MYUNIQUENAME'-এর পরিবর্তে আপনার নিজস্ব কোনো অনন্য নাম ব্যবহার করুন।
আপনার ডিভাইসে অ্যাপটি ব্যবহার করে দেখুন
অ্যাপের কোডে আরও পরিবর্তন আনার আগে, স্যাম্পল অ্যাপটি কী করতে পারে সে সম্পর্কে ধারণা থাকা সহায়ক। আপনার ডেভেলপমেন্ট এনভায়রনমেন্টে অ্যাপটি পরীক্ষা করার জন্য এই ধাপগুলো অনুসরণ করতে হয়:
- আপনার ভার্চুয়াল বা ফিজিক্যাল অ্যান্ড্রয়েড টেস্ট ডিভাইসটি খুলছেন।
- অ্যাসিস্ট্যান্ট অ্যাপটি কাজ করছে কিনা তা যাচাই করা হচ্ছে।
- অ্যান্ড্রয়েড স্টুডিও ব্যবহার করে আপনার ডিভাইসে নমুনা অ্যাপটি স্থাপন ও চালান।
আপনার অ্যাপটি পরীক্ষা করতে এই ধাপগুলো অনুসরণ করুন:
- অ্যান্ড্রয়েড স্টুডিওতে, রান > রান অ্যাপ নির্বাচন করুন অথবা রান-এ ক্লিক করুন।
টুলবারে। - ভার্চুয়াল ডিভাইস ব্যবহার করলে, 'Select Deployment Target' ডায়ালগে একটি ভার্চুয়াল ডিভাইস নির্বাচন করুন এবং 'OK' ক্লিক করুন। প্রস্তাবিত ওএস সংস্করণ হলো অ্যান্ড্রয়েড ৮ (এপিআই লেভেল ২৬) বা তার উচ্চতর সংস্করণ, যদিও অ্যাকশনগুলো অ্যান্ড্রয়েড ৫ (এপিআই লেভেল ২১)-এর মতো পুরোনো ডিভাইসেও চলে।
- অ্যাপটি খোলার পর, অ্যাসিস্ট্যান্ট সেট আপ করতে এবং এটি কাজ করছে কিনা তা যাচাই করতে হোম বাটনটি দীর্ঘক্ষণ চেপে ধরুন। যদি আগে থেকে সাইন ইন করা না থাকে, তবে অ্যাসিস্ট্যান্টে সাইন ইন করুন।
- অ্যাপটি পুনরায় খুলুন।

চিত্র ২. ফিট অ্যাকশনস নমুনা অ্যাপটি ব্যায়ামের পরিসংখ্যান প্রদর্শন করছে।
অ্যাপটি কী কী করতে পারে তা দেখতে সংক্ষেপে এটি ঘুরে দেখুন। রান আইকনে ট্যাপ করলে একটি এক্সারসাইজ টাইমার চালু হয়, এবং এরপর এক্স আইকনে ট্যাপ করলে টাইমারটি বন্ধ হয়ে যায়। অ্যাপ অ্যাকশনস-এর মাধ্যমে আপনি এই কাজগুলোই ভয়েস কন্ট্রোলের জন্য চালু করবেন।
গুগল অ্যাসিস্ট্যান্ট প্লাগইন ইনস্টল করুন
গুগল অ্যাসিস্ট্যান্ট প্লাগইন আপনাকে একটি টেস্ট ডিভাইসে আপনার অ্যাপ অ্যাকশনগুলো পরীক্ষা করার সুযোগ দেয়। অ্যান্ড্রয়েড স্টুডিওতে এটি যোগ করতে এই ধাপগুলো অনুসরণ করুন:
- ফাইল > সেটিংস- এ যান (MacOS-এ Android Studio > Preferences )।
- প্লাগইন বিভাগে, মার্কেটপ্লেসে যান এবং 'Google Assistant' লিখে অনুসন্ধান করুন।
- টুলটি ইনস্টল করুন এবং অ্যান্ড্রয়েড স্টুডিও পুনরায় চালু করুন।
৪. স্টার্ট এক্সারসাইজ BII সক্ষমতা যোগ করুন
actions.intent.START_EXERCISE BII ব্যবহারকারীদেরকে তাদের কণ্ঠস্বর ব্যবহার করে একটি অ্যাপ খুলতে এবং ওয়ার্কআউট শুরু করতে দেয়। এই ধাপে, আপনি এই BII-এর জন্য এমন একটি সক্ষমতা প্রয়োগ করবেন, যা ব্যবহারকারীদেরকে ফিটনেস অ্যাপে অ্যাসিস্ট্যান্টকে একটি দৌড় শুরু করতে বলতে দেবে।
ক্ষমতা সংজ্ঞায়িত করুন
অ্যাসিস্ট্যান্ট, shortcuts.xml এ সংজ্ঞায়িত capability এলিমেন্টগুলো ব্যবহার করে নিম্নলিখিত ধাপগুলোর মাধ্যমে ভয়েস কমান্ড প্রসেস করে:
- অ্যাসিস্ট্যান্ট ব্যবহারকারীর ভয়েস কোয়েরিকে আপনার অ্যাপের ক্যাপাবিলিটিতে সংজ্ঞায়িত একটি BII-এর সাথে মিলিয়ে দেখে।
- অ্যাসিস্ট্যান্ট কোয়েরি থেকে মানগুলো নিয়ে BII প্যারামিটারে সংরক্ষণ করে। প্রতিটি প্যারামিটার একটি জেনারেট করা
Intentসাথে সংযুক্ত একটিBundleযুক্ত করা হয়। - অ্যাসিস্ট্যান্ট অ্যাপটি চালু করার জন্য
Intentব্যবহার করে, যা অ্যাপটিকে বান্ডেল করা প্যারামিটারগুলোতে অ্যাক্সেস দেয়।
START_EXERCISE BII, exercise.name BII প্যারামিটারটিকে সমর্থন করে। অ্যাপে কোন ধরনের ব্যায়াম ট্র্যাক করা হবে, তা ব্যবহারকারীদের নির্দিষ্ট করার সুযোগ দিতে আপনি এই প্যারামিটারটি ব্যবহার করবেন।
স্যাম্পল প্রজেক্ট ডিরেক্টরির app/src/main/res/xml এ অবস্থিত shortcuts.xml ফাইলে এই capability যোগ করে আপনার অ্যাপে START_EXERCISE BII যুক্ত করুন:
<!-- shortcuts.xml -->
<capability android:name="actions.intent.START_EXERCISE">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="PUT_YOUR_APPLICATION_ID_HERE"
android:targetClass="com.devrel.android.fitactions.FitMainActivity">
<parameter
android:name="exercise.name"
android:key="exerciseType"/>
</intent>
</capability>
পূর্ববর্তী ধাপে আপনার নির্ধারণ করা অনন্য applicationId দিয়ে PUT_YOUR_APPLICATION_ID_HERE প্রতিস্থাপন করুন।
পূর্ববর্তী নমুনা XML:
-
START_EXERCISEBII-এর জন্য একটি সক্ষমতা ঘোষণা করে। - অ্যাপটি চালু করার জন্য অ্যাসিস্ট্যান্ট যে অ্যান্ড্রয়েড
intentতৈরি করে, তা নির্দিষ্ট করে:-
targetPackageএবংtargetClassঅ্যাট্রিবিউটগুলো গ্রহণকারী অ্যাক্টিভিটি নির্দিষ্ট করে। -
parameterঅ্যাট্রিবিউটটি অ্যাক্টিভিটি দ্বারা প্রাপ্তBundleএক্সট্রাস-এরexerciseTypeএর সাথেexercise.nameBII প্যারামিটারকে ম্যাপ করে।
-
ইনলাইন ইনভেন্টরির মাধ্যমে BII প্যারামিটারগুলি পরিচালনা করুন
BII প্যারামিটারগুলো অ্যাসিস্ট্যান্ট ব্যবহারকারীর কোয়েরি থেকে সংগৃহীত উপাদানগুলোকে উপস্থাপন করে। উদাহরণস্বরূপ, যখন একজন ব্যবহারকারী বলেন, "হে গুগল, ExampleApp-এ একটি দৌড় শুরু করো," তখন অ্যাসিস্ট্যান্ট "run" শব্দটি exercise.name schema.org BII প্যারামিটারে সংগ্রহ করে। কিছু BII-এর ক্ষেত্রে, আপনি অ্যাসিস্ট্যান্টকে নির্দেশ দিতে পারেন যেন এটি আপনার অ্যাপের প্রত্যাশিত এক সেট আইডেন্টিফায়ারের সাথে BII প্যারামিটারগুলো মিলিয়ে নেয়।
আপনি BII প্যারামিটারের সাথে ইনলাইন ইনভেন্টরি এলিমেন্ট বাইন্ড করার মাধ্যমে এটি করেন। একটি ইনলাইন ইনভেন্টরি হলো সমর্থিত BII প্যারামিটার ভ্যালুগুলোর একটি সেট, যেমন 'run', 'hike', এবং 'jog', এবং তাদের সংশ্লিষ্ট শর্টকাট আইডি, যেমন EXERCISE_RUN । এই ইনভেন্টরি বাইন্ডিং অ্যাসিস্ট্যান্টকে আপনার ফুলফিলমেন্ট অ্যাক্টিভিটিতে র' কোয়েরি ভ্যালুর পরিবর্তে, ম্যাচিং প্যারামিটারগুলোর জন্য শর্টকাট আইডি পাস করতে সক্ষম করে।
exercise.name মতো কিছু BII প্যারামিটার কাজ করার জন্য একটি ইনলাইন ইনভেন্টরির প্রয়োজন হয়। এই প্যারামিটারটি পরিচালনা করতে, shortcuts.xml এ নিম্নলিখিত ইনভেন্টরি shortcut এলিমেন্টগুলো যোগ করুন:
<!-- shortcuts.xml -->
<shortcuts>
<shortcut
android:shortcutId="running"
android:shortcutShortLabel="@string/activity_running">
<capability-binding android:key="actions.intent.START_EXERCISE">
<parameter-binding
android:key="exercise.name"
android:value="@array/runningSynonyms"/>
</capability-binding>
</shortcut>
<shortcut
android:shortcutId="walking"
android:shortcutShortLabel="@string/activity_walking">
<capability-binding android:key="actions.intent.START_EXERCISE">
<parameter-binding
android:key="exercise.name"
android:value="@array/walkingSynonyms"/>
</capability-binding>
</shortcut>
<shortcut
android:shortcutId="cycling"
android:shortcutShortLabel="@string/activity_cycling">
<capability-binding android:key="actions.intent.START_EXERCISE">
<parameter-binding
android:key="exercise.name"
android:value="@array/cyclingSynonyms"/>
</capability-binding>
</shortcut>
<capability> ... </capability>
</shortcuts>
পূর্ববর্তী কোডে, আপনি অ্যাপটির সমর্থিত ব্যায়ামের ধরণগুলির (দৌড়ানো, হাঁটা এবং সাইক্লিং) জন্য একটি ইনলাইন ইনভেন্টরি উপস্থাপনকারী তিনটি শর্টকাট সংজ্ঞায়িত করেছেন। প্রতিটি শর্টকাট নিম্নলিখিত উপায়ে ক্যাপাবিলিটির সাথে আবদ্ধ করা হয়েছে:
- প্রতিটি
capability-bindingএলিমেন্টেরandroid:keyঅ্যাট্রিবিউটটি ক্যাপাবিলিটির জন্য সংজ্ঞায়িত একইSTART_EXCERCISEBII-কে নির্দেশ করে। - প্রতিটি শর্টকাট কী-এর
parameter-bindingউপাদানটিexercise.nameBII প্যারামিটারকে নির্দেশ করে।
ইনলাইন ইনভেন্টরির প্রতিশব্দ যোগ করুন
পূর্ববর্তী ইনভেন্টরি শর্টকাটগুলিতে parameter-binding এলিমেন্টের android:value অ্যাট্রিবিউটগুলি প্রতিটি ইনভেন্টরি এলিমেন্টের জন্য প্রতিশব্দের একটি অ্যারে রিসোর্সকে নির্দেশ করে। প্রতিশব্দগুলি একটি এলিমেন্ট টাইপের বিভিন্ন রূপ, যেমন "run", "jog", এবং "sprint"-কে একই shortcutId নির্দেশ করতে সক্ষম করে। প্রজেক্টের array.xml রিসোর্সে নিম্নলিখিত প্রতিশব্দ এন্ট্রিগুলি যোগ করুন:
<!-- array.xml -->
<array name="runningSynonyms">
<item>Run</item>
<item>Jog</item>
<item>Jogging</item>
<item>Sprint</item>
</array>
<array name="walkingSynonyms">
<item>Walk</item>
<item>Hike</item>
<item>Hiking</item>
</array>
<array name="cyclingSynonyms">
<item>Biking</item>
<item>Riding</item>
<item>Pedaling</item>
</array>
আগত অ্যান্ড্রয়েড ইন্টেন্টগুলি পূরণ করুন
অ্যান্ড্রয়েড ইন্টেন্ট হলো এক ধরনের মেসেজিং অবজেক্ট, যা অ্যান্ড্রয়েড অন্য কোনো অ্যাপ থেকে কোনো কাজের অনুরোধ করার জন্য ব্যবহার করে। অ্যাসিস্ট্যান্ট, ট্রিগার হওয়া ক্যাপাবিলিটির কনফিগারেশন বিবরণ থেকে একটি ইন্টেন্ট তৈরি করার মাধ্যমে ব্যবহারকারীদের ভয়েস কোয়েরি পূরণ করে। START_EXERCISE ক্যাপাবিলিটির জন্য ইন্টেন্ট পূরণ করতে, আগত ইন্টেন্ট এবং BII প্যারামিটারগুলো হ্যান্ডেল করার জন্য FitMainActivity টার্গেট ক্লাসটি আপডেট করুন।
প্রথমে, Intent.handleIntent ফাংশনটিকে নিচের কোড দিয়ে প্রতিস্থাপন করুন:
//FitMainActivity.kt
private fun Intent.handleIntent() {
when (action) {
// When the BII is matched, Intent.Action_VIEW will be used
Intent.ACTION_VIEW -> handleIntent(data)
// Otherwise start the app as you would normally do.
else -> showDefaultView()
}
}
এরপরে, নিম্নলিখিত কোড সহ ক্লাসটিতে একটি নতুন handleIntent ফাংশন যোগ করুন:
//FitMainActivity.kt
/**
* Use extras provided by the intent to handle the different BIIs
*/
private fun handleIntent(data: Uri?) {
// path is normally used to indicate which view should be displayed
// i.e https://fit-actions.firebaseapp.com/start?exerciseType="Running" -> path = "start"
var actionHandled = true
val startExercise = intent?.extras?.getString(START_EXERCISE)
// Add stopExercise variable here
if (startExercise != null){
val type = FitActivity.Type.find(startExercise)
val arguments = Bundle().apply {
putSerializable(FitTrackingFragment.PARAM_TYPE, type)
}
updateView(FitTrackingFragment::class.java, arguments)
} // Add conditional for stopExercise
else{
// path is not supported or invalid, start normal flow.
showDefaultView()
// Unknown or invalid action
actionHandled = false
}
notifyActionSuccess(actionHandled)
}
পূর্ববর্তী Intent.handleIntent ফাংশনে, যখন ACTION_VIEW ট্রিগার হয়, তখন App Action ইন্টেন্টের ডেটা handleIntent ফাংশনে পাঠানো হয়। START_EXERCISE ইন্টেন্টের সাথে থাকা BII প্যারামিটারগুলো intent?.extras?.getString(START_EXERCISE) এর মাধ্যমে অ্যাক্সেস করা হয়। ফাংশনের বাকি অংশ নির্বাচিত startExercise ফিটনেস টাইপটি প্রদর্শন করার জন্য FitTrackingFragment কে আপডেট করে।
আপনার অ্যাপ অ্যাকশন পরীক্ষা করুন
অ্যাপ অ্যাকশন তৈরির সময়, আপনি একটি টেস্ট ডিভাইসে আপনার অ্যাকশনগুলো প্রিভিউ করার জন্য গুগল অ্যাসিস্ট্যান্ট প্লাগইন ব্যবহার করেন। এছাড়াও, একজন ব্যবহারকারী আপনার অ্যাপের কাছে অ্যাসিস্ট্যান্টের কাছে বিভিন্নভাবে অনুরোধ জানালে আপনার অ্যাপটি কীভাবে তা সামলায়, তা পরীক্ষা করার জন্য আপনি কোনো অ্যাকশনের ইনটেন্ট প্যারামিটারের মানগুলো পরিবর্তন করতেও এই প্লাগইনটি ব্যবহার করতে পারেন।
প্লাগইন দিয়ে আপনার অ্যাপ অ্যাকশন পরীক্ষা করতে, এই ধাপগুলো অনুসরণ করুন:
- অ্যান্ড্রয়েড স্টুডিওতে আপনার অ্যাপটি চালাতে Run > Run App নির্বাচন করুন অথবা উপরের টুলবারে থাকা Run আইকনে ক্লিক করুন।
- টুলস > অ্যাপ অ্যাকশনস > গুগল অ্যাসিস্ট্যান্ট > অ্যাপ অ্যাকশনস টেস্ট টুল- এ যান।
- 'Create Preview'-তে ক্লিক করুন। জিজ্ঞাসা করা হলে, অ্যাপ অ্যাকশন নীতিমালা এবং পরিষেবার শর্তাবলী পর্যালোচনা করে গ্রহণ করুন।
-
actions.intent.START_EXERCISEবিল্ট-ইন ইন্টেন্টটি নির্বাচন করুন। - অনুশীলনের বাক্সে, ডিফল্ট চলমান মানটি অপরিবর্তিত রাখুন।
- ‘রান অ্যাপ অ্যাকশন’-এ ক্লিক করুন। যাচাই করুন যে অ্যাসিস্ট্যান্ট অ্যাপের এক্সারসাইজ টাইমারে ডিপ লিঙ্ক করেছে এবং টাইমারটি দৌড়ানোর মতো একটি ওয়ার্কআউট শুরু করেছে।
আপনি START_EXERCISE BII-এর মাধ্যমে আপনার প্রথম অ্যাপ অ্যাকশনগুলো প্রয়োগ করেছেন। অভিনন্দন! এরপর, আমরা ব্যবহারকারীদের আপনার অ্যাপে একটি রানিং ওয়ার্কআউট বন্ধ করার সুবিধা দেব।
৫. স্টপ এক্সারসাইজ BII সক্ষমতা যোগ করুন
actions.intent.STOP_EXERCISE BII ব্যবহারকারীদেরকে "হে গুগল, ExampleApp-এ আমার দৌড় বন্ধ করো"-এর মতো প্রশ্ন করে একটি ওয়ার্কআউট সেশন বন্ধ করার সুযোগ দেয়। shortcuts.xml এ একটি দ্বিতীয় capability যোগ করে ফিটনেস অ্যাপে এই BII-টি প্রয়োগ করুন:
<!-- shortcuts.xml -->
<capability android:name="actions.intent.STOP_EXERCISE">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="PUT_YOUR_APPLICATION_ID_HERE"
android:targetClass="com.devrel.android.fitactions.FitMainActivity">
<!-- Eg. name = "Running" -->
<parameter
android:name="exercise.name"
android:key="stopExercise"/>
</intent>
</capability>
PUT_YOUR_APPLICATION_ID_HERE জায়গায় আপনার অনন্য applicationId বসান।
ইনলাইন ইনভেন্টরির মাধ্যমে BII প্যারামিটারগুলি পরিচালনা করুন
এই BII-টি START_EXERCISE BII-এর মতোই exercise.name প্যারামিটার সমর্থন করে, যার মাধ্যমে ব্যবহারকারীরা কোন সক্রিয় ওয়ার্কআউটটি শেষ করতে চান তা নির্দিষ্ট করতে পারেন। এটি সক্রিয় করতে, shortcuts.xml এ ইনভেন্টরি শর্টকাট এলিমেন্টের একটি দ্বিতীয় সেট যোগ করুন:
<!-- shortcuts.xml -->
<shortcut
android:shortcutId="running"
android:shortcutShortLabel="@string/activity_running">
<capability-binding android:key="actions.intent.STOP_EXERCISE">
<parameter-binding
android:key="exercise.name"
android:value="@array/runningSynonyms"/>
</capability-binding>
</shortcut>
<shortcut
android:shortcutId="walking"
android:shortcutShortLabel="@string/activity_walking">
<capability-binding android:key="actions.intent.STOP_EXERCISE">
<parameter-binding
android:key="exercise.name"
android:value="@array/walkingSynonyms"/>
</capability-binding>
</shortcut>
<shortcut
android:shortcutId="cycling"
android:shortcutShortLabel="@string/activity_cycling">
<capability-binding android:key="actions.intent.STOP_EXERCISE">
<parameter-binding
android:key="exercise.name"
android:value="@array/cyclingSynonyms"/>
</capability-binding>
</shortcut>
আগত অ্যান্ড্রয়েড ইন্টেন্টগুলি পূরণ করুন
FitMainActivity ক্লাসটি আপডেট করে অ্যাপটিকে আগত STOP_EXERCISE অ্যান্ড্রয়েড ইন্টেন্টগুলি পরিচালনা করার জন্য সক্ষম করুন। প্রথমে, STOP_EXERCISE ইন্টেন্টের ডেটা ধারণ করার জন্য handleIntent ফাংশনে একটি ভেরিয়েবল যোগ করুন:
// FitMainActivity.kt
private fun handleIntent(data: Uri?) {
val stopExercise = intent?.extras?.getString(STOP_EXERCISE)
//...
}
এরপরে, STOP_EXERCISE ইনটেন্টগুলো হ্যান্ডেল করার জন্য handleIntent ফাংশনের কন্ডিশনাল লজিক আপডেট করুন:
// FitMainActivity.kt
private fun handleIntent(data: Uri?) {
//...
if (startExercise != null){
val type = FitActivity.Type.find(startExercise)
val arguments = Bundle().apply {
putSerializable(FitTrackingFragment.PARAM_TYPE, type)
}
updateView(FitTrackingFragment::class.java, arguments)
} // Add conditional for stopExercise
<strong>
} else if(stopExercise != null){
// Stop the tracking service if any and return to home screen.
stopService(Intent(this, FitTrackingService::class.java))
updateView(FitStatsFragment::class.java)
}
</strong>
//...
}
পূর্ববর্তী কোডে, আপনি handleIntent ফাংশনটি আপডেট করেছেন যাতে এটি আগত অ্যান্ড্রয়েড ইন্টেন্টে STOP_EXERCISE BII আছে কিনা তা পরীক্ষা করে। যদি এটি পাওয়া যায়, তাহলে ফাংশনটি সক্রিয় টাইমারটি বন্ধ করে দেয় এবং ব্যবহারকারীকে হোম স্ক্রিনে ফিরিয়ে নিয়ে যায়।
আপনার অ্যাপ অ্যাকশন পরীক্ষা করুন
এই ধাপগুলো অনুসরণ করে গুগল অ্যাসিস্ট্যান্ট প্লাগইন ব্যবহার করে আপনার অ্যাপ অ্যাকশন পরীক্ষা করুন:
- অ্যান্ড্রয়েড স্টুডিওতে আপনার অ্যাপটি চালাতে Run > Run App নির্বাচন করুন অথবা উপরের টুলবারে থাকা Run আইকনে ক্লিক করুন।
- অ্যাপে একটি নতুন 'রানিং' ব্যায়াম শুরু করুন।
- অ্যান্ড্রয়েড স্টুডিওতে প্লাগইনটি খুলুন: Tools > App Actions > Google Assistant > App Actions Test Tool- এ যান।
- প্রিভিউ তৈরি করুন -এ ক্লিক করুন।
-
actions.intent.STOP_EXERCISEবিল্ট-ইন ইন্টেন্টটি নির্বাচন করুন। - অনুশীলনের বাক্সে, ডিফল্ট চলমান মানটি অপরিবর্তিত রাখুন।
- ‘রান অ্যাপ অ্যাকশন’-এ ক্লিক করুন। যাচাই করুন যে অ্যাসিস্ট্যান্ট ওয়ার্কআউটটি বন্ধ করে আপনাকে হোম স্ক্রিনে ফিরিয়ে নিয়ে আসে।
৬. পরবর্তী পদক্ষেপ
অভিনন্দন!
আপনি এখন বুঝতে পারছেন কিভাবে অ্যাসিস্ট্যান্টের বিল্ট-ইন ইন্টেন্ট ব্যবহার করে একটি অ্যান্ড্রয়েড অ্যাপকে ভয়েস-সক্ষম করা যায়। এই কোডল্যাবে, আপনি শিখেছেন:
- অ্যাসিস্ট্যান্ট ব্যবহার করে কীভাবে ব্যবহারকারীদের অ্যাপের নির্দিষ্ট ফিচারগুলো গভীরভাবে দেখার সুযোগ দেওয়া যায়।
- ইনলাইন ইনভেন্টরি কীভাবে ব্যবহার করবেন।
- গুগল অ্যাসিস্ট্যান্ট প্লাগইন ব্যবহার করে কীভাবে BII পরীক্ষা করবেন।
এরপর কী?
এখান থেকে, আপনি আপনার ফিটনেস অ্যাপটিতে আরও কিছু পরিমার্জন করার চেষ্টা করতে পারেন। সম্পূর্ণ প্রজেক্টটি দেখতে, গিটহাবের প্রধান ব্রাঞ্চটি দেখুন।
অ্যাপ অ্যাকশন ব্যবহার করে এই অ্যাপটিকে আরও উন্নত করার বিষয়ে জানার জন্য এখানে কিছু পরামর্শ দেওয়া হলো:
- আমাদের অন্যান্য অ্যাপ অ্যাকশন কোডল্যাবগুলোও দেখুন।
- আপনার অ্যাপগুলিকে অ্যাসিস্ট্যান্ট পর্যন্ত প্রসারিত করতে আরও BII আবিষ্কার করার জন্য অ্যাপ অ্যাকশনস-এর বিল্ট-ইন ইন্টেন্টস রেফারেন্সটি দেখুন।
আপনার ‘অ্যাকশনস অন গুগল’ যাত্রা অব্যাহত রাখতে, এই রিসোর্সগুলো অন্বেষণ করুন:
- developers.google.com/assistant : অ্যাকশনস অন গুগল-এর অফিশিয়াল ডকুমেন্টেশন সাইট।
- অ্যাপ অ্যাকশন নমুনা সূচী : অ্যাপ অ্যাকশনের কার্যকারিতা অন্বেষণের জন্য নমুনা অ্যাপ এবং কোড।
- অ্যাকশনস অন গুগল গিটহাব রিপো : নমুনা কোড এবং লাইব্রেরি।
- r/GoogleAssistantDev : গুগল অ্যাসিস্ট্যান্ট নিয়ে কাজ করা ডেভেলপারদের জন্য অফিশিয়াল রেডিট কমিউনিটি।
আমাদের সর্বশেষ ঘোষণাগুলো সম্পর্কে জানতে টুইটারে @ActionsOnGoogle- এ আমাদের অনুসরণ করুন, এবং আপনি যা তৈরি করেছেন তা শেয়ার করতে #appactions- এ টুইট করুন!
মতামত সমীক্ষা
অবশেষে, এই কোডল্যাবটির সাথে আপনার অভিজ্ঞতা সম্পর্কে মতামত জানাতে অনুগ্রহ করে এই সমীক্ষাটি পূরণ করুন।