অ্যান্ড্রয়েড উইজেটগুলির সাথে অ্যাপ অ্যাকশনগুলিকে একীভূত করুন৷

চিত্র 1. GET_EXERCISE_OBSERVATION এর জন্য একটি উইজেট চালু করা হচ্ছে।

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

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

সুবিধা

উইজেট হল ক্ষুদ্রাকৃতির অ্যাপ্লিকেশন ভিউ যা অ্যান্ড্রয়েড পৃষ্ঠে এম্বেড করা যেতে পারে, যেমন লঞ্চার বা লক স্ক্রিনে। অ্যাপ অ্যাকশনের সাহায্যে, আপনি আপনার উইজেটগুলিকে অ্যাসিস্ট্যান্ট-এ প্রদর্শনের জন্য যোগ্য করে তাদের প্রভাব বাড়ান:

  1. আবিষ্কার: ব্যবহারকারীদের স্বাভাবিক ভাষার প্রশ্নের উত্তরে সক্রিয়ভাবে উইজেটগুলি প্রদর্শন করুন।
  2. ব্যস্ততা: হ্যান্ডস-ফ্রি প্রসঙ্গে উইজেটগুলি প্রদর্শন করুন, যেমন যখন সহকারী লক স্ক্রিনে এবং Android Auto-ব্যক্তিগত ফলাফল প্রদান করে।
  3. ধারণ: ব্যবহারকারীদের তাদের লঞ্চারে অ্যাসিস্ট্যান্ট-এ প্রদর্শিত উইজেটগুলিকে পিন করতে দিন। পিনিং কার্যকারিতার জন্য উইজেট এক্সটেনশন লাইব্রেরি প্রয়োজন।

অ্যাসিস্ট্যান্ট কীভাবে উইজেট প্রদর্শন করে

দুটি উপায়ে ব্যবহারকারীরা অ্যাসিস্ট্যান্টে উইজেট ব্যবহার করতে পারেন:

  • নাম দ্বারা স্পষ্টভাবে একটি উইজেট অনুরোধ করা.
  • অ্যাসিস্ট্যান্টের সাথে একটি প্রশ্নের কথা বলা যা একটি বিল্ট-ইন ইনটেন্ট (BII) বা উইজেট পূরণের জন্য কনফিগার করা কাস্টম অভিপ্রায় ট্রিগার করে।

সুস্পষ্ট আহ্বান

যেকোনও ইনস্টল করা অ্যাপের জন্য স্পষ্টভাবে উইজেট আনতে, ব্যবহারকারীরা সহকারীকে কিছু জিজ্ঞাসা করতে পারেন যেমন:

  • "Hey Google, ExampleApp উইজেট দেখাও।"
  • "ExampleApp থেকে উইজেট।"

সহকারী এই উইজেটগুলিকে জেনেরিক ভূমিকার সাথে প্রদর্শন করে: "ExampleApp বলছে, এখানে একটি উইজেট আছে।" যদিও অ্যাসিস্ট্যান্ট এই পদ্ধতিতে অনুরোধ করা উইজেটগুলিকে অ্যাপ ডেভেলপারের কোনও কাজ ছাড়াই ফেরত দেয়, এই আমন্ত্রণ পদ্ধতিতে অনুরোধ করার জন্য ব্যবহারকারীর উইজেট সম্পর্কে স্পষ্ট জ্ঞান থাকা প্রয়োজন। উইজেট আবিষ্কার সহজ করতে, নিম্নলিখিত বিভাগে বিস্তারিত অভিপ্রায় পূরণ পদ্ধতি ব্যবহার করুন।

অভিপ্রায় পূরণ

আপনার উইজেটগুলিকে ব্যবহার করে সহজে খুঁজে পাওয়া সহজ করে তুলুন যাতে ব্যবহারকারীরা সহকারীতে করা স্বাভাবিক ভাষার প্রশ্নগুলি পূরণ করে। উদাহরণ স্বরূপ, যখনই কোনো ব্যবহারকারী আপনার ফিটনেস অ্যাপে GET_EXERCISE_OBSERVATION BII ট্রিগার করে তখন আপনি একটি উইজেট ফেরত দিতে পারেন, "Hey Google, ExampleApp এ এই সপ্তাহে আমি কত মাইল দৌড়েছি?" আবিষ্কারকে সহজ করার পাশাপাশি, অ্যাপ অ্যাকশনগুলির সাথে উইজেটগুলিকে একীভূত করা এই সুবিধাগুলি অফার করে:

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

উইজেট পূরণ বাস্তবায়ন

আপনার উদ্দেশ্যের জন্য উইজেট পূর্ণতা বাস্তবায়ন করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. একটি সাধারণ উইজেট তৈরি করুন -এ বর্ণিত ধাপগুলি অনুসরণ করে একটি অ্যান্ড্রয়েড উইজেট বাস্তবায়ন করুন।
  2. আপনার অ্যাপের shortcuts.xml রিসোর্স ফাইলে, আপনার সক্ষমতায় একটি <app-widget> উপাদান যোগ করুন যাতে পূরণের বিবরণ এবং BII <parameter> ট্যাগ থাকে। প্যারামিটারগুলি পরিচালনা করতে আপনার উইজেট আপডেট করুন।
  3. প্রয়োজনীয় উইজেট এক্সটেনশন লাইব্রেরি যোগ করুন, যা সহকারীকে আপনার উইজেটগুলিতে BII নাম এবং পরামিতি পাস করতে দেয়। এটি কাস্টম TTS ভূমিকা এবং উইজেট পিনিং কার্যকারিতা সক্ষম করে।

নিচের বিভাগটি shortcuts.xml এর জন্য <app-widget> স্কিমা বর্ণনা করে।

উইজেট স্কিমা

<app-widget> উপাদানগুলিকে shortcuts.xml<capability> উপাদানের মধ্যে পূর্ণতা হিসাবে সংজ্ঞায়িত করা হয়। তাদের নিম্নলিখিত বৈশিষ্ট্যগুলির প্রয়োজন, যদি না ঐচ্ছিক হিসাবে উল্লেখ করা হয়:

`shortcuts.xml` ট্যাগ এর মধ্যে রয়েছে গুণাবলী
<app-widget> <capability>
  • android:identifier
  • android:targetClass
<parameter> <app-widget>
<extra> <app-widget>
  • android:name (শুধুমাত্র TTS-এর জন্য প্রযোজ্য)
  • android:value (ঐচ্ছিক)

উইজেট স্কিমার বিবরণ

<অ্যাপ-উইজেট>

শীর্ষ-স্তরের উইজেট পরিপূর্ণতা উপাদান।

গুণাবলী:

  • android:identifier : এই পরিপূর্ণতার জন্য শনাক্তকারী। এই মানটি অবশ্যই <app-widget> এবং <intent> পরিপূর্ণতা উপাদানগুলির মধ্যে একটি <capability> এর মধ্যে সংজ্ঞায়িত হতে হবে।
  • android:targetClass : অভিপ্রায় পরিচালনা করার জন্য AppWidgetProvider এর পুরো ক্লাসের নাম।

<প্যারামিটার>

একটি BII প্যারামিটারকে একটি উদ্দেশ্য <parameter> মান ম্যাপ করে। আপনি প্রতিটি <app-widget> উপাদানের জন্য শূন্য বা তার বেশি প্যারামিটার সংজ্ঞায়িত করতে পারেন। পূরণের সময়, সহকারী নিম্নলিখিত বিন্যাস সহ কী-মানের জোড়া হিসাবে উইজেটের উদাহরণের অতিরিক্তগুলি আপডেট করার মাধ্যমে প্যারামিটারগুলি পাস করে:

  • কী: android:key প্যারামিটারের জন্য সংজ্ঞায়িত।
  • মান: BII ব্যবহারকারীর ভয়েস ইনপুট থেকে যে মান বের করে।

আপনি সংশ্লিষ্ট AppWidgetManager অবজেক্টে getAppWidgetOptions() কল করে এই অতিরিক্তগুলি অ্যাক্সেস করতে পারেন, যা ট্রিগারকারী BII এবং এর পরামিতিগুলির নাম সম্বলিত একটি Bundle ফেরত দেয়। বিস্তারিত জানার জন্য প্যারামিটার মান নির্যাস দেখুন।

BII পরামিতি ম্যাচিং সম্পর্কে আরও তথ্যের জন্য, প্যারামিটার ডেটা এবং ম্যাচিং দেখুন।

<অতিরিক্ত>

ঐচ্ছিক ট্যাগ ঘোষণা করে যে এই উইজেটের জন্য একটি কাস্টম TTS ভূমিকা ব্যবহার করা হয়েছে। এই ট্যাগের জন্য নিম্নলিখিত বৈশিষ্ট্য মান প্রয়োজন:

  • android:name : "hasTts"
  • android:value : "true"

নমুনা কোড

একটি shortcuts.xml ফাইল থেকে নিম্নলিখিত উদাহরণ একটি GET_EXERCISE_OBSERVATION BII ক্ষমতার জন্য একটি উইজেট পরিপূর্ণতা কনফিগারেশন প্রদর্শন করে:

<capability android:name="actions.intent.GET_EXERCISE_OBSERVATION">
 
<app-widget
   
android:identifier="GET_EXERCISE_OBSERVATION_1"
   
android:targetClass="com.exampleapp.providers.exampleAppWidgetProvider"
   
android:targetPackage="com.exampleapp">
   
<parameter
     
android:name="exerciseObservation.aboutExercise.name"
     
android:key="exercisename">
   
</parameter>
   
<extra android:name="hasTts" android:value="true"/>
 
</app-widget>
</capability>

আপনি একাধিক <app-widget> উপাদান নির্দিষ্ট করতে পারেন বা সক্ষমতার প্রতি <app-widget> এবং <intent> উপাদানগুলির সংমিশ্রণ ব্যবহার করতে পারেন। এই পদ্ধতি আপনাকে ব্যবহারকারীদের দ্বারা প্রদত্ত পরামিতিগুলির বিভিন্ন সমন্বয়ের উপর ভিত্তি করে একটি কাস্টমাইজড অভিজ্ঞতা প্রদান করতে দেয়। উদাহরণস্বরূপ, যদি ব্যবহারকারী তাদের ক্যোয়ারীতে একটি ড্রপ-অফ অবস্থান নির্দিষ্ট না করে, আপনি তাদের আপনার অ্যাপের কার্যকলাপে নির্দেশ করতে পারেন যা পিক-আপ এবং ড্রপ-অফ অবস্থানগুলি সেট করার বিকল্পগুলি দেখায়৷ ফলব্যাক ইন্টেন্টগুলি সংজ্ঞায়িত করার বিষয়ে আরও তথ্যের জন্য ফলব্যাক ইন্টেন্টস বিভাগটি দেখুন।

প্যারামিটার মান নিষ্কাশন করুন

নিম্নলিখিত নমুনা AppWidgetProvider ক্লাসে, ব্যক্তিগত ফাংশন updateAppWidget() উইজেট বিকল্প Bundle থেকে BII নাম এবং পরামিতিগুলি বের করতে ব্যবহৃত হয়:

package com.example.exampleapp

//... Other module imports
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension

/**
 * Implementation of App Widget functionality.
 */

class MyAppWidget : AppWidgetProvider() {
   
override fun onUpdate(
        context
: Context,
        appWidgetManager
: AppWidgetManager,
        appWidgetIds
: IntArray
   
) {
       
// There might be multiple widgets active, so update all of them
       
for (appWidgetId in appWidgetIds) {
            updateAppWidget
(context, appWidgetManager, appWidgetId)
       
}
   
}

   
private fun updateAppWidget(
        context
: Context,
        appWidgetManager
: AppWidgetManager,
        appWidgetId
: Int
   
) {
       
val widgetText: CharSequence = context.getString(R.string.appwidget_text)

       
// Construct the RemoteViews object
       
val views = RemoteViews(context.packageName, R.layout.my_app_widget)
        views
.setTextViewText(R.id.appwidget_text, widgetText)

       
// Extract the name and parameters of the BII from the widget options
       
val optionsBundle = appWidgetManager.getAppWidgetOptions(appWidgetId)
       
val bii = optionsBundle.getString(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_BII) // "actions.intent.CREATE_TAXI_RESERVATION"
       
val params = optionsBundle.getBundle(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_PARAMS)
       
if (params != null && params.containsKey("dropoff")) {
           
val dropoffLocation = params.getString("dropoff")
           
// Build your RemoteViews with the extracted BII parameter
           
// ...
       
}
        appWidgetManager
.updateAppWidget(appWidgetId, views)
   
}
}
package com.example.exampleapp;

//... Other module imports
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension;

/**
 * Implementation of App Widget functionality.
 */

public class MyAppWidget extends AppWidgetProvider {

   
@Override
   
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
       
// There might be multiple widgets active, so update all of them
       
for (int appWidgetId : appWidgetIds) {
            updateAppWidget
(context, appWidgetManager, appWidgetId);
       
}
   
}

   
private static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {

       
CharSequence widgetText = context.getString(R.string.appwidget_text);

       
// Construct the RemoteViews object
       
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_app_widget);
        views
.setTextViewText(R.id.appwidget_text, widgetText);

       
// Extract the name and parameters of the BII from the widget options
       
Bundle optionsBundle = appWidgetManager.getAppWidgetOptions(appWidgetId);
       
String bii =
                optionsBundle
.getString(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_BII); // "actions.intent.CREATE_TAXI_RESERVATION"
       
Bundle params =
                optionsBundle
.getBundle(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_PARAMS);

       
if (params != null && params.containsKey(("dropoff"))){
           
String dropoffLocation = params.getString("dropoff");
           
// Build your RemoteViews with the extracted BII parameter
           
// ...
       
}

        appWidgetManager
.updateAppWidget(appWidgetId, views);
   
}
}

উইজেট এক্সটেনশন লাইব্রেরি

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

এই Maven লাইব্রেরি আপনাকে প্রতিটি উইজেটের জন্য একটি কাস্টম টেক্সট-টু-স্পীচ (TTS) ভূমিকা প্রদান করতে দেয়, যা ব্যবহারকারীদের কাছে দৃশ্যমানভাবে রেন্ডার করা বিষয়বস্তুর একটি সারাংশ ঘোষণা করতে সহায়ককে সক্ষম করে। এটি লঞ্চার পিনিং সক্ষম করে, ব্যবহারকারীদের জন্য সহকারীতে প্রদর্শিত উইজেটগুলিকে তাদের লঞ্চার স্ক্রিনে সংরক্ষণ করা সহজ করে তোলে।

আপনার অ্যাপ মডিউলের জন্য build.gradle ফাইলের নির্ভরতা বিভাগে লাইব্রেরি যোগ করে শুরু করুন:

dependencies {
   
//...
    implementation
"com.google.assistant.appactions:widgets:0.0.1"
}

কাস্টম ভূমিকা

উইজেট এক্সটেনশন লাইব্রেরি আমদানি করার পরে, আপনি আপনার উইজেটগুলির জন্য কাস্টম TTS ভূমিকা প্রদান করতে পারেন। উইজেটের AppWidgetProvider এ আপনার সংজ্ঞা যোগ করতে, আপনার IDE-তে ক্লাস খুলুন এবং উইজেট এক্সটেনশন লাইব্রেরি আমদানি করুন:

import com.google.assistant.appactions.widgets.AppActionsWidgetExtension
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension;
এর পরে, আপনার পরিচিতি স্ট্রিংগুলি সংজ্ঞায়িত করতে লাইব্রেরি ব্যবহার করুন এবং উইজেট আপডেট করুন, যেমন এই `ExampleAppWidget`-এ দেখানো হয়েছে:
package com.example.exampleapp

//... Other module imports
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension

/**
 * Implementation of App Widget functionality.
 */

object MyAppWidget : AppWidgetProvider() {
   
fun updateAppWidget(
        context
: Context?,
        appWidgetManager
: AppWidgetManager,
        appWidgetId
: Int
   
) {
       
val appActionsWidgetExtension = AppActionsWidgetExtension.newBuilder(appWidgetManager)
           
.setResponseSpeech("Hello world") // TTS to be played back to the user
           
.setResponseText("Hello world!") // Response text to be displayed in Assistant
           
.build()

       
// Update widget with TTS
        appActionsWidgetExtension
.updateWidget(appWidgetId)

       
// Update widget UI
        appWidgetManager
.updateAppWidget(appWidgetId, views)
   
}
}
package com.example.exampleapp;

//... Other module imports
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension;

/**
 * Implementation of App Widget functionality.
 */

public class MyAppWidget extends AppWidgetProvider {

 
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
   
int appWidgetId) {

   
AppActionsWidgetExtension appActionsWidgetExtension = AppActionsWidgetExtension.newBuilder(appWidgetManager)
     
.setResponseSpeech("Hello world")  // TTS to be played back to the user
     
.setResponseText("Hello world!")  // Response text to be displayed in Assistant
     
.build();

     
// Update widget with TTS
      appActionsWidgetExtension
.updateWidget(appWidgetId);

     
// Update widget UI
      appWidgetManager
.updateAppWidget(appWidgetId, views);
   
}

}

TTS শৈলী সুপারিশ

TTS এবং প্রদর্শিত প্রম্পটের জন্য আপনার কাস্টম উইজেট ভূমিকা অপ্টিমাইজ করতে নিম্নলিখিত শৈলী সুপারিশগুলি ব্যবহার করুন৷

সুপারিশ প্রস্তাবিত সুপারিশ করা হয় না
সংকোচন
TTS প্রম্পটে সংকোচন ব্যবহার করুন। সংকোচন ছাড়া বার্তাগুলি প্রাকৃতিক এবং কথোপকথনের পরিবর্তে স্থির এবং রোবোটিক শোনায়। "পারবেন না" এবং "করবেন না" এর মতো শব্দগুলি বলা শাস্তিমূলক এবং কঠোর শোনাতে পারে।
ResponseSpeech (টিটিএস)
দুঃখিত, আমি একটি সংরক্ষণ খুঁজে পাচ্ছি না

ResponseText
দুঃখিত, আমি একটি সংরক্ষণ খুঁজে পাচ্ছি না
ResponseSpeech (টিটিএস)
দুঃখিত, আমি একটি সংরক্ষণ খুঁজে পাচ্ছি না.

ResponseText
দুঃখিত, আমি একটি সংরক্ষণ খুঁজে পাচ্ছি না.
কমা
তিনটি বা ততোধিক আইটেমের তালিকায় সিরিয়াল কমা ব্যবহার করে স্পষ্টতা যোগ করুন। সিরিয়াল কমা ব্যতীত, আপনার তালিকার পৃথক আইটেমগুলি ভুলভাবে শোনা যেতে পারে বা গোষ্ঠী হিসাবে পড়তে পারে৷ উদাহরণস্বরূপ, "ড্যাফোডিল, ডেইজি এবং সূর্যমুখী," "ডেইজি এবং সূর্যমুখী" শব্দে তারা একসাথে আসে। "ড্যাফোডিল, ডেইজি এবং সূর্যমুখী" এ তিনটিই স্পষ্টভাবে আলাদা।
ResponseSpeech (টিটিএস)
আমাদের সবচেয়ে জনপ্রিয় হল হলুদ গোলাপ, ড্যাফোডিল, ডেইজি এবং সূর্যমুখী।

ResponseText
আমাদের সবচেয়ে জনপ্রিয় হল হলুদ গোলাপ, ড্যাফোডিল, ডেইজি এবং সূর্যমুখী।
ResponseSpeech (টিটিএস)
আমাদের সবচেয়ে জনপ্রিয় হল হলুদ গোলাপ, ড্যাফোডিল, ডেইজি এবং সূর্যমুখী।

ResponseText
আমাদের সবচেয়ে জনপ্রিয় হল হলুদ গোলাপ, ড্যাফোডিল, ডেইজি এবং সূর্যমুখী।
সংখ্যা
ভিজ্যুয়াল বিষয়বস্তু আরও দৃষ্টিনন্দন করতে পাঠ্যের পরিবর্তে সংখ্যা ব্যবহার করুন।
ResponseSpeech (টিটিএস)
আপনার রক্তচাপ 100 এর উপরে 80।

ResponseText
আপনার রক্তচাপ 100/80।
ResponseSpeech (টিটিএস)
আপনার রক্তচাপ 100/80।

ResponseText
আপনার রক্তচাপ একশত আশির উপরে।
প্রতীক
ভিজ্যুয়াল বিষয়বস্তুকে আরও দৃষ্টিনন্দন করতে পাঠ্যের পরিবর্তে বিশেষ প্রতীক ব্যবহার করুন।
ResponseSpeech (টিটিএস)
আপনার শেষ ক্রয় ছিল $24.65 এর জন্য।

ResponseText
আপনার শেষ ক্রয় ছিল $24.65 এর জন্য।
ResponseSpeech (টিটিএস)
আপনার শেষ কেনাকাটা ছিল চব্বিশ ডলার এবং পঁয়ষট্টি সেন্টে।

ResponseText
আপনার শেষ কেনাকাটা ছিল চব্বিশ ডলার এবং পঁয়ষট্টি সেন্টে।
সুন্দরী এড়িয়ে চলুন
সুন্দর প্রতিক্রিয়াগুলিকে দূরবর্তী এবং আনুষ্ঠানিক মনে করে। তাদের বাদ দিন এবং কথোপকথন বন্ধুত্বপূর্ণ এবং অনানুষ্ঠানিক রাখুন।
ResponseSpeech (টিটিএস)
আপনার অর্ডার বিতরণ করা হয়েছে.

ResponseText
আপনার অর্ডার বিতরণ করা হয়েছে.
ResponseSpeech (টিটিএস)
অবশ্যই, আমি আপনাকে বলতে পারি। আপনার অর্ডার বিতরণ করা হয়েছে.

ResponseText
অবশ্যই, আমি আপনাকে বলতে পারি। আপনার অর্ডার বিতরণ করা হয়েছে.
বিস্ময়বোধক পয়েন্ট এড়িয়ে চলুন
তারা চিৎকার হিসাবে উপলব্ধি করা যেতে পারে.
ResponseSpeech (টিটিএস)
আপনি আজ 1.5 মাইল দৌড়েছেন।

ResponseText
আপনি আজ 1.5 মাইল দৌড়েছেন।
ResponseSpeech (টিটিএস)
আপনি আজ 1.5 মাইল দৌড়েছেন!

ResponseText
আপনি আজ 1.5 মাইল দৌড়েছেন!
সময়
সংখ্যা ব্যবহার করুন: "5:15," পরিবর্তে "পাঁচ-পনেরো" বা "পাঁচের পর চতুর্থাংশ।" 12-ঘন্টা ঘড়ির জন্য, AM বা PM ব্যবহার করুন।
ResponseSpeech (টিটিএস)
আপনার ডেলিভারি 8:15 AM মধ্যে পৌঁছানো উচিত।

ResponseText
আপনার ডেলিভারি 8:15 AM মধ্যে পৌঁছানো উচিত।
ResponseSpeech (টিটিএস)
আজ সকাল ৮টা নাগাদ ১৫ মিনিটের মধ্যে আপনার ডেলিভারি পৌঁছানো উচিত।

ResponseText
আজ সকাল ৮টা নাগাদ ১৫ মিনিটের মধ্যে আপনার ডেলিভারি পৌঁছানো উচিত।
মনোলোগগুলিতে লঞ্চ করবেন না
তথ্যপূর্ণ হন, কিন্তু প্রতিক্রিয়া সংক্ষিপ্ত রাখুন। একটি স্পষ্ট ব্যবহারকারীর সুবিধা ছাড়া ভারী হাতের বিবরণে যাবেন না।
ResponseSpeech (টিটিএস)
গত মাসে আপনি 159 ঘন্টা শক্তি ব্যবহার করেছেন।

ResponseText
গত মাসে আপনি 159 ঘন্টা শক্তি ব্যবহার করেছেন।
ResponseSpeech (টিটিএস)
শক্তি সঞ্চয় গ্রহ এবং পরিবেশের জন্য খুবই গুরুত্বপূর্ণ। গত মাসে আপনি 159 ঘন্টা শক্তি ব্যবহার করেছেন। এই মাসে আপনি 58 ঘন্টা শক্তি ব্যবহার করেছেন।

ResponseText
শক্তি সঞ্চয় গ্রহ এবং পরিবেশের জন্য খুবই গুরুত্বপূর্ণ। গত মাসে আপনি 159 ঘন্টা শক্তি ব্যবহার করেছেন। এই মাসে আপনি 58 ঘন্টা শক্তি ব্যবহার করেছেন।
সংক্ষিপ্ত, সহজ শব্দ ব্যবহার করুন
সরল এবং সরল ভাষার বিস্তৃত আবেদন রয়েছে, এটি সমস্ত পটভূমির মানুষের কাছে অ্যাক্সেসযোগ্য করে তোলে।
ResponseSpeech (টিটিএস)
আপনার শেষ রক্তে শর্করার রিডিং ছিল 126।

ResponseText
আপনার শেষ রক্তে শর্করার রিডিং ছিল 126 mg/dL।
ResponseSpeech (টিটিএস)
শেষ রক্তে গ্লুকোজের মাত্রা ছিল 126।

ResponseText
শেষ রক্তে গ্লুকোজের মাত্রা ছিল 126।

লঞ্চার পিনিং

উইজেট এক্সটেনশন লাইব্রেরি সহকারীতে আপনার উইজেটের সাথে এই উইজেট যোগ করুন বোতামটি প্রদর্শন করতে দেয়। পিনিং সক্ষম করতে, AndroidManifest.xml এ নিম্নলিখিত রিসিভার সংজ্ঞা যোগ করুন:

<application>
 
<receiver android:name="com.google.assistant.appactions.widgets.pinappwidget.PinAppWidgetBroadcastReceiver"
   
android:exported="false">
   
<intent-filter>
     
<action android:name="com.google.assistant.appactions.widgets.COMPLETE_PIN_APP_WIDGET" />
   
</intent-filter>
 
</receiver>
 
<service
   
android:name=
   
"com.google.assistant.appactions.widgets.pinappwidget.PinAppWidgetService"
   
android:enabled="true"
   
android:exported="true">
   
<intent-filter>
     
<action
       
android:name="com.google.assistant.appactions.widgets.PIN_APP_WIDGET" />
   
</intent-filter>
 
</service>
</application>

ইনভেন্টরি প্রাপ্যতা

BII গুলি ইনলাইন ইনভেন্টরি বা ওয়েব ইনভেন্টরি সমর্থন করে এই ইনভেন্টরিগুলিকে আপনার উইজেট পূরণে প্রসারিত করতে পারে৷

ইনলাইন ইনভেন্টরি

একটি নমুনা shortcuts.xml ফাইল থেকে নিম্নলিখিত কোড ইনলাইন ইনভেন্টরি এবং উইজেট পূরণের জন্য কনফিগার করা একটি START_EXERCISE BII ক্ষমতা প্রদর্শন করে:

<capability
 
android:name="actions.intent.START_EXERCISE">
 
<app-widget
   
android:identifier="START_EXERCISE_1"
   
android:targetClass="com.example.exampleapp.StartExerciseAppWidgetProvider">
   
<parameter
     
android:name="exercise.name"
     
android:key="exerciseName"
     
app:shortcutMatchRequired="true">
   
</parameter>
 
</app-widget>
</capability>

<shortcut android:shortcutId="RunningShortcut">
 
<intent
   
android:action="android.intent.action.VIEW"
   
android:targetClass="com.example.exampleapp.StartExcerciseActivity" />
 
<capability-binding
   
android:capability="actions.intent.START_EXERCISE"
   
android:parameter="exercise.name"
   
android:value="running;runs" />
</shortcut>

পূর্ববর্তী নমুনায়, যখন একজন ব্যবহারকারী সহকারীকে "ExampleApp দিয়ে চালানো শুরু করুন" বলে এই ক্ষমতাটি ট্রিগার করেন, তখন <app-widget> পূরণের বিকল্প বান্ডলে নিম্নলিখিত কী-মান জোড়া থাকে:

  • কী = “exerciseName”
  • মান = “RunningShortcut”

ওয়েব ইনভেন্টরি

একটি নমুনা shortcuts.xml ফাইল থেকে নিম্নলিখিত কোডটি ওয়েব ইনভেন্টরি এবং উইজেট পূরণের জন্য সক্ষম একটি সক্ষমতা দেখায়:

<shortcuts>
 
<capability
   
android:name="actions.intent.START_EXERCISE">
   
<app-widget
     
android:identifier="START_EXERCISE_1"
     
android:targetClass="com.example.exampleapp.CreateTaxiAppWidgetProvider">
     
<parameter
       
android:name="exercise.name"
       
android:key="exerciseName"
       
android:mimeType="text/*">
       
<data android:pathPattern="https://exampleapp.com/exercise/.*" />
     
</parameter>
   
</app-widget>
 
</capability>
</shortcuts>

অ্যাপ অ্যাকশন পরীক্ষা করুন

একটি শারীরিক বা ভার্চুয়াল ডিভাইসে উইজেট পরীক্ষা করতে অ্যাপ অ্যাকশন টেস্ট টুল, অ্যান্ড্রয়েড স্টুডিওর জন্য Google সহকারী প্লাগইন- এর একটি বৈশিষ্ট্য ব্যবহার করুন। পরীক্ষার টুল ব্যবহার করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার অ্যাপ চলমান সঙ্গে আপনার পরীক্ষা ডিভাইস সংযোগ করুন.
  2. অ্যান্ড্রয়েড স্টুডিওতে, টুলস > অ্যাপ অ্যাকশন > অ্যাপ অ্যাকশন টেস্ট টুলে যান।
  3. পূর্বরূপ তৈরি করুন ক্লিক করুন।
  4. অ্যান্ড্রয়েড স্টুডিও ব্যবহার করে, আপনার পরীক্ষা ডিভাইসে আপনার অ্যাপ চালান।
  5. আপনার অ্যাপ অ্যাকশন পরীক্ষা করতে আপনার টেস্ট ডিভাইসে অ্যাসিস্ট্যান্ট অ্যাপ ব্যবহার করুন। উদাহরণ স্বরূপ, আপনি "Hey Google, ExampleApp এ এই সপ্তাহে আমি কত মাইল দৌড়েছি?" এর মত কিছু বলতে পারেন?
  6. আপনার অ্যাপের আচরণ পর্যবেক্ষণ করুন বা পছন্দসই ক্রিয়া ফলাফল যাচাই করতে Android স্টুডিও ডিবাগার ব্যবহার করুন।

গুণমানের নির্দেশিকা

আপনি যখন উইজেটগুলির সাথে অ্যাপ অ্যাকশনগুলিকে সংহত করেন তখন এই বিভাগটি মূল প্রয়োজনীয়তা এবং সর্বোত্তম অনুশীলনগুলিকে হাইলাইট করে৷

উইজেট মধ্যে বিষয়বস্তু

  • ( প্রয়োজনীয় ) আপনার উইজেটে বিজ্ঞাপন দেখাবেন না।
  • উইজেট বিষয়বস্তু সম্পূর্ণভাবে উদ্দেশ্য পূরণের উপর ফোকাস করুন। একটি উইজেট দিয়ে একাধিক উদ্দেশ্য পূরণ করার চেষ্টা করবেন না বা অপ্রাসঙ্গিক বিষয়বস্তু যোগ করবেন না।

প্রমাণীকরণ হ্যান্ডেল

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

পতনের অভিপ্রায়

  • ( প্রয়োজনীয় ) আপনার shortcuts.xml এ, একটি প্রদত্ত ক্ষমতার জন্য আপনার উইজেট পূর্ণতা ছাড়াও সর্বদা একটি ফলব্যাক <intent> প্রদান করুন। একটি ফলব্যাক অভিপ্রায় হল একটি <intent> উপাদান যার কোনো <parameter> মান নেই।

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

  • আপনার অ্যাপটিকে প্রাসঙ্গিক স্ক্রিনে খুলতে ফলব্যাক অভিপ্রায় ব্যবহার করুন, হোম স্ক্রীনে নয়।

একটি নমুনা shortcuts.xml ফাইল থেকে নিম্নলিখিত কোড একটি প্রাথমিক <app-widget> পূর্ণতা সমর্থন করে একটি ফলব্যাক <intent> সহ একটি <capability> প্রদর্শন করে:

<shortcuts>
 
<capability
   
android:name="actions.intent.CREATE_TAXI_RESERVATION">
   
<!-- Widget with required parameter, specified using the "android:required" attribute. -->
   
<app-widget
     
android:identifier="CREATE_TAXI_RESERVATION_1"
     
android:targetClass="com.example.myapplication.CreateTaxiAppWidgetProvider">
     
<parameter
       
android:name="taxiReservation.dropoffLocation.name"
       
android:key="dropoff"
       
android:required="true">
     
</parameter>
   
</app-widget>
   
<!-- Fallback intent with no parameters required to successfully execute. -->
   
<intent
     
android:identifier="CREATE_TAXI_RESERVATION_3"
     
android:action="myapplication.intent.CREATE_TAXI_RESERVATION_1"
     
android:targetClass="com.example.myapplication.TaxiReservationActivity">
   
</intent>
 
</capability>
</shortcuts>

Google Play ডেটা প্রকাশ

এই বিভাগটি উইজেট এক্সটেনশন লাইব্রেরির সর্বশেষ সংস্করণ দ্বারা সংগৃহীত শেষ-ব্যবহারকারীর ডেটা তালিকাভুক্ত করে।

এই SDK ডেভেলপার-প্রদত্ত টেক্সট-টু-স্পিচ (TTS) প্রতিক্রিয়া পাঠায় যেগুলি অ্যাসিস্ট্যান্টের স্পিচ প্রযুক্তি ব্যবহার করে Google অ্যাসিস্ট্যান্ট ব্যবহারকারীকে ঘোষণা করে। এই তথ্য Google দ্বারা সংরক্ষণ করা হয় না.

অ্যাপ অ্যাকশনগুলি নিম্নলিখিত উদ্দেশ্যে ক্লায়েন্ট অ্যাপ মেটাডেটাও সংগ্রহ করতে পারে:

  • বিভিন্ন SDK সংস্করণের গ্রহণের হার নিরীক্ষণ করতে।
  • অ্যাপ্লিকেশান জুড়ে SDK বৈশিষ্ট্য ব্যবহারের পরিমাণ নির্ধারণ করতে।