بعد تحديد الوظيفة داخل التطبيق والقصد المضمّن المرتبط بها
(BII) المطلوب تنفيذه، عليك الإفصاح عن الوظائف المضمّنة التي تتيحها الوظيفة من خلال تعريف
عنصر capability في ملف موارد shortcuts.xml. يؤدي تحديد عنصر BII
كcapability إلى تسجيل توفّر هذا الإجراء الدلالي في تطبيقك، ويؤدي
إلى تفعيل تنفيذ الطلب الصوتي من خلال "مساعد Google".
يستخدم "مساعد Google" معالجة اللغات الطبيعية لاستخراج المَعلمات من طلبات بحث المستخدِم. يسرد مرجع الأهداف المضمّنة الحقول التي يمكن لكلّ هدف مضمّن في النص (BII)
استخراجها من طلب بحث مرتبط بالمستخدم. على سبيل المثال، إذا استخدَم مستخدم
إمكانية [actions.intent.GET_FOOD_OBSERVATION][] في تطبيقك من خلال قول "Ok Google، أريد أن أسأل تطبيق ExampleApp ما الذي أكلته في الغداء يوم الجمعة الماضي"، يستخرج "مساعد Google"
مَعلمات BII التالية من طلب المستخدم:
foodObservation.forMeal= "https://schema.googleapis.com/MealTypeLunch"foodObservation.startTime= "2024-09-06T00:00:00"foodObservation.endTime= "2024-09-06T23:59:59"
يُرسِل المساعد مَعلمات BII إلى intent التسليم المحدّد في
capability. يمكن تعريف عنصر intent واحد أو أكثر في إحدى الإمكانات للتمكّن من مراعاة الطرق المختلفة التي قد يستخدِم بها المستخدم واجهة برمجة التطبيقات لخدمات الويب. على سبيل المثال،
يمكنك تعريف عملية تنفيذ intent تتطلّب مَعلمتَي BII في المثال
أعلاه. يمكنك بعد ذلك تحديد نية ثانية تتطلّب مَعلمة BII
واحدة، foodObservation.forMeal، تُبلغ عن جميع الوجبات في يوم معيّن، مثل "Ok Google، أريد أن أسأل تطبيق ExampleApp ما الذي أكلته في الغداء".
نظرة عامة
يمكنك ضبط "إجراءات التطبيق" باستخدام ملف shortcuts.xml يتم وضعه في دليل res/xml لمشروع تطبيقك، ثم إنشاء إشارة إلى shortcuts.xml
في بيان تطبيقك. أضِف إشارة إلى shortcuts.xml في بيان تطبيقك
من خلال اتّباع الخطوات التالية:
في ملف بيان تطبيقك (
AndroidManifest.xml)، ابحث عن نشاط تم ضبط فلاتر أهدافه على الإجراءandroid.intent.action.MAINوالفئةandroid.intent.category.LAUNCHER.أضِف إشارة إلى
shortcuts.xmlفيAndroidManifest.xmlباستخدام علامة<meta-data>فيActivityالتي تحتوي على فلاتر النيّة لكلّ منMAINوLAUNCHER، على النحو التالي:<meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />
يعرِض المثال أعلاه مرجع XML لملف xml/shortcuts.xml في APK. لمزيد من التفاصيل حول ضبط الاختصارات، يُرجى الاطّلاع على مقالة إنشاء اختصارات ثابتة في مستندات مطوّري تطبيقات Android.
يجب توفُّر مكتبة Jetpack androidx.core:core:1.6.0
(أو إصدار أحدث) في مشروع Android لتجنُّب أخطاء الترجمة compiling
عند تحديد إمكانات "إجراءات التطبيق" في shortcuts.xml. للتعرّف على التفاصيل، يُرجى الاطّلاع على مقالة
البدء في استخدام Android Jetpack.
الاختصارات الثابتة
عند تحديد capability، يمكنك الإفصاح عن عناصر shortcut ثابتة في
shortcuts.xml لتوسيع وظائف الميزة. ينقل "مساعد Google" اختصارات التطبيقات الثابتة
عند تحميل إصدار إلى Google Play Console.
وبما أنّه لا يمكن إنشاء الاختصارات الثابتة وتعديلها إلا من خلال إنشاء إصدارات جديدة،
فإنّها مفيدة جدًا لتسليط الضوء على الأنشطة والمحتوى الشائعَين في تطبيقك.
يمكنك تفعيل وظائف "إجراءات التطبيق" التالية باستخدام اختصارات ثابتة:
اختصارات الإمكانات: أنشئ اختصارات لتشغيل مثيل من
capabilityيحتوي على قيم مُحدَّدة مسبقًا للمَعلمةintent. على سبيل المثال، يمكنك تحديد اختصار تطبيق "بدء جولة ركض" الذي يستدعي ميزة BII فيSTART_EXERCISEتطبيق اللياقة البدنية.تحتوي هذه الاختصارات على سمات
intentوshortLabelوlongLabel، مما يجعلها مؤهَّلة للاقتراح وعرضها كشرائح في مساحات الشاشة التفاعلية، مثل "مساعد Google" أو عند الضغط مع الاستمرار على رمز تطبيق على مشغّلات التطبيقات في Android. يمكن أن يعمل اختصار الإجراء أيضًا كاختصار كيان، كما هو موضّح أدناه، من خلال ربطه بعنصرcapabilityباستخدام علامة<capability-binding>.اختصارات الكيانات: توفّر اختصارات الكيانات قائمة بقيم المَعلمات المتوافقة لاستيفاء طلبات البحث الصوتية عن
capability. على سبيل المثال، اختصار كيان يتضمّن قائمة بأنواع التمارين ("المشي لمسافات طويلة" و"الجري" وما إلى ذلك) مرتبطًا بالمَعلمةexercise.nameBII لميزةSTART_EXERCISEإذا تطابقت عبارة المستخدِم مع عنصر، يتم تمرير معرّفshortcutIdإلى النية بدلاً من قيمة طلب المستخدِم الأوّلية.لا تحدّد اختصارات
EntityسماتintentأوshortLabelأوlongLabel، وبالتالي لا يتم اقتراحها على مساحات العرض الاستباقية. للاطّلاع على التفاصيل، يُرجى الاطّلاع على مستودع إعلانات مضمّنة لإجراءات التطبيقات.
مخطّط الإمكانات
يوضّح الجدول التالي مخطّط "إجراءات التطبيقات" لعناصر capability
في shortcuts.xml. عند تضمين علامة، تكون جميع سماتها مطلوبة
ما لم يتم وضع علامة "اختيارية" عليها.
| علامة Shortcuts.xml | مضمّنة في | السمات |
|---|---|---|
<capability> |
<shortcuts> |
|
<intent> |
<capability> |
|
<url-template> |
<intent> |
|
<extra> |
<intent> |
لا ينطبق إلا على تشغيل التطبيقات في المقدّمة |
<parameter> |
<intent> |
|
<shortcut-fulfillment> |
<capability> |
لا ينطبق إلا على المستودع الإعلاني المضمّن |
<parameter> |
<shortcut-fulfillment> |
android:name |
<slice> |
<capability> |
لا ينطبق إلا على Android Slices |
وصف مخطّط القدرات
يصف هذا القسم عناصر مخطّط capability.
<capability>
capability يحدّد هدف "إجراء التطبيق" الذي يتوافق معه تطبيقك يجب أن يقدّم كل عنصر
<capability> في ملف shortcuts.xml عنصر
<intent> واحدًا على الأقل لمعالجة تنفيذ الإجراء.
السمات:
android:name: رقم تعريف إجراء النيّة المضمّنة (على سبيل المثال، [actions.intent.GET_FOOD_OBSERVATION][]). للحصول على قائمة بالنيّات المضمّنة المتوافقة، اطّلِع على مرجع النيّة المضمّنة.app:queryPatterns: مورد مصفوفة سلاسل من طلبات البحث المتوقّعة من العميل لطلب البحث هذا. لا تنطبق هذه السمة إلا على المقصودات المخصّصة، لأنّ طلبات البحث عن المعلومات تتضمّن حاليًا نماذج للطرق الشائعة التي يعبّر بها المستخدمون عن المهام التي يحاولون تنفيذها أو المعلومات التي يبحثون عنها.
<intent>
عنصر intent في Android الذي يحدِّد كيفية معالجة طلب بحث المستخدِم باستخدام الوظائف داخل التطبيق يمكن للمطوّرين تقديم علامات <intent>
متعدّدة في capability. يحاول "مساعد Google" تنفيذ طلب بحث من المستخدِم باستخدام
<intent> الأولى في capability التي تم توفير جميع المَعلمات المطلوبة لها.
السمات:
-
android:action: نوع النيةActionالإعداد التلقائي هوACTION_VIEW. android:targetClass: فئة النشاط المستهدَف، على سبيل المثال:"com.example.exercise.ExerciseActivity"-
android:targetPackage: الحزمة التي تحتوي على فئة النشاط المستهدَف، على سبيل المثال:"com.example.exercise android:data: يتم استبدال هذا الحقل بـ<url-template>إذا تمّ الإعلان عن هذه العلامة فيintent.
<url-template>
قالب لإنشاء معرّف URI لرابط لصفحة في التطبيق لفتح التطبيق على الجهاز يمكن توسيع النماذج باستخدام مَعلمات اتّجاه مدمجة إذا كانت جميع المَعلمات المطلوبة للنماذج متاحة. للحصول على أمثلة على نموذج عنوان URL المستخدِم بروتوكول HTTP، اطّلِع على مقالة Wikipedia عن نماذج عناوين URL. يتّبع تنسيق ال نموذج مواصفات نموذج معرّف الموارد المنتظم RFC6570.
في ما يلي بعض الأمثلة على قيم نماذج عناوين URL:
| النموذج | القيم | القيمة الموسّعة |
|---|---|---|
https://example.com/test{?foo,bar} |
"foo": "123"
|
https://example.com/test?foo=123&bar=456 |
https://example.com/test?utm_campaign=appactions{&foo,bar} |
"foo": "123"
|
https://example.com/test?utm_campaign=appactions&foo=123&bar=456 |
https://example.com/test?utm_campaign=appactions{#foo} |
"foo": "123" |
https://example.com/test?utm_campaign=appactions#foo=123 |
myapp://example/{foo} |
"foo": "123" |
myapp://example/123 |
لمزيد من المعلومات عن ضبط نماذج عناوين URL، يُرجى الاطّلاع على مقالة نماذج عناوين URL في مرحلة التسليم.
<extra>
تُحدِّد بيانات إضافية لعنصر intent. بالنسبة إلى إجراءات التطبيقات، لا يُستخدَم هذا الحقل إلا ل
تفعيل [invocation of foreground app][] لcapability.
<parameter>
تربط مَعلمة BII بقيم مَعلمات النية. لمزيد من المعلومات، اطّلِع على بيانات المَعلمات والمطابقة.
السمات:
android:name: اسم مَعلمة BII المطلوب ربطها بهذه المَعلمةintent. يجب أن يكون الاسم حقلًا من المستوى السفلي لمَعلمة BII (مثلfoodObservation.aboutFood.name).android:key: مفتاح يحدّده المطوّر لقيمة مَعلمة BII. على سبيل المثال، يمكنك تحديدcontact_nameللمَعلمةmessage.recipient.nameBII.android:mimeType: mimeType للمَعلمة، مثلtext/*. هذا الحقل مطلوب فقط لمَعلمات المقصودات المخصّصة.-
android:required: يُستخدَم للإشارة إلى ما إذا كان طلب بحث المستخدِم يجب أن يتضمّن هذه المَعلمة لاستخدام هذا النيّة في العرض. إذا لم تكن المَعلمة متوفرة، يحاول "مساعد Google" تنفيذ طلب بحث المستخدم باستخدام القيمة التالية لintentالمحدَّدة للعنصرcapability.
<shortcut-fulfillment>
تُحدِّد هذه السمة أنّه يجب استخدام intent محدّد في اختصار مستودع مضمّن لمَعلمة محدّدة من أجل التسليم.
لمعرفة التفاصيل، يُرجى الاطّلاع على الاستجابة باستخدام نوايا الاختصار.
<parameter> (بالنسبة إلى <shortcut-fulfillment>)
سمة اختيارية تربط مَعلمة BII واحدة بميزة تنفيذ اختصار المستودع الإعلاني المضمّن. لمعرفة التفاصيل، يُرجى الاطّلاع على الاستجابة باستخدام نوايا الاختصار.
السمة:
android:name: اسم مَعلمة BII لربطها بميزة تنفيذ اختصار المستودع الإعلاني المضمّن. يجب أن يكون الاسم حقلًا من المستوى السفلي للمَعلمة BII (على سبيل المثال،menuItem.name).
<slice>
يتيح هذا الخيار لتطبيق "مساعد Google" تضمين نتيجة طلب بحث يتطابق مع هذا capability كأحد
شرائح Android. للتعرّف على التفاصيل، يُرجى الاطّلاع على مقالة
دمج إجراءات التطبيقات مع شرائح Android.
مخطّط الاختصار
يوضّح الجدول التالي سمات عناصر shortcut التي تُستخدَم ل
تفعيل وظائف "إجراءات التطبيقات". عند تضمين علامة، يجب إدخال جميع سماتها
ما لم يتم وضع علامة "اختيارية" عليها.
| علامة Shortcuts.xml | مضمّنة في | السمات |
|---|---|---|
<shortcut> |
<shortcuts> |
|
<intent> |
<shortcut> |
|
<capability-binding> |
|
|
<parameter-binding> |
<capability-binding> |
|
<extra> |
<shortcut> |
لا ينطبق إلا على مطابقة مَعلمات Enum. |
وصف مخطّط الاختصار
يصف هذا القسم عناصر مخطّط shortcut.
<shortcut>
<shortcut> لنظام التشغيل Android تمّ تحديده في shortcuts.xml مع سمات معيّنة
تكون ذات صلة بإجراءات التطبيق تتم الإشارة إلى قيم السلاسل للحقول shortcutShortLabel
وshortcutLongLabel من خلال
موارد السلاسل في حزمة APK.
السمات:
android:shortcutId: معرّف هذا الاختصارandroid:shortcutShortLabel: مرجع سلسلة يمثّل عبارة اختصار مختصرة. على سبيل المثال،"@string/callDavidShort"يمثّل القيمة "الاتصال بشمس".android:shortcutLongLabel: مورد سلسلة يمثّل عبارة اختصار طويلة. على سبيل المثال،"@string/callDavidLong"يمثّل القيمة "إجراء مكالمة صوتية مع داوود".
<intent>
نية Android المرتبطة بهذا الاختصار يتم تنفيذ intent هذا عندما يشغِّل
المستخدم هذا الاختصار باستخدام الصوت أو اللمس.
سمات shortcut intent مطابقة لسمات capability intent.
<capability-binding>
ربط shortcut بأحد capability "المهام في التطبيقات" تؤدي إضافة هذا العنصر إلى
shortcut إلى تفعيله للعرض الصوتي باستخدام Assistant.
السمات:
android:key: سمةandroid:nameلعنصرcapabilityالذيshortcutمرتبط به. على سبيل المثال،actions.intent.START_EXERCISE.
<parameter-binding>
سمة اختيارية تربط shortcut بمَعلمة واحدة من capability إجراءات التطبيق. إذا تمّ تحديد parameter-binding لـ shortcut، يمكن استخدام الرمز المختصر
لتقديم عنصر مستودع إعلاني مضمّن لمَعلمة BII.
لمزيد من التفاصيل، يُرجى الاطّلاع على المستودع الإعلاني المضمّن لميزة "المهام مع مساعد Google".
السمات:
android:key: اسم مَعلمة BIIcapabilityلربط هذا الاختصار بها. على سبيل المثال،exercise.name.android:value: قيمةentityيمكن أن يكون هذاentityواحدًا أو قائمة موارد.
<extra>
extra حِزمة بيانات الاختصار. sameAs هي البيانات الوحيدة
ذات الصلة بعناصر shortcut "إجراءات التطبيق". يشير عنوان URL sameAs إلى
صفحة ويب مرجعية تحدِّد الكيان بوضوح. تُستخدَم لتحديد قيمة
تصنيف إذا كان نوع مَعلمة النيّة هو نوع فرعي من
schema.org/Enumeration فقط. وهو مطلوب لحقول المَعلمات
التي تكون أنواعها أنواعًا فرعية من schema.org/Enumeration (على سبيل المثال:
MealTypeBreakfast).
السمات:
android:key: القيمة المسموح بها لإجراءات التطبيق هي:sameAsandroid:value: قيمة عنوان URLsameAs
لمزيد من التفاصيل، يُرجى الاطّلاع على مطابقة قيم المَعلمات المُدرَجة.
خيارات تلبية النية
يمكنك تحديد عناصر intent ضمن <capability> للإشارة إلى كيفية تفاعل "مساعد Google" مع الطلبات الصوتية التي يوجّهها المستخدم والتي تتطابق مع هذه الإمكانية أو تنفيذها. هناك
عدة طرق لضبط كيفية إطلاق intent لوجهة تسليم
في تطبيقك، استنادًا إلى بنية التنقّل في تطبيقك.
تتوفّر خيارات التسليم التالية:
المقصودات الصريحة: يمكنك تشغيل مكوّن تطبيق معيّن من خلال تحديد سمتَي
targetClassوtargetPackageللعنصرintent. هذه هي طريقة الوفاء المُقترَحة للمهام في التطبيق.الروابط لصفحات في التطبيق: يمكنك إطلاق وجهات التطبيق باستخدام روابط لصفحات في التطبيق على Android من خلال تحديد علامة
<url-template>ضمن العنصرintent. تكون هذه المحاولة مفيدة إذا كان تنقّل تطبيقك يعتمد على الروابط لصفحات في التطبيق.بيانات الطلب: يمكنك تقديم عنوان URL للتسليم في سمة
intentandroid:data. يتم استبدال هذا الحقل ببيانات<url-template>إذا تم تحديد هذه العلامة أيضًا ضمنintent.
بيانات المَعلمات والمطابقة
يُرسِل "مساعد Google" تلقائيًا مَعلمات BII المستخرَجة من طلب المستخدم إلى
تطبيقك كبيانات extra لتطبيق Android intent المحدَّدة في capability.
بدلاً من ذلك، يمكنك تحديد علامة <url-template> في
capability تحتوي على عناصر نائبة للمَعلمات الديناميكية. يتم ربط هذا النموذج
بأحد أنشطة Android باستخدام عنوان URL لرابط تطبيق أو
مخطّط مخصّص أو عنوان URL مستند إلى النية.
استخدام "إضافات النيّة"
يوضّح المثال التالي نية صريحة محدّدة لعملية capability
تنفيذ:
<capability android:name="actions.intent.START_EXERCISE">
<intent
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.ExerciseActivity">
<parameter android:name="exercise.name" android:key="exercise" />
</intent>
</capability>
استنادًا إلى العيّنة أعلاه، إذا أدخل المستخدم طلب بحث مثل "Ok Google، أريد بدء الركض"،
يتلقّى التطبيق طلبًا من النوع intent يستدعي المكوّن:
targetPackage، targetClass. يتلقّى المكوّن قيمة إضافية باستخدام
key = "exercise" وvalue = "Running".
استخدام نموذج عنوان URL للروابط لصفحات في التطبيقات على Android
إذا كان تطبيقك قادرًا على معالجة عناوين URL المرتبطة بالتطبيق، باستخدام مَعلمات ديناميكية،
يمكنك تحديد <url-template> في intent لإنشاء Android
روابط لصفحات في التطبيق لإكمال عملية الشراء. يحدِّد العيّنة التالية <url-template>:
<capability android:name="actions.intent.START_EXERCISE">
<intent>
<url-template android:value="myapp://start{?exercise}" />
<parameter android:name="exercise.name" android:key="exercise" />
</intent>
</capability>
استنادًا إلى العيّنة أعلاه، إذا أدخل المستخدم طلب بحث مثل "Ok Google، أريد بدء الركض"، يتلقّى التطبيق عنوان URL الذي تم إنشاؤه: "myapp://start?exercise=Running".
لربط مَعلمة BII بموضع في عنوان URL، استخدِم سمة
android:name لعلامة <parameter>. تتوافق هذه السمة
مع القيمة android:key في نموذج عنوان URL الذي تريد
استبداله بمعلومات من المستخدِم. يجب أن تكون قيمة android:key متوفّرة
في <url-template> وأن تكون محاطة بقوسين معقوفين ({}).
مطابقة قيم المَعلمات المُدرَجة
توفّر بعض مَعلمات BII قيمًا مُدرَجة لهدف التسليم، على سبيل المثال، القيم النصية المتوافقة لمَعلمة BII RECORD_FOOD_OBSERVATION. بالنسبة إلى
هذه المَعلمات، يطابق "مساعد Google" طلب بحث المستخدم ("فطور")
بأحد
الكيانات التي تتطابق قيمة sameAs الخاصة بها مع عنوان URL لنموذج التعداد
(https://schema.googleapis.com/MealTypeBreakfast). ولربط entity
بقيم التعداد المتوافقة، عليك الإفصاح عن عملية ربط sameAs في
shortcut. يوضّح المثال التالي عملية ربط sameAs لاختصار
كيان مضمّن:
<shortcut android:shortcutId="meal_breakfast" >
<capability-binding android:key="actions.intent.RECORD_FOOD_OBSERVATION">
<parameter-binding android:key="foodObservation.forMeal" />
</capability-binding>
<extra
android:key="sameAs"
android:value="http://schema.googleapis.com/MealTypeBreakfast" />
</shortcut>
<capability android:name="actions.intent.RECORD_FOOD_OBSERVATION">
<intent targetPackage="com.example.app" targetClass="com.example.app.Class">
<parameter android:name="foodObservation.forMeal" android:key="for_meal" />
</intent>
</capability>
في المثال أعلاه، إذا أدّت ميزة RECORD_FOOD_OBSERVATION إلى بدء عملية
مطابقة لنوع الوجبة "فطور"، يتم إرسال العنصر الإضافي التالي مع
العنصر الذي يمثّل المنتج intent:
key = "for_meal"value = "meal_breakfast"
الميزات
تتوفّر ميزات "مهام في التطبيقات" التالية في shortcuts.xml.
المستودع الإعلاني المضمّن لميزة "مهام في التطبيقات"
بالنسبة إلى بعض مَعلمات BII، يمكن استخدام الاختصارات لتوجيه عملية
استخراج العناصر إلى مجموعة من العناصر المتوافقة المحدّدة في shortcuts.xml، والتي تُعرف باسم
المستودع الإعلاني المضمّن. لمعرفة التفاصيل، يُرجى الاطّلاع على المستودع المضمّن.
شرائح الجمهور المخصّصة حسب النية بالشراء
يمكن الإفصاح عن النوايا المخصّصة في shortcuts.xml لتفعيل الميزات التي لا تتطابق مع معرّفات BIIs المتاحة في
تطبيقك باستخدام الصوت. على الرغم من أنّها مشابهة في
وظيفتها لتعريف BII، تتطلّب النوايا المخصّصة سمتَين إضافيتَين في shortcuts.xml:
app:queryPatterns: مورد مصفوفة يعرِض أنماط طلبات البحث المختلفة لهدف مخصّص.android:mimeType: نوع مَعلمة الجمهور المخصّص حسب النية بالشراء. هذا الحقل غير مطلوب لـ BIIs، حيث يكون نوع المَعلمة معروفًا. بالنسبة إلى مَعلمات الأهداف المخصّصة، يجب تحديد نوع دلالة متوافق.
لمزيد من التفاصيل، يُرجى الاطّلاع على المقصودات المخصّصة.