인라인 인벤토리

Android 앱에 앱 작업을 구현할 때 테마의 변형인 요청을 처리해야 합니다. 예를 들어 피트니스 앱은 START_EXERCISE 내장 인텐트 (BII)를 구현하여 사용자는 어시스턴트에게 다음과 같이 질문하여 다양한 운동을 시작합니다. "Hey Google, Example 앱에서 달리기 시작해 줘."

이 인텐트를 처리하려면 각 요청을 처리하기 위한 요청 매칭 로직이 필요합니다. 운동 유형(예: '조깅', "단거리 경주" '인종'이 포함된 것입니다. 이 로직은 지원되는 운동이 증가함에 따라 복잡해집니다.

지원되는 BII(예: START_EXERCISE)의 경우 이러한 복잡한 매칭을 피할 수 있습니다. 인벤토리 로직을 설정할 수 있습니다 인라인 인벤토리는 기능 및 콘텐츠를 나타내는 shortcuts.xml에 정의된 Android 바로가기 확인할 수 있습니다.

각 바로가기에는 항목 식별자와 동의어 목록이 포함됩니다. 사용자가 상품을 지칭할 수 있는 방법의 변화를 나타냅니다. 호출 중 BII는 사용자 제공 BII 매개변수를 동의어 목록과 비교합니다. 일치하는 항목을 찾으면 BII 매개변수가 일치하는 바로가기의 항목 식별자로 업데이트됩니다.

인라인 인벤토리를 사용하면 Google 어시스턴트가 BII 매개변수를 간소화할 수 있습니다. 값을 정의합니다.

인라인 인벤토리는 BII 매개변수의 참고표와 같은 사용자가 앱의 기능이나 콘텐츠를 언급하는 다양한 방법 표현 정의한 항목 식별자를 사용하여 생성할 수 있습니다 앱의 요청 매칭을 단순화합니다. 처리에서 BII의 항목 식별자를 예상하도록 하는 로직 매개변수입니다.

인라인 인벤토리 사용자 플로우 다이어그램
그림 1. 다음을 사용하는 START_EXERCISE 기능의 흐름 다이어그램 인라인 인벤토리에서 지원되는 운동 이름을 운동 유형을 살펴볼 수 있습니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.

제한사항 및 대안

인라인 인벤토리 바로가기에는 다음과 같은 제한사항이 있습니다.

  • 바로가기 제한: 인라인 인벤토리 바로가기는 최대 1,000개로 앱별로 정의됩니다
  • 동의어 한도: 각 인라인 인벤토리 바로가기에 최대 20개를 포함할 수 있습니다. 동의어 값입니다.
  • 정적 정의: 인라인 인벤토리 바로가기가 정적으로 선언됨 shortcuts.xml(으)로 인해 새 버전을 게시하여 사용자에 대해 확인할 수 있습니다

정적 구성의 요구사항을 고려할 때 인라인 인벤토리가 가장 좋습니다. 자주 변경되지 않는 개인 맞춤이 아닌 앱 정보를 확장하여 어시스턴트(예: 메뉴 항목, 버스 경로, 음료 크기). 다른 콘텐츠 유형의 경우 다음과 같은 대안을 고려하세요.

  • 웹 인벤토리: 다음 경우에 어시스턴트가 공개 웹 콘텐츠를 쿼리할 수 있도록 합니다. 사용자 쿼리를 지원되는 앱 콘텐츠 식별자와 매칭 웹 인벤토리 쿼리가 호출 중 실시간으로 발생하므로 제품 카탈로그, 소셜 미디어 게시물, 기타 자주 업데이트되는 콘텐츠 등 어시스턴트에 초대합니다.

  • 동적 바로가기: 맞춤설정된 앱 콘텐츠의 인벤토리를 확장합니다. 어시스턴트에 초대합니다. 동적 바로가기를 통해 사용자는 일반적인 콘텐츠를 음식 주문 앱에서 좋아하는 음료를 다시 주문하거나 메모 작성 앱에서 쇼핑 목록을 불러오는 화면

인라인 인벤토리 만들기

인라인 인벤토리는 어시스턴트에 다음과 같은 편리한 방법을 제공하여 개발을 간소화합니다. 사용자가 앱의 콘텐츠와 기능을 요청하는 다양한 방법 번역 를 애플리케이션에서 예상하는 예측 가능한 식별자로 변환합니다. 대상 예를 들어 앱에서 사용자가 시작할 수 있는 다양한 운동을 제공한다고 가정해 보겠습니다. 앱에서 사용자가 동일한 운동 유형:

  • Hey Google, Example 앱에서 달리기 시작해 줘
  • Hey Google, Example App에서 조깅 시작해 줘

인라인 인벤토리 바로가기에서 shortcutId"CARDIO_RUN"로 설정합니다. 운동 식별자가 있어야 합니다. 그런 다음 'run'을 지정합니다. 및 "조그" shortcutId와 관련된 동의어로 간주됩니다. 그런 다음 사용자가 앱 작업을 이전 쿼리와 함께 사용하면 어시스턴트는 식별자를 사용합니다. 처리 인텐트를 생성할 때 BII 매개변수의 "CARDIO_RUN"

샘플 app/res/shortcuts.xml 파일의 다음 스니펫은 다음을 구현합니다. 다음과 같습니다.

<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>

<shortcut android:shortcutId="CARDIO_RUN">
  <capability-binding android:key="actions.intent.START_EXERCISE">
    <parameter-binding
      android:key="exercise.name"
      android:value="@array/run_names" />
    </capability-binding>
</shortcut>

이전 샘플에서 인라인 인벤토리 shortcut<capability-binding> 요소 내에서 <parameter-binding> 태그를 선언하여 <capability>에 정의된 exercise.name BII 매개변수에 바인딩합니다.

문자열 배열 리소스 @array/run_names는 어시스턴트가 인식하고 매핑한 res/values/arrays.xml "CARDIO_RUN" 상품 ID:

<!-- Synonym values for "CARDIO_RUN" inline inventory -->
<resources>
  <string-array name="run_names">
    <item>Run</item>
    <item>Jog</item>
    <item>Sprint</item>
  </string-array>
</resources>

기능에 <url-template>가 제공되면 다음을 위한 shortcutId 생성된 URL의 상응하는 매개변수의 자리표시자입니다. 샘플의 다음 코드는 app/res/shortcuts.xml 파일은 다음 사례를 구현합니다.

<capability android:name="actions.intent.START_EXERCISE">
  <intent>
    <url-template android:value="myapp://workout{?exercise}" />
    <parameter android:name="exercise.name" android:key="exercise" />
  </intent>
</capability>

<shortcut android:shortcutId="CARDIO_RUN">
  <capability-binding android:key="actions.intent.START_EXERCISE">
    <parameter-binding
      android:key="exercise.name"
      android:value="@array/run_names" />
  </capability-binding>
</shortcut>

이전 샘플에서 어시스턴트는 처리 딥 링크를 생성합니다. myapp://workout?exercise=CARDIO_RUN

바로가기 인텐트를 사용한 처리

기본적으로 바로가기는 바로가기의 <capability-binding> 태그에 선언된 대로 일치하는 인라인 인벤토리 값의 shortcutId를 바로가기가 바인딩된 capabilityintent에 제공합니다. 또는 capability<shortcut-fulfillment> 태그를 추가하여 바로가기 자체에 정의된 intent가 처리에 사용되도록 지정할 수 있습니다.

샘플 app/res/shortcuts.xml 파일의 다음 코드는 단축어 처리:

<capability android:name="actions.intent.START_EXERCISE">
  <shortcut-fulfillment>
    <parameter android:name="exercise.name"/>
  </shortcut-fulfillment>
</capability>

<shortcut android:shortcutId="CARDIO_RUN">
  <capability-binding android:key="actions.intent.START_EXERCISE">
    <parameter-binding
      android:key="exercise.name"
      android:value="@array/run_names" />
  </capability-binding>
  <intent android:targetPackage="com.example.myapp"
    android:targetClass="com.example.myapp.ExerciseActivity">
    <parameter android:name="exercise.name" android:key="exercise" />
  </intent>
</shortcut>

이전 샘플에서 사용자 쿼리가 인라인 인벤토리 값과 일치하는 경우 exercise.name 매개변수의 경우 <shortcut-fulfillment> 태그 바인드된 바로가기의 intent가 처리에 사용된다는 것을 지정합니다.

공개 앱 기능 BII의 인라인 인벤토리

인라인 인벤토리는 일반적으로 이를 지원하는 BII의 선택적 기능이지만 OPEN_APP_FEATURE와 같은 특정 BII에는 필수입니다. 이 일반적으로 사용되는 BII를 통해 사용자는 특정 앱 기능에 딥 링크로 연결할 수 있음 어시스턴트 사용 앱 열기 기능 BII를 사용하려면 앱 기능 이름의 인라인 인벤토리가 필요합니다. 사용자를 딥 링크로 연결하기 전에 사용자가 요청한 기능이 있는지 확인 있습니다.

샘플 app/res/shortcuts.xml 파일의 다음 코드는 다음을 구현합니다. 앱의 주문 상태 기능을 나타내는 단일 바로가기가 있는 BII:

<capability android:name="actions.intent.OPEN_APP_FEATURE">
  <intent
    android:targetPackage="com.example.myapp"
    android:targetClass="com.example.myapp.MyClass">
    <parameter
       android:name="feature"
       android:key="featureParam" />
  </intent>
  <!-- Required fallback fulfillment to handle when parameters are missing from user query. -->
  <intent
    android:targetPackage="com.example.myapp"
    android:targetClass="com.example.myapp.MyClass">
    <parameter
       android:name="HOME_SCREEN"
       android:key="featureParam" />
  </intent>
</capability>

<!-- Inline inventory for OPEN_APP_FEATURE. -->

<shortcut android:shortcutId="ORDER_STATUS">
  <capability-binding android:key="actions.intent.OPEN_APP_FEATURE">
    <parameter-binding
      android:key="feature"
      android:value="@array/order_status_names" />
    </capability-binding>
</shortcut>

res/values/arrays.xml의 문자열 배열 리소스 @array/order_status_names는 동의어:

<resources>
  <string-array name="order_status_names">
    <item>Order status</item>
    <item>Orders</item>
    <item>Order history</item>
  </string-array>
</resources>

위의 기능이 준비되면 어시스턴트는 동일한 기능에 관한 다양한 문구를 처리할 수 있습니다.

  • "Hey Google, Example 앱에서 주문 상태 보여 줘."
  • "Hey Google, Example App에서 내 주문 보여줘."
  • "Hey Google, Example App에서 주문 내역 보여 줘."

인라인 인벤토리 테스트

관련 앱 작업 기능을 처리하면서 어시스턴트가 애플리케이션에 제공하는 BII 매개변수 값을 검사하여 인벤토리를 테스트합니다. 인라인 인벤토리는 인벤토리에 결합된 BII의 사용자가 제공한 값을 대체하여 작동합니다. 일치하는 인라인 인벤토리 바로가기의 shortcutId가 포함된 매개변수입니다.

대상 예를 들어 START_EXERCISE BII 기능은 인라인 인벤토리를 사용하여 사용자 제공 BII 매개변수 'run'을 번역 해당 실습에 대해 ID, "CARDIO_RUN"

Google 어시스턴트 플러그인을 사용하면 인라인 인벤토리 앱을 미리 볼 수 있습니다. 테스트 기기의 어시스턴트 작업 다음 단계에 따라 플러그인을 사용하여 인벤토리를 테스트하세요.

  1. 인라인 인벤토리와 연결된 동의어 값으로 BII 기능의 인벤토리에 바인딩된 매개변수를 구성합니다.
  2. 플러그인에서 BII를 트리거하여 테스트 기기에서 호출합니다.
  3. 어시스턴트가 애플리케이션입니다.