مخصّص حسب نيّة الشراء

يختلف كل تطبيق عن الآخر، ولا تتطابق جميع وظائفه مع هدف مدمج في "إجراءات التطبيق" (BII) المتاح. وبالنسبة إلى الحالات التي لا تتوفّر فيها قيمة BII لوظائف تطبيقك، يمكنك بدلاً من ذلك استخدام هدف مخصّص لتوسيع نطاق تطبيقك باستخدام "إجراءات التطبيقات".

مثل BII، تتبع الأغراض المخصّصة مخطط shortcuts.xml وتعمل كنقاط اتصال بين "مساعد Google" وعمليات التنفيذ المحددة. تحتوي الرغبات المخصّصة أيضًا على مَعلمات أهداف، يمكنك ربطها بالمَعلمات في عملية التنفيذ المقابلة.

على عكس أرقام BII، تتطلب الأغراض المخصّصة أنماط طلبات البحث لوصف نماذج طلبات البحث التي قد يقولها المستخدم. يختلف هذا النهج عن الأغراض المضمّنة، التي تشكّل نموذجًا للطرق الشائعة التي يعبّر من خلالها المستخدمون عن هذا الهدف.

القيود

تخضع الأهداف المخصّصة للقيود التالية:

  • لا يمكن أن يبدأ اسم الجمهور المخصّص حسب النية بالشراء بـ actions.intent.
  • يجب أن يكون اسم الغرض المخصص حسب النية بالشراء فريدًا بين أسماء الأغراض المخصّصة حسب النية بالشراء لتطبيقك.
  • تتوفّر بعض أنواع البيانات فقط لاستخراج المَعلمات من خلال "مساعد Google" (راجِع الأنواع المتوافقة).
  • يجب أن تحتوي الأغراض المخصّصة على أمثلة لأنماط طلبات البحث القابلة للاستخدام (راجِع أنماط طلبات البحث).
  • يتيح كل طلب بحث معلَمتين نصيتين كحد أقصى. لا ينطبق هذا الحد على أنواع البيانات الأخرى.
  • لا تتوافق الأهداف المخصّصة مع لغة en-US إلا. ويجب أيضًا أن تتطابق إعدادات الجهاز ولغة "مساعد Google".

الأنواع المتوافقة

تتوافق الأهداف المخصّصة مع أنواع schema.org التالية لاستخراج المعلَمات:

  • https://schema.org/Text
  • https://schema.org/Date
  • https://schema.org/Time
  • https://schema.org/Number

تحديد إجراءات التطبيق لأغراض مخصّصة

كما هو الحال مع إجراءات التطبيقات الأخرى التي تستخدم BII، يمكنك تحديد هدف مخصّص في العنصر <capability> في shortcuts.xml.

يتم تحديد الإمكانات في العنصر الجذر <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. بدلاً من ذلك، عند تسمية الأغراض المخصّصة، استخدِم البادئة custom.actions.intent لتمييز أهداف مخصّصة عن كل من معيار BII وأهداف Android التي تعمل بشكل مختلف.

بالنسبة إلى كل مَعلمة، أدخِل نوع 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>
...

يمكنك تحديد اختصارات للأهداف المخصّصة في shortcuts.xml باستخدام التنسيق نفسه المستخدَم في اختصارات BII.

يصف الرمز التالي إجراء تطبيق يستخدم أنماط طلبات البحث المُشار إليها لتشغيل الغرض المخصص SCHEDULE_APPOINTMENT ويستخدِم مجموعة محدّدة من القيم، DRIVERS_LICENSE وVEHICLE_REGISTRATION، للمَعلمة apptType.

<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، حيث تكون طلبات البحث مصمّمة مسبقًا لتناسب الطرق الشائعة التي يعبّر بها المستخدمون عن المهام التي يحاولون تنفيذها أو المعلومات التي يبحثون عنها.

في ملف مورد Android (عادةً ما يكون /res/values/strings.xml)، حدِّد أنماط طلبات البحث كعناصر في مصفوفة سلسلة. عند استدعاء الإجراء في التطبيق، يتحقّق "مساعد Google" من طلب المستخدم مقارنةً بأنماط طلبات البحث كجزء من مطابقة نية المستخدم في التنفيذ. ويمثّل كل نمط طلب بحث تقدّمه عبارة تعتبرها صالحة للنية المخصّصة المقابلة.

عند توفير أنماط طلبات البحث للأهداف المخصّصة، توقّع أن يتّبع كل نمط استدعاءً صريحًا مثل "فتح تطبيق Example و" أو "بدء استخدام تطبيق Example و" على سبيل المثال، ضع في اعتبارك طلبات بحث المستخدم التالية:

  • "Ok Google، افتح تطبيق Example Game وابدأ في تحضير الكعك".
  • "Ok Google، أريد فتح تطبيق Example Game وبدء تحضير فطيرة التفاح".
  • "Ok Google، أريد تشغيل Example Game App وصياغة 5 قوالب كعك".
  • "Ok Google، يُرجى استخدام تطبيق Example Game App لإنتاج كعكة 5 مرّات".

لمطابقة طلبات بحث المستخدم، يمكنك توفير أنماط طلب بحث تحتوي على جزء طلب البحث بعد عبارة الاستدعاء. بالنسبة إلى المعلومات التي تريد استخراجها من طلب البحث (مثل نص أو رقم يقدّمه المستخدم)، يمكنك تعيين قيم لمَعلمة intent المقابلة مع العناصر النائبة في نمط طلب البحث.

للإشارة إلى مَعلمة في نمط طلب بحث، أضِف $ إلى اسم المَعلمة في نمطك. على سبيل المثال، لإنشاء قيمة عنصر نائب لمَعلمة مثل <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 في هذه الحالة، يكون كل من "تحديد موعد اليوم ظهرًا" و"تحديد موعد اليوم ظهرًا" طلبات بحث صالحة.