สำหรับหลายๆ ความตั้งใจ คำตอบที่ดีที่สุดคือให้คำตอบง่ายๆ ที่สรุปสั้นๆ การยืนยัน หรือประสบการณ์แบบอินเทอร์แอกทีฟสั้นๆ ให้แก่ผู้ใช้ คุณสามารถแสดง วิดเจ็ตแอป Android ใน Google Assistant เพื่อดำเนินการ Intent เหล่านี้
คู่มือนี้ครอบคลุมวิธีตอบคำถามของผู้ใช้ Assistant โดยใช้วิดเจ็ตและวิธีการ ปรับปรุงประสบการณ์การใช้งานวิดเจ็ตสำหรับ Assistant ด้วยการดำเนินการของแอป ไลบรารีส่วนขยายของวิดเจ็ต
ข้อดี
วิดเจ็ตคือมุมมองแอปพลิเคชันขนาดเล็กที่สามารถฝังใน Android เช่น Launcher หรือหน้าจอล็อก จำนวนการดำเนินการของแอปจะช่วยเพิ่ม ผลกระทบของวิดเจ็ตด้วยการทำให้วิดเจ็ตมีสิทธิ์แสดงใน Assistant ดังนี้
- การค้นพบ: แสดงวิดเจ็ตในเชิงรุกเพื่อตอบสนองต่อผู้ใช้ คำค้นหาที่เป็นภาษาธรรมชาติ
- การมีส่วนร่วม: แสดงวิดเจ็ตในบริบทโดยไม่ต้องสัมผัส เช่น Assistant จะแสดงผลการค้นหาเฉพาะบุคคลในหน้าจอล็อกและใน Android Auto
- การเก็บรักษา: อนุญาตให้ผู้ใช้ปักหมุดวิดเจ็ตที่แสดงใน Assistant ไปยัง Launcher ฟังก์ชันการปักหมุดต้องใช้ ไลบรารีส่วนขยายของวิดเจ็ต
วิธีที่ Assistant แสดงวิดเจ็ต
ผู้ใช้จะเรียกใช้วิดเจ็ตใน Assistant ได้ 2 วิธีดังนี้
- การขอวิดเจ็ตด้วยชื่ออย่างชัดแจ้ง
- การพูดคำค้นหากับ Assistant ซึ่งเรียกให้แสดง Intent ในตัว (BII) หรือความตั้งใจที่กำหนดเองที่กำหนดค่าไว้สำหรับ Fulfillment วิดเจ็ต
การเรียกใช้ที่ชัดเจน
หากต้องการเรียกใช้วิดเจ็ตสำหรับแอปที่ติดตั้งแล้วอย่างชัดเจน ผู้ใช้สามารถถาม Assistant เช่น
- "Ok Google แสดงวิดเจ็ต ExampleApp"
- "วิดเจ็ตจาก ExampleApp"
Assistant แสดงวิดเจ็ตเหล่านี้พร้อมกับการแนะนำทั่วไป: "ExampleApp บอกว่า นี่วิดเจ็ต" ขณะที่ Assistant แสดงวิดเจ็ตที่ขอเข้ามาโดยอัตโนมัติ ในลักษณะนี้โดยที่นักพัฒนาแอปไม่ต้องดําเนินการใดๆ วิธีการเรียกใช้นี้ ผู้ใช้ต้องมีความรู้ที่ชัดเจนเกี่ยวกับวิดเจ็ตจึงจะขอวิดเจ็ตได้ ถึง ทำให้การค้นหาวิดเจ็ตง่ายขึ้น ให้ใช้วิธีการดำเนินการตาม Intent ที่ให้รายละเอียดไว้ใน ต่อไปนี้
การดำเนินการตาม Intent
ทำให้วิดเจ็ตของคุณหาได้ง่ายขึ้นโดยใช้วิดเจ็ตเหล่านั้นเพื่อเติมเต็มความเป็นธรรมชาติ
คำค้นหาภาษาที่ผู้ใช้ค้นหาใน Assistant ตัวอย่างเช่น คุณสามารถส่งคืน
เมื่อใดก็ตามที่ผู้ใช้เรียกใช้ GET_EXERCISE_OBSERVATION
BII ใน
แอปฟิตเนสโดยถามว่า "Ok Google ฉันวิ่งไปแล้วกี่กิโลเมตรในสัปดาห์นี้
ExampleApp ใช่ไหม" นอกจากทำให้การค้นหาง่ายขึ้นแล้ว การผสานรวมวิดเจ็ตเข้ากับ
การดำเนินการของแอปมีข้อดีดังนี้
- การเข้าถึงพารามิเตอร์: Assistant จะแสดงพารามิเตอร์ความตั้งใจที่ดึงข้อมูลมา จากคำค้นหาของผู้ใช้ไปยังวิดเจ็ต คำตอบที่ปรับแต่งให้เหมาะสม
- ข้อมูลเบื้องต้นเกี่ยวกับ TTS ที่กำหนดเอง: คุณระบุสตริงการอ่านออกเสียงข้อความ (TTS) ได้ เพื่อให้ Assistant ประกาศเมื่อแสดงวิดเจ็ต
- การปักหมุดวิดเจ็ต: Assistant จะแสดงปุ่มเพิ่มวิดเจ็ตนี้ใกล้กับ วิดเจ็ตของคุณ เพื่อช่วยให้ผู้ใช้ปักหมุดวิดเจ็ตไว้ที่ Launcher ของตนได้อย่างง่ายดาย
ใช้ Fulfillment วิดเจ็ต
ทำตามขั้นตอนต่อไปนี้เพื่อใช้การดำเนินการให้สมบูรณ์วิดเจ็ตสำหรับ Intent ของคุณ
- ใช้งานวิดเจ็ต Android โดยทำตามขั้นตอนที่อธิบายไว้ใน สร้างวิดเจ็ตที่ใช้งานง่าย
- ในไฟล์ทรัพยากร
shortcuts.xml
ของแอป ให้เพิ่ม<app-widget>
เอลิเมนต์ไปยังความสามารถของคุณที่มี รายละเอียดการดำเนินการตามคำสั่งซื้อและแท็ก BII<parameter>
อัปเดต จัดการพารามิเตอร์ - เพิ่มไลบรารีส่วนขยายของวิดเจ็ตที่จำเป็น ซึ่งทำให้ Assistant จะส่งชื่อและพารามิเตอร์ BII ไปยังวิดเจ็ตของคุณ และยังทำให้ บทแนะนำ TTS ที่กำหนดเอง และ การปักหมุด วิดเจ็ต
ส่วนต่อไปนี้จะอธิบายสคีมา <app-widget>
สำหรับ shortcuts.xml
สคีมาของวิดเจ็ต
องค์ประกอบ <app-widget>
ได้รับการกำหนดเป็นการดำเนินการภายใน
องค์ประกอบ <capability>
ใน shortcuts.xml
โดยจำเป็นต้องมีสิ่งต่อไปนี้
เว้นแต่จะระบุว่าไม่บังคับ
แท็ก "shortcuts.xml" | มีใน | แอตทริบิวต์ |
---|---|---|
<app-widget> |
<capability> |
|
<parameter> |
<app-widget> |
|
<extra> |
<app-widget> |
|
คำอธิบายสคีมาของวิดเจ็ต
<วิดเจ็ตแอป>
องค์ประกอบการดำเนินการตามคำสั่งซื้อวิดเจ็ตระดับบนสุด
แอตทริบิวต์:
android:identifier
: ตัวระบุสำหรับการจำหน่ายนี้ ค่านี้ต้อง ไม่ซ้ำกันใน Fulfillment<app-widget>
และ<intent>
ที่กำหนดภายใน<capability>
android:targetClass
: ชื่อเต็มของชั้นเรียนของAppWidgetProvider
เพื่อ จัดการความตั้งใจ
<พารามิเตอร์>
แมปพารามิเตอร์ BII กับค่า Intent <parameter>
คุณสามารถกำหนดเลข 0 หรือ
พารามิเตอร์เพิ่มเติมสำหรับองค์ประกอบ <app-widget>
แต่ละรายการ ระหว่างการดำเนินการตามคำสั่งซื้อ Assistant
ส่งพารามิเตอร์โดยการอัปเดตเพิ่มเติมสำหรับอินสแตนซ์วิดเจ็ตเป็นคู่คีย์-ค่า
โดยใช้รูปแบบต่อไปนี้
- คีย์:
android:key
ที่กำหนดไว้สำหรับพารามิเตอร์ - ค่า: ค่าที่ BII ดึงมาจากการป้อนข้อมูลด้วยเสียงของผู้ใช้
คุณเข้าถึงบริการเพิ่มเติมเหล่านี้ได้โดยโทรไปที่ getAppWidgetOptions()
บนเครือข่ายที่เกี่ยวข้อง
AppWidgetManager
ซึ่งแสดงผล Bundle
ที่มีชื่อของ
ทริกเกอร์ BII และพารามิเตอร์ โปรดดู
ดึงค่าพารามิเตอร์เพื่อดูรายละเอียด
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการจับคู่พารามิเตอร์ 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>
องค์ประกอบต่อความสามารถ วิธีนี้จะช่วยให้คุณ
ให้ประสบการณ์ที่กำหนดเองตามชุดค่าผสมที่แตกต่างกันของพารามิเตอร์
ที่ผู้ใช้ให้ไว้ เช่น หากผู้ใช้ไม่ได้ระบุสถานที่ส่ง
ในการค้นหาของผู้ใช้ คุณสามารถนำลูกค้าไปยังกิจกรรมในแอปของคุณที่แสดง
ตัวเลือกสำหรับการตั้งค่าสถานที่รับและส่ง โปรดดู
ส่วน Intent สำรองสำหรับข้อมูลเพิ่มเติม
เกี่ยวกับการกำหนด Intent สำรอง
ดึงค่าพารามิเตอร์
ในคลาส AppWidgetProvider
ตัวอย่างต่อไปนี้ ฟังก์ชันส่วนตัว
updateAppWidget()
ใช้เพื่อดึงชื่อ BII และพารามิเตอร์จาก
ตัวเลือกวิดเจ็ต Bundle
:
Kotlin
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) } }
Java
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); } }
ไลบรารีส่วนขยายของวิดเจ็ต
ไลบรารีส่วนขยายวิดเจ็ตของ App Actions ช่วยปรับปรุงวิดเจ็ตสำหรับ ประสบการณ์การใช้งาน Assistant ด้วยเสียง ไลบรารีนี้ทำให้วิดเจ็ตของคุณได้รับ ข้อมูลการดำเนินการตามคำสั่งซื้อที่สำคัญจากการเรียก BII ซึ่งรวมถึง BII ชื่อและพารามิเตอร์ Intent ที่ดึงมาจากคำค้นหาของผู้ใช้
ไลบรารี Maven นี้ให้คุณแนะนำการอ่านออกเสียงข้อความ (TTS) ที่กำหนดเอง สำหรับแต่ละวิดเจ็ต เพื่อให้ Assistant ประกาศสรุปเนื้อหาที่กำลัง แสดงผลให้ผู้ใช้เห็น และยังเปิดใช้งานการตรึง Launcher ด้วย ซึ่งทำให้ ผู้ใช้บันทึกวิดเจ็ตที่แสดงใน Assistant ไปยัง Launcher ได้อย่างง่ายดาย หน้าจอ
เริ่มต้นใช้งานโดยการเพิ่มไลบรารีลงในส่วนทรัพยากร Dependency ของ
build.gradle
ไฟล์สำหรับโมดูลแอป
dependencies {
//...
implementation "com.google.assistant.appactions:widgets:0.0.1"
}
การแนะนำที่กำหนดเอง
หลังจากนำเข้าไลบรารีส่วนขยายของวิดเจ็ตแล้ว คุณจะระบุ TTS ที่กำหนดเองได้
คำแนะนำสำหรับ Widget ของคุณ หากต้องการเพิ่มคำจำกัดความของคุณลงใน
AppWidgetProvider
เปิดชั้นเรียนใน IDE แล้วนำเข้าส่วนขยาย Widgets
คลัง:
Kotlin
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension
Java
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension;
Kotlin
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) } }
Java
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 (TTS)ขอโทษนะ หาการจองไม่เจอ ResponseText ขอโทษค่ะ ไม่เจอการจอง |
ResponseSpeech (TTS)ขอโทษค่ะ ไม่เจอการจอง ResponseText ขอโทษค่ะ ไม่เจอการจอง |
คอมมาเพิ่มความชัดเจนโดยใช้เครื่องหมายคอมมาแบบต่อเนื่องในรายการ 3 รายการขึ้นไป หากไม่มีคอมมาแบบอนุกรม แต่ละรายการในลิสต์อาจ ได้ยินไม่ถูกต้องหรืออ่านเป็นกลุ่ม เช่น ใน "ดอกแดฟโฟดิล ดอกเดซี่ และดอกทานตะวัน" "ดอกเดซี่กับดอกทานตะวัน" จะเหมือนอยู่ด้วยกัน ใน "ดอกแดฟโฟดิล ดอกเดซี่ และดอกทานตะวัน" ทั้ง 3 อย่างนี้แยกจากกันอย่างชัดเจน |
ResponseSpeech (TTS)ดอกไม้ที่ได้รับความนิยมมากที่สุดของเรา ได้แก่ กุหลาบสีเหลือง ดอกแดฟโฟดิล เดซี่ และดอกทานตะวัน ResponseText ดอกไม้ที่ได้รับความนิยมมากที่สุดของเรา ได้แก่ กุหลาบสีเหลือง ดอกแดฟโฟดิล เดซี่ และดอกทานตะวัน |
ResponseSpeech (TTS)ดอกไม้ที่ได้รับความนิยมมากที่สุดของเรา ได้แก่ กุหลาบสีเหลือง ดอกแดฟโฟดิล เดซี่ และดอกทานตะวัน ResponseText ดอกไม้ที่ได้รับความนิยมมากที่สุดของเรา ได้แก่ กุหลาบสีเหลือง ดอกแดฟโฟดิล เดซี่ และดอกทานตะวัน |
ตัวเลขใช้ตัวเลขแทนข้อความเพื่อให้เนื้อหาภาพอ่านได้ง่ายขึ้น |
ResponseSpeech (TTS)ความดันโลหิตของคุณอยู่ที่ 100 มากกว่า 80 ResponseText ความดันโลหิตของคุณอยู่ที่ 100/80 |
ResponseSpeech (TTS)ความดันโลหิตของคุณอยู่ที่ 100/80 ResponseText ความดันโลหิตของคุณอยู่ที่ 180 กว่า |
สัญลักษณ์ใช้สัญลักษณ์พิเศษแทนข้อความเพื่อทำให้เนื้อหาที่เป็นภาพมากขึ้น อ่านง่าย |
ResponseSpeech (TTS)การซื้อครั้งล่าสุดราคา $24.65 ResponseText การซื้อครั้งล่าสุดราคา $24.65 |
ResponseSpeech (TTS)การซื้อครั้งล่าสุดของคุณคือ 24 ดอลลาร์และ 65 เซ็นต์ ResponseText การซื้อครั้งล่าสุดของคุณคือ 24 ดอลลาร์และ 65 เซ็นต์ |
หลีกเลี่ยงสิ่งที่จะเกิดขึ้นความสุภาพทำให้คำตอบดูห่างไกลและเป็นทางการ ทิ้งพวกนั้นทิ้งและเก็บ การสนทนาเป็นมิตรและไม่เป็นทางการ |
ResponseSpeech (TTS)นำส่งคำสั่งซื้อของคุณแล้ว ResponseText นำส่งคำสั่งซื้อของคุณแล้ว |
ResponseSpeech (TTS)ได้เลย นำส่งคำสั่งซื้อของคุณแล้ว ResponseText ได้เลย นำส่งคำสั่งซื้อของคุณแล้ว |
หลีกเลี่ยงเครื่องหมายอัศเจรีย์โดยจะเห็นได้ว่าเป็นการตะโกน |
ResponseSpeech (TTS)วันนี้คุณวิ่ง 1.5 ไมล์ ResponseText วันนี้คุณวิ่ง 1.5 ไมล์ |
ResponseSpeech (TTS)วันนี้คุณวิ่ง 1.5 ไมล์! ResponseText วันนี้คุณวิ่ง 1.5 ไมล์! |
เวลาใช้ตัวเลข "5:15" แทนที่จะเป็น "5-15" หรือ "ไตรมาสหลังจากห้า" สำหรับนาฬิกาแบบ 12 ชั่วโมง ให้ใช้ AM หรือ PM |
ResponseSpeech (TTS)สินค้าของคุณควรมาถึงภายในเวลา 8:15 น. ResponseText สินค้าน่าจะถึงมือคุณภายใน 8:15 น. |
ResponseSpeech (TTS)การจัดส่งของคุณควรมาถึงภายใน 15 นาทีหลัง 8:00 น. ของวันนี้ ResponseText การจัดส่งของคุณควรมาถึงภายใน 15 นาทีหลัง 8:00 น. ของวันนี้ |
อย่าเปิดตัวด้วยการพูดคนเดียวเขียนข้อมูลให้กระชับ แต่ใช้คำตอบที่สั้นกระชับ อย่าเล่นคนมือหนัก รายละเอียดโดยไม่มีผลประโยชน์ของผู้ใช้ที่ชัดเจน |
ResponseSpeech (TTS)เดือนที่แล้วคุณใช้พลังงานไป 159 ชั่วโมง ResponseText เดือนที่แล้วคุณใช้พลังงานไป 159 ชั่วโมง |
ResponseSpeech (TTS)การประหยัดพลังงานมีความสำคัญอย่างยิ่งต่อโลกและสิ่งแวดล้อม เดือนที่แล้ว คุณใช้พลังงานไป 159 ชั่วโมง เดือนนี้คุณใช้เวลาไป 58 ชั่วโมง พลังงาน ResponseText การประหยัดพลังงานมีความสำคัญอย่างยิ่งต่อโลกและสิ่งแวดล้อม เดือนที่แล้ว คุณใช้พลังงานไป 159 ชั่วโมง เดือนนี้คุณใช้เวลาไป 58 ชั่วโมง พลังงาน |
ใช้คำสั้นๆ และเข้าใจง่ายภาษาง่ายๆ และดึงดูดผู้ชมได้ในวงกว้างที่สุด ทำให้สามารถเข้าถึง ผู้คนทุกภูมิหลัง |
ResponseSpeech (TTS)ค่าน้ำตาลในเลือดของคุณครั้งล่าสุดคือ 126 ResponseText ค่าน้ำตาลในเลือดที่อ่านได้ครั้งล่าสุดคือ 126 มก./เดซิลิตร |
ResponseSpeech (TTS)ระดับน้ำตาลกลูโคสในเลือดก่อนสุดท้ายคือ 126 ResponseText ระดับน้ำตาลกลูโคสในเลือดก่อนสุดท้ายคือ 126 |
การปักหมุด Launcher
ไลบรารีส่วนขยายของวิดเจ็ตจะแสดงปุ่มเพิ่มวิดเจ็ตนี้
ด้วยวิดเจ็ตของคุณใน Assistant หากต้องการเปิดใช้การปักหมุด ให้เพิ่มผู้รับต่อไปนี้
คำจำกัดความของ 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>
ความพร้อมใช้งานของพื้นที่โฆษณา
BI ที่รองรับพื้นที่โฆษณาในบรรทัดหรือพื้นที่โฆษณาบนเว็บจะขยายสิ่งเหล่านี้ได้ พื้นที่โฆษณาทั้งหมดในการดำเนินการวิดเจ็ตของคุณ
พื้นที่โฆษณาแบบอินไลน์
โค้ดต่อไปนี้จากไฟล์ shortcuts.xml
ตัวอย่างแสดง
ความสามารถ START_EXERCISE
BII
กำหนดค่าสำหรับพื้นที่โฆษณาในบรรทัดและ Fulfillment วิดเจ็ต
<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>
ในตัวอย่างก่อนหน้านี้ เมื่อผู้ใช้เรียกใช้ความสามารถนี้ด้วยการถาม
Assistant "Start running with ExampleApp" คือชุดตัวเลือกสำหรับ
Fulfillment <app-widget>
มีคู่คีย์-ค่าต่อไปนี้
- คีย์ =
“exerciseName”
- ค่า =
“RunningShortcut”
พื้นที่โฆษณาในเว็บ
โค้ดต่อไปนี้จากไฟล์ shortcuts.xml
ตัวอย่างแสดงความสามารถ
เปิดใช้สำหรับพื้นที่โฆษณาเว็บและ Fulfillment วิดเจ็ต:
<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 Assistant สำหรับ Android Studio เพื่อทดสอบวิดเจ็ตบนอุปกรณ์จริงหรืออุปกรณ์เสมือน หากต้องการใช้งาน เครื่องมือทดสอบ ให้ทำตามขั้นตอนต่อไปนี้
- เชื่อมต่ออุปกรณ์ทดสอบกับที่แอปทำงานอยู่
- ใน Android Studio ไปที่เครื่องมือ > การดำเนินการของแอป > การทดสอบการดำเนินการของแอป เครื่องมือ
- คลิกสร้างตัวอย่าง
- ใช้ Android Studio เพื่อเรียกใช้แอปในอุปกรณ์ทดสอบ
- ใช้แอป Assistant ในอุปกรณ์ทดสอบเพื่อทดสอบการดำเนินการของแอป สำหรับ เช่น พูดว่า "Ok Google ฉันวิ่งไปแล้วกี่กิโลเมตร ในสัปดาห์นี้บน ExampleApp ได้อย่างไรบ้าง"
- สังเกตลักษณะการทำงานของแอปหรือใช้โปรแกรมแก้ไขข้อบกพร่องของ Android Studio เพื่อ ยืนยันผลการดำเนินการที่ต้องการ
หลักเกณฑ์ด้านคุณภาพ
ส่วนนี้จะเน้นที่ข้อกำหนดหลักและแนวทางปฏิบัติแนะนำเมื่อ คุณผสานรวมการดำเนินการของแอปเข้ากับวิดเจ็ต
เนื้อหาในวิดเจ็ต
- (จำเป็น) อย่าแสดงโฆษณาในวิดเจ็ต
- เน้นเนื้อหาของวิดเจ็ตให้บรรลุความตั้งใจโดยสมบูรณ์ สิ่งที่ไม่ควรทำ พยายามเติมเต็มความตั้งใจหลายอย่างด้วยวิดเจ็ตเดียว หรือเพิ่มเนื้อหาที่ไม่เกี่ยวข้อง
จัดการการตรวจสอบสิทธิ์
- (จำเป็น) ในกรณีที่ต้องมีการตรวจสอบสิทธิ์ผู้ใช้เพื่อให้โฟลว์ผู้ใช้เสร็จสมบูรณ์ แสดงวิดเจ็ตที่อธิบายว่าผู้ใช้ต้องดำเนินการต่อในแอป แอปไม่รองรับการตรวจสอบสิทธิ์ผู้ใช้ในบรรทัดใน Google Assistant การดำเนินการ
- หากผู้ใช้อนุญาตให้แอปของคุณแสดงข้อมูลโดยใช้วิดเจ็ต คุณสามารถส่งคืน วิดเจ็ตแสดงข้อผิดพลาดขณะรันไทม์สำหรับผู้ใช้ที่ไม่ได้รับอนุญาต
Intent สำรอง
(ต้องระบุ) ใน
shortcuts.xml
ให้ระบุวิดีโอสำรองเสมอ<intent>
นอกเหนือจากการจำหน่ายวิดเจ็ตสำหรับ ความสามารถที่กำหนดไว้ Intent สำรองเป็นองค์ประกอบ<intent>
ที่ไม่มีความจําเป็น<parameter>
การดําเนินการนี้จะช่วยให้ Assistant ดําเนินการให้เสร็จสิ้นได้ การค้นหาของผู้ใช้ไม่มีพารามิเตอร์ที่ Fulfillment อื่นต้องการ องค์ประกอบที่กำหนดในความสามารถนี้ มีข้อยกเว้นคือเมื่อไม่มี พารามิเตอร์ที่จำเป็นสำหรับความสามารถนั้นๆ ซึ่งในกรณีนี้มีเพียงวิดเจ็ต จำเป็นต้องมีการดำเนินการตามคำสั่งซื้อ
ใช้ Intent สำรองเพื่อเปิดแอปไปยังหน้าจอที่เกี่ยวข้อง ไม่ใช่หน้าจอหลัก
โค้ดต่อไปนี้จากไฟล์ shortcuts.xml
ตัวอย่างแสดง
<capability>
ที่มี <intent>
สำรองที่รองรับ
การดำเนินการตามคำสั่งซื้อ <app-widget>
รายการ:
<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 Assistant ประกาศให้ผู้ใช้ทราบโดยใช้เสียงพูดของ Assistant เทคโนโลยี ข้อมูลนี้ไม่ได้จัดเก็บโดย Google
การดำเนินการของแอปยังอาจ รวบรวมข้อมูลเมตาของแอปไคลเอ็นต์เพื่อวัตถุประสงค์ต่อไปนี้
- เพื่อตรวจสอบอัตราการรับไปใช้งานของ SDK เวอร์ชันต่างๆ
- เพื่อวัดการใช้ฟีเจอร์ SDK ในแอปต่างๆ