প্রতিটি অ্যাপ আলাদা, এবং সমস্ত অ্যাপ কার্যকারিতা উপলব্ধ অ্যাপ অ্যাকশন বিল্ট-ইন ইনটেন্ট (BII)-এর সাথে মেলে না। এমন ক্ষেত্রে যেখানে আপনার অ্যাপ কার্যকারিতার জন্য BII নেই, আপনি পরিবর্তে অ্যাপ অ্যাকশনগুলির সাথে আপনার অ্যাপটি প্রসারিত করার জন্য একটি কাস্টম উদ্দেশ্য ব্যবহার করতে পারেন।
BII-এর মতো, কাস্টম ইন্টেন্টগুলি shortcuts.xml
স্কিমা অনুসরণ করে এবং Assistant এবং আপনার সংজ্ঞায়িত পূর্ণতার মধ্যে সংযোগ পয়েন্ট হিসাবে কাজ করে। কাস্টম ইন্টেন্টে ইন্টেন্ট প্যারামিটারও থাকে, যা আপনি আপনার সংশ্লিষ্ট পূর্ণতার প্যারামিটারে ম্যাপ করতে পারেন।
BII-এর বিপরীতে, কাস্টম ইন্টেন্টের জন্য ক্যোয়ারী প্যাটার্নের প্রয়োজন হয় উদাহরণের প্রশ্নগুলি বর্ণনা করার জন্য যা একজন ব্যবহারকারী বলতে পারে। এই পদ্ধতিটি অন্তর্নির্মিত অভিপ্রায় থেকে পৃথক, যা ব্যবহারকারীদের অভিপ্রায় প্রকাশ করার সাধারণ উপায়গুলির মডেল।
সীমাবদ্ধতা
কাস্টম উদ্দেশ্যগুলির নিম্নলিখিত সীমাবদ্ধতা রয়েছে:
- একটি কাস্টম অভিপ্রায়ের নাম
actions.intent
দিয়ে শুরু হতে পারে না। - একটি কাস্টম অভিপ্রায়ের নাম আপনার অ্যাপের জন্য কাস্টম অভিপ্রায় নামের মধ্যে অনন্য হতে হবে।
- Google অ্যাসিস্ট্যান্ট দ্বারা প্যারামিটার নিষ্কাশনের জন্য শুধুমাত্র কিছু ডেটা প্রকার উপলব্ধ ( সমর্থিত প্রকারগুলি দেখুন)।
- কাস্টম ইন্টেন্টে অবশ্যই ব্যবহারযোগ্য ক্যোয়ারী প্যাটার্নের উদাহরণ থাকতে হবে ( কোয়েরি প্যাটার্ন দেখুন)।
- প্রতিটি ক্যোয়ারী সর্বাধিক দুটি পাঠ্য পরামিতি সমর্থন করে। এই সীমা অন্যান্য ডেটা প্রকারের ক্ষেত্রে প্রযোজ্য নয়।
- কাস্টম ইন্টেন্ট শুধুমাত্র en-US লোকেল সমর্থন করে। এছাড়াও, ডিভাইস এবং সহকারী ভাষার সেটিংস অবশ্যই মিলবে।
সমর্থিত প্রকার
কাস্টম ইন্টেন্ট প্যারামিটার নিষ্কাশনের জন্য নিম্নলিখিত schema.org প্রকারগুলিকে সমর্থন করে:
-
https://schema.org/Text
-
https://schema.org/Date
-
https://schema.org/Time
-
https://schema.org/Number
কাস্টম অভিপ্রায় সহ অ্যাপ অ্যাকশন সংজ্ঞায়িত করুন
BII ব্যবহার করে এমন অন্যান্য অ্যাপ অ্যাকশনের মতো, আপনি shortcuts.xml
এ <capability>
এলিমেন্টে একটি কাস্টম উদ্দেশ্য সংজ্ঞায়িত করেন।
ক্ষমতা <shortcuts>
রুট এলিমেন্টে সংজ্ঞায়িত করা হয়। যখন আপনি আপনার <shortcuts>
উপাদানটি সংজ্ঞায়িত করেন, আপনি যে বৈশিষ্ট্যগুলি অ্যাক্সেস করতে চান তার নামস্থান অন্তর্ভুক্ত করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
<shortcuts
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
...
</shortcuts>
android:name
অ্যাট্রিবিউটে কাস্টম ইন্টেন্টের নাম দিন এবং queryPatterns
অ্যাট্রিবিউটে একটি কোয়েরি প্যাটার্ন রিসোর্স ফাইল উল্লেখ করুন।
<shortcuts
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<capability
android:name="custom.actions.intent.EXAMPLE_INTENT"
app:queryPatterns="@array/ExampleQueries">
<intent ...>
<url-template
android:value="http://custom.com{?number_of_items,item_name}" />
<parameter
android:name="number_of_items"
android:key="number_of_items"
android:mimeType="https://schema.org/Number" />
<parameter
android:name="item_name"
android:key="item_name"
android:mimeType="https://schema.org/Text" />
</intent>
</capability>
...
</shortcuts>
কাস্টম ইন্টেন্ট নামগুলি actions.intent
দিয়ে শুরু হতে পারে না, কারণ সেই নামস্থানটি BII-এর জন্য সংরক্ষিত। পরিবর্তে, আপনার কাস্টম ইন্টেন্টের নামকরণ করার সময়, BII এবং Android উভয় ইন্টেন্ট থেকে আপনার কাস্টম ইন্টেন্টগুলিকে আলাদা করতে উপসর্গ custom.actions.intent
ব্যবহার করুন, যা ভিন্নভাবে কাজ করে।
প্রতিটি প্যারামিটারের জন্য, সমর্থিত schema.org প্রকার প্রদান করুন যা প্যারামিটারের অর্থ সবচেয়ে ভালোভাবে বর্ণনা করে। উদাহরণ স্বরূপ, আপনি https://schema.org/Date
ব্যবহার করতে পারেন এমন একটি তারিখ বর্ণনা করতে যা আপনি পাবেন:
...
<intent>
<url-template android:value="https://example.com/appt{?apptType,date,time}" />
<parameter
android:name="date"
android:key="date"
android:mimeType="https://schema.org/Date" />
...
</intent>
...
BII-এর শর্টকাটগুলির মতো একই ফর্ম্যাট ব্যবহার করে shortcuts.xml
এ কাস্টম ইন্টেন্টের জন্য শর্টকাটগুলি সংজ্ঞায়িত করুন৷
নিম্নলিখিত কোডটি একটি অ্যাপ অ্যাকশন বর্ণনা করে যা SCHEDULE_APPOINTMENT
কাস্টম অভিপ্রায় ট্রিগার করতে রেফারেন্সযুক্ত ক্যোয়ারী প্যাটার্ন ব্যবহার করে এবং apptType
প্যারামিটারের জন্য মানগুলির একটি সংজ্ঞায়িত সেট, DRIVERS_LICENSE
এবং VEHICLE_REGISTRATION
ব্যবহার করে৷
<shortcuts
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<capability
android:name="custom.actions.intent.SCHEDULE_APPOINTMENT"
app:queryPatterns="@array/scheduleApptQueries">
<intent ...>
<url-template android:value="https://example.com/appt{?apptType,date,time}" />
<parameter
android:name="date"
android:key="date"
android:mimeType="https://schema.org/Date" />
<parameter
android:name="time"
android:key="time"
android:mimeType="https://schema.org/Time" />
<!-- The following parameter has no type because the shortcuts are bound to it -->
<parameter android:name="apptType" android:key="apptType" />
</intent>
</capability>
<shortcut
android:shortcutShortLabel="Driver's License"
android:shortcutId="DRIVERS_LICENSE">
<capability-binding android:key="custom.actions.intent.SCHEDULE_APPOINTMENT">
<parameter-binding
android:key="apptType"
android:value="@string/driversLicense" />
</capability-binding>
</shortcut>
<shortcut
android:shortcutsShortLabel="Vehicle Registration"
android:shortcutId="VEHICLE_REGISTRATION">
<capability-binding android:key="custom.actions.intent.SCHEDULE_APPOINTMENT">
<parameter-binding
android:key="apptType"
android:value="@string/vehicleRegistration" />
</capability-binding>
</shortcut>
</shortcuts>
আপনি ইনলাইন ইনভেন্টরির সাথে কাস্টম ইন্টেন্ট প্যারামিটারগুলি কনফিগার করতে পারেন, যা আপনি shortcuts.xml
এ নির্দিষ্ট সমর্থিত সত্তার সেটে সত্তা নিষ্কাশনকে গাইড করতে ব্যবহার করতে পারেন।
প্রশ্ন নিদর্শন
আপনার ব্যবহার করা প্রতিটি কাস্টম অভিপ্রায়ের জন্য সেই অভিপ্রায়ের জন্য ব্যবহারকারীর কাছ থেকে প্রত্যাশিত প্রশ্নের একটি সেট প্রয়োজন। এই পদ্ধতিটি BII-এর থেকে ভিন্ন, যেখানে প্রশ্নগুলি ইতিমধ্যেই সাধারণ উপায়গুলির জন্য মডেল করা হয়েছে যা ব্যবহারকারীরা যে কাজগুলি করার চেষ্টা করছেন বা তারা যে তথ্য খুঁজছেন তা প্রকাশ করে।
একটি অ্যান্ড্রয়েড রিসোর্স ফাইলে (সাধারণত /res/values/strings.xml
), একটি স্ট্রিং অ্যারেতে আইটেম হিসাবে ক্যোয়ারী প্যাটার্ন নির্দিষ্ট করুন। যখন আপনার অ্যাপ অ্যাকশন চালু করা হয়, তখন Google অ্যাসিস্ট্যান্ট ব্যবহারকারীর ক্যোয়ারী পরীক্ষা করে আপনার কোয়েরির প্যাটার্নগুলি পূরণ করার জন্য ব্যবহারকারীর অভিপ্রায়ের সাথে মেলে। আপনার দেওয়া প্রতিটি ক্যোয়ারী প্যাটার্ন এমন একটি বাক্যাংশ উপস্থাপন করে যা আপনি সংশ্লিষ্ট কাস্টম অভিপ্রায়ের জন্য বৈধ বলে মনে করেন।
কাস্টম ইন্টেন্টের জন্য ক্যোয়ারী প্যাটার্ন প্রদান করার সময়, প্রতিটি প্যাটার্ন "উপেন এক্সাম্পল অ্যাপ এবং" বা "স্টার্ট এক্সাম্পল অ্যাপ এবং" এর মতো একটি স্পষ্ট আহ্বান অনুসরণ করবে বলে আশা করুন। উদাহরণস্বরূপ, নিম্নলিখিত ব্যবহারকারীর প্রশ্নগুলি বিবেচনা করুন:
- "ওহে গুগল, উদাহরণ গেম অ্যাপ খুলুন এবং একটি কেক তৈরি করা শুরু করুন।"
- "ওহে গুগল, উদাহরণ গেম অ্যাপ খুলুন এবং একটি আপেল পাই তৈরি করা শুরু করুন।"
- "ওহে গুগল, উদাহরণ গেম অ্যাপ শুরু করুন এবং 5টি কেক আইটেম তৈরি করুন।"
- "Hey Google, কেক তৈরি করতে 5 বার উদাহরণ গেম অ্যাপ ব্যবহার করুন।"
ব্যবহারকারীর ক্যোয়ারী মেলানোর জন্য, ক্যোয়ারী প্যাটার্ন প্রদান করুন যাতে আমন্ত্রণ বাক্যাংশের পরে কোয়েরির অংশ থাকে। যে তথ্য আপনি কোয়েরি থেকে বের করতে চান (যেমন পাঠ্য বা ব্যবহারকারীর দ্বারা প্রদত্ত একটি সংখ্যা), আপনি ক্যোয়ারী প্যাটার্নে স্থানধারক সহ সংশ্লিষ্ট অভিপ্রায় প্যারামিটারে মান নির্ধারণ করেন।
একটি ক্যোয়ারী প্যাটার্নে একটি প্যারামিটার উল্লেখ করতে, আপনার প্যাটার্নের প্যারামিটারের নামের সাথে $
যোগ করুন। উদাহরণস্বরূপ, একটি প্যারামিটারের জন্য একটি স্থানধারক মান তৈরি করতে যেমন <parameter name="date1" ...
( actions.xml
) বা <parameter android:name="date1" ...
( shortcuts.xml
এ ), আপনি $date1
ব্যবহার করুন।
নিম্নলিখিত কোডটি ক্যোয়ারী প্যাটার্ন বর্ণনা করে যা পূর্ববর্তী ব্যবহারকারীর প্রশ্নের সাথে মেলে এবং আইটেমের নাম এবং আইটেমগুলির সংখ্যার জন্য মান নির্যাস করে:
<resources>
<string-array name="ExampleQueries">
<item>start making a $text1</item>
<item>start making an $text1</item>
<item>craft $number1 $text1 items</item>
<item>produce $text1 $number1 times</item>
</string-array>
</resources>
ক্যোয়ারী প্যাটার্ন শর্তাবলী সমর্থন করে। উদাহরণস্বরূপ, set (an)? appointment $date $time
। এই ক্ষেত্রে, "আজ দুপুরে অ্যাপয়েন্টমেন্ট সেট করুন" এবং "আজ দুপুরে একটি অ্যাপয়েন্টমেন্ট সেট করুন" উভয়ই বৈধ প্রশ্ন।