구현하려는 인앱 기능과 내장 인텐트(BII)를 식별한 후 Android 앱에서 BII를 앱 기능에 매핑하는 actions.xml
리소스를 만듭니다. actions.xml
에 정의된 앱 작업에는 각 BII가 처리를 확인하는 방법과 추출되어 앱에 제공되는 매개변수에 관한 설명이 포함됩니다.
개요
Android 앱을 앱 작업과 통합하려면 actions.xml
파일을 앱 프로젝트의 res/xml
디렉터리에 배치해야 합니다.
<meta-data>
태그를 사용하여 AndroidManifest.xml
파일 내 actions.xml
파일에 대한 참조를 추가합니다. 예를 들면 다음과 같습니다.
<application> <!-- ... --> <meta-data android:name="com.google.android.actions" android:resource="@xml/actions" /> </application>
이렇게 하면 APK에 xml/actions.xml
파일의 XML 리소스가 선언됩니다. Android의 리소스 지정 방식에 관한 자세한 내용은 Android 개발자 문서의 앱 리소스 개요를 참고하세요.
스키마
다음 표에서는 actions.xml
의 스키마를 설명합니다. 태그를 포함할 때 선택사항으로 표시되지 않는 한 태그의 모든 속성은 필수 속성입니다.
태그 | 포함된 요소 | 속성 |
---|---|---|
<actions> |
최상위 수준 | |
<action> |
<actions> |
|
<parameter> |
<action> |
name |
<entity-set-reference> |
<parameter> |
|
<fulfillment> |
<action> |
|
<parameter-mapping> |
<fulfillment> |
|
<entity-set> |
<actions> |
entitySetId |
<entity> |
<entity-set> |
|
태그 설명
이 섹션에서는 actions.xml
의 다양한 스키마 태그를 설명합니다.
<action>
앱에서 지원하는 앱 작업 actions.xml
파일의 모든 <action>
태그에 하나 이상의 <fulfillment>
를 제공해야 합니다.
속성:
intentName
: 앱 작업을 위한 내장 인텐트(예:actions.intent.CREATE_TAXI_RESERVATION
). 지원되는 내장 인텐트 목록은 내장 인텐트 참조를 확인하세요.queryPatterns
: 이 인텐트와 관련해 사용자가 예상한 쿼리 세트. BII에는 사용자가 원하는 작업 또는 정보를 표현하는 일반 방식의 모델이 이미 포함되어 있기 때문에, 이 속성은 맞춤 인텐트에만 해당됩니다.
<parameter>
연결된 항목의 이름과 목록이 있는 앱 작업의 매개변수.
속성:
name
: 매개변수와 연결할 이름(예: 'destination'). 이름은 매개변수의 리프 레벨 필드(예:tradeOrder.assetOrdered.assetIssuedBy.name
)입니다. 매개변수가 문자열과 같은 원시 유형인 경우 이름은 매개변수 이름 자체입니다.
<entity-set-reference>
개발자가 제공하는 schema.org 피드에 대한 참조.
피드는 <entity-set>
태그를 사용하여 actions.xml
파일에 직접 제공해야 합니다.
속성:
entitySetId
: 특정 항목 모음에 대한 참조입니다. 이 속성은<entity-set>
태그의entitySetId
와 일치해야 합니다.urlFilter
: 처리를 위한 웹 인벤토리를 제공할 때 사용되는 URL 경로. 이 속성에는 2개의 와일드 카드가 지원됩니다.*
: 별표를 사용하면 바로 앞에 있는 문자가 0번 이상 나오는 일치 항목을 찾습니다..*
: 마침표 다음에 별표를 사용하면 0자 이상 일치하는 항목을 찾습니다.이스케이프 문자는 각각
\\*
및\\\\
로 이스케이프 처리할 수 있는 리터럴*
및\
에만 필요합니다.
<fulfillment>
Android 앱을 사용하여 사용자 인텐트를 처리하는 방법에 관한 정보. 개발자는 각 인텐트에 필요한 다양한 매개변수 집합과 함께 actions.xml
에 여러 개의 <fulfillment>
태그를 제공할 수 있습니다.
Google에서는 사용자 쿼리를 처리하는 데 필요한 모든 매개변수를 사용할 수 있는 첫 번째 <fulfillment>
를 사용합니다. 필수 매개변수가 없는 한 개의 <fulfillment>
를 대체 처리로 제공해야 합니다.
속성:
urlTemplate
: 기기에서 열 딥 링크 또는 Slice URI를 만들기 위한 템플릿. 템플릿에 필요한 모든 매개변수를 사용할 수 있는 경우 템플릿은 사용자 인텐트의 매개변수로 확장될 수 있습니다. HTTP URL 템플릿의 예는 URL 템플릿에 관한 위키백과 문서를 참고하세요. 템플릿 형식은 RFC 6570 URI 템플릿 사양을 따릅니다.fulfillmentMode
: (선택사항) 서비스 제공에 사용되는 처리 모드. 유효한 값은 다음과 같습니다.actions.fulfillment.DEEPLINK
: 딥 링크를 사용하여 Android 앱을 열어 사용자 작업을 처리합니다. 이는 기본값입니다.actions.fulfillment.SLICE
: Android 앱에 제공되는 Slice를 삽입하여 사용자 작업을 처리합니다.
requiredForegroundActivity
: (선택사항) 앱 작업을 위해 포그라운드에 있어야 하는 활동은 포그라운드 앱 호출로 트리거되어야 함을 나타냅니다.- 활동을 지정할 때는 클래스 약어 없이 앱 패키지 이름을 사용하고 그 뒤에 슬래시(
/
)와 활동 이름을 차례로 입력합니다(APP_PACKAGE_NAME/ACTIVITY_NAME
).
- 활동을 지정할 때는 클래스 약어 없이 앱 패키지 이름을 사용하고 그 뒤에 슬래시(
다음은 URL 템플릿 값의 몇 가지 예입니다.
템플릿 | 값 | 확장 값 |
---|---|---|
https://example.com/test{?someValue,anotherValue} |
"someValue": "123"
|
https://example.com/test?someValue=123&anotherValue=456 |
https://example.com/test?utm_campaign=appactions{&someValue,anotherValue} |
"someValue": "123"
|
https://example.com/test?utm_campaign=appactions&someValue=123&anotherValue=456 |
https://example.com/test?utm_campaign=appactions{#someValue} |
"someValue": "123" |
https://example.com/test?utm_campaign=appactions#someValue=123 |
myapp://example/{someValue} |
"someValue": "123" |
myapp://example/123 |
intent://example#Intent;scheme=my-scheme{;S.extra1,S.extra2};end |
"S.extra1": "123"
|
intent://example#Intent;scheme=my-scheme;S.extra1=123;S.extra2=456;end |
URL 템플릿 구성 방법에 관한 자세한 내용은 처리 태그에 URL 템플릿 선언을 참고하세요.
<parameter-mapping>
인텐트 매개변수에서 URL 템플릿의 변수로 매핑됩니다. 이 맵의 키는 RFC 6570에 설명된 대로 URL 템플릿 매개변수 또는 '변수'를 나타냅니다.
매개변수가 인텐트에 포함되어 있지 않으면 URL 템플릿이 확장될 때 상응하는 변수는 정의되지 않는 상태로 남게 됩니다. 정의되지 않은 변수가 처리되는 방법에 관한 설명은 RFC 6570, 섹션 3.2.1을 참고하세요.
required="true"
와 entityMatchRequired="true"
는 다릅니다.
속성:
urlParameter
: URL 템플릿에 언급된 모든 변수에는 그에 상응하는<parameter-mapping>
의urlParameter
가 있어야 합니다. 예를 들어 uri_template이http://spysatellite.com/show{?lat,long}
이면 매개변수lat
및long
과 관련해<parameter-mapping>
의 키가 있어야 합니다.intentParameter
: 값은 인텐트 매개변수를 참조합니다. 인텐트 매개변수가 구조화된 유형인 경우 점 표기법을 사용하여 중첩 필드를 참조합니다. 예를 들어schema.org/TaxiReservation
유형의 매개변수taxiReservation
이 있는 경우 위도 값을 참조하려면taxiReservation.pickupLocation.geo.latitude
를 사용하면 됩니다.이 매개변수의 항목 세트를 제공하는 경우
intentParameter
는 상응하는<parameter>
태그의 이름(예:taxiReservation.pickupLocation.geo.latitude
)과 정확히 일치해야 합니다.인텐트 매개변수의 유형이 복잡하다면 값은 매개변수의 객체 참조(예:
taxiReservation
)에 상응합니다. 인텐트 매개변수가 프리미티브 유형이면 값은 매개변수 이름 자체입니다.required
: (선택사항) 이 URL 템플릿이 유효하려면 지정된intentParameter
가 있어야 함을 나타냅니다. 사용자 쿼리에 지정된intentParameter
의 값이 없으면 URL 템플릿은 삭제됩니다.entityMatchRequired
: (선택사항) 지정된intentParameter
에 일치되는 인벤토리가 있어야 함을 나타냅니다. 기본값은false
입니다.이 속성을
true
로 설정할 경우 일치하는 인벤토리가 있으면 그 일치 항목의 식별자가 URL 템플릿에 전달됩니다. 일치 항목이 없으면 어시스턴트는 처리를 건너뜁니다.이 속성을
false
로 설정할 경우 일치하는 인벤토리가 있으면 그 일치 항목의 식별자가 URL 템플릿에 전달됩니다. 일치 항목이 없으면 어시스턴트는 사용자 쿼리에서 추출된 BII 매개변수 값을 제공합니다.
<entity-set>
actions.xml
의 인라인 항목 세트.
속성:
entitySetId
:actions.xml
의<entity-set>
에 필요한 고유 식별자(예:"myInlineEntitySet1"
). 이 값은<entity-set-reference>
태그의<entitySetId>
값과도 같아야 합니다.entitySetId
의 값은 최대 30자의 영숫자 문자(-
또는_
같은 특수문자 없음)를 포함해야 하고 문자로 시작해야 합니다.
<entity>
actions.xml
에 인라인된 항목 세트 간의 요소. schema.org/Thing
필드의 하위 집합이 포함되어 있습니다.
url
, identifier
, sameAs
필드의 문자열 값은 하드코딩되거나 APK의 문자열 리소스를 사용하여 참조될 수 있습니다. 동의어를 제공할 경우 APK의 문자열 배열 리소스를 참조하는, alternateName
필드의 문자열 값을 사용합니다.
속성:
name
:sameAs
필드를 지정하지 않는 경우 항목의 필수 이름. 지정된<entity-set>
의 항목name
및alternateName
필드 간에 고유해야 합니다(예: 'toothpaste').alternateName
: (선택사항) 항목의 대체 이름.alternateName
필드를 지정하기 전에name
필드를 지정해야 합니다. 지정된<entity-set>
의 항목name
및alternateName
필드 간에 고유해야 합니다. 사용자 쿼리가 그러한 문자열과 일치하면 항목이 선택됩니다.sameAs
: 항목을 명확하게 식별하는 참조 웹페이지의 URL. 인텐트 매개변수 유형이schema.org/Enumeration
의 하위유형인 경우에만 enum 값을 지정하는 데 사용됩니다.이는 유형이
schema.org/Enumeration
의 하위유형에 속하는 매개변수 필드에 필요합니다(예:MealTypeBreakfast
).identifier
: 항목의 식별자. 지정된<entity-set>
의 항목 간에 고유해야 합니다(예:CAPPUCCINO_ID
).url
: Android 기기에서 열 RFC 3986 URL. 이 URL은 HTTP 클라이언트에서 확인하지 못할 수 있습니다. 예를 들어 Android에서 URL은 앱에 연결된 'http://' URL이거나 기기별 URL(예: 'intent://' URL) 또는 맞춤 URL 스키마의 URL일 수 있습니다.다음과 같은 방법으로
url
필드를<fulfillment>
의urlTemplate
속성과 함께 사용할 수 있습니다.인라인 인벤토리에
url
값을 제공하고<fulfillment>
에서urlTemplate
을 생략합니다.인라인 인벤토리에
url
값을 제공하고 그 값을urlTemplate
값(예:{@url}?extra_param=ExampleValue
)에 사용합니다.
identifier
또는 url
은 반드시 제공해야 합니다. 지정된 항목 집합 내의 모든 항목은 동일한 속성(identifier
또는 url
)을 사용해야 합니다.
앱 작업을 위한 인라인 인벤토리
선택적으로 일부 내장 인텐트에서는 항목 추출을 actions.xml
에 지정된 지원되는 항목 집합(인라인 인벤토리하고 함)으로 유도할 수 있습니다.
사용자가 앱 작업을 호출하면 어시스턴트는 사용자 쿼리 매개변수를 인라인 인벤토리로 지정된 항목과 일치시킵니다. 그러면 Google 어시스턴트는 처리에 사용할 딥 링크를 생성할 때 인벤토리 항목에 상응하는 식별자를 사용할 수 있습니다.
주로 <entity-set>
및 <entity>
요소를 사용하여 인라인 인벤토리를 정의할 수 있습니다. 인라인 인벤토리는 앱이 문자열이나 Google 열거형 값을 인식할 필요 없이 앱 작업 호출의 식별자나 URL만 처리하도록 하여 개발을 간소화합니다.
예를 들어 앱에서 사용자가 주문할 수 있는 다양한 음료를 제공할 경우 개발자는 사용자가 동일한 유형의 음료를 다음과 같이 요청할 것으로 예상할 수 있습니다.
Hey Google, ExampleApp에서 블루베리 크리스피 아이스 시그니처 라떼를 주문해 줘.
Hey Google, ExampleApp에서 블루베리 아이스 커피를 주문해 줘.
인라인 인벤토리에서 식별자 12345a
에 해당하는 항목으로 '블루베리 크리스피 아이스 시그니처 라떼'를 지정합니다. 또한 '블루베리 아이스 커피'도 같은 식별자에 해당하는 항목으로 지정합니다.
이제 사용자가 위의 쿼리로 앱 작업을 트리거하면 어시스턴트는 처리에 사용할 딥 링크를 생성할 때 12345a
식별자를 사용할 수 있습니다.
모든 항목 집합에서 앱당 최대 1,000개의 항목을 지정할 수 있습니다. <entity>
별로 최대 20개의 alternateName
동의어 값을 정의할 수 있습니다.
앱 작업을 위한 웹 인벤토리
일부 내장 인텐트에서는 웹 인벤토리를 처리에 사용할 URL을 생성하는 방법으로 사용할 수 있습니다. 웹 인벤토리는 웹사이트를 기반으로 앱 작업 처리를 위한 URL을 탐색합니다. 이 기능은 웹 인지도가 강하고 공개된 웹 콘텐츠를 중심으로 인앱 딥 링크가 구성된 경우에 가장 유용합니다.
웹 인벤토리를 사용하려면 actions.xml
을 업데이트합니다.
웹 인벤토리를 사용하려는
<action>
태그에서<fulfillment>
태그를 추가하고urlTemplate
속성을{@url}
로 설정합니다.동일한
<action>
태그에서<parameter>
태그를 추가하고, 웹페이지에 설명된 항목에 가장 근접한 내장 인텐트 매개변수에name
속성을 설정합니다. 예를 들어ORDER_MENU_ITEM
을 위한 웹 인벤토리를 제공할 경우 메뉴 페이지를menuItem.name
에, 레스토랑 위치 페이지를menuItem.inMenuSection.inMenu.forRestaurant.name
에 연결합니다.새
<parameter>
태그에서<entity-set-reference>
태그를 추가하고, 웹 인벤토리에 사용할 URL 경로에urlFilter
속성을 설정합니다.
위 단계를 따르면 어시스턴트가 urlFilter
속성에 제공된 URL 경로에서 웹 검색을 할 수 있습니다. 그런 다음 Google 어시스턴트가 그 결과를 사용하여 처리에 {@url}
값을 제공합니다. 그러면 딥 링크 핸들러는 관련 처리를 위해 어시스턴트에서 반환된 딥 링크를 기반으로 사용자를 라우팅할 수 있습니다.
예를 들어 https://www.example.com/items/
로 시작하는 경로의 제품 목록이 웹사이트에 포함되어 있다고 가정해 보겠습니다. urlFilter
값 https://www.example.com/items/.*
를 사용하면 어시스턴트가 나중에 https://www.example.com/items/item123
과 같은 처리 URL을 반환합니다. urlFilter
속성에 관한 자세한 내용은 <entity-set-reference>
를 참고하세요.
처리 태그에 URL 템플릿 선언
<fulfillment>
태그에서는 동적 매개변수의 자리표시자와 함께 URL 템플릿을 선언할 수 있습니다. 이 템플릿은 앱 링크 URL, 맞춤 스키마 또는 인텐트 기반 URL을 사용하여 Android 활동 중 하나에 매핑됩니다.
URL 템플릿 구성
앱 링크 URL의 예:
<action intentName="actions.intent.CREATE_TAXI_RESERVATION"> <fulfillment urlTemplate="http://my-taxi.com/order{?dropoffLocation}"> <parameter-mapping intentParameter="taxiReservation.dropoffLocation.name" urlParameter="dropoffLocation"/> </fulfillment> </action>
맞춤 스키마의 예:
<action intentName="actions.intent.CREATE_TAXI_RESERVATION"> <fulfillment urlTemplate="mytaxi://reserve{?dropoffLocation}"> <parameter-mapping intentParameter="taxiReservation.dropoffLocation.name" urlParameter="dropoffLocation"/> </fulfillment> </action>
인텐트 기반 URL의 예:
<action intentName="actions.intent.CREATE_TAXI_RESERVATION"> <fulfillment urlTemplate="intent:#Intent;package=com.example.myapp;action=com.example.myapp.MY_ACTION{;S.dropoff};end"> <parameter-mapping intentParameter="taxiReservation.dropoffLocation.name" urlParameter="S.dropoff"/> </fulfillment> </action>
처리 <parameter-mapping>
태그를 지정할 때 intentParameter
속성은 사용자가 제공한 내장 인텐트 매개변수를 나타냅니다. 위의 예에서 그 매개변수는 하차 위치 이름(taxiReservation.dropoffLocation.name
)입니다. 내장 인텐트 참조에서 지정된 내장 인텐트에 사용 가능한 매개변수를 확인할 수 있습니다.
내장 인텐트 매개변수를 URL의 위치에 매핑하려면 <parameter-mapping>
태그의 urlParameter
속성을 사용하면 됩니다. 이 속성은 URL 템플릿에서 사용자의 정보로 대체하려는 자리표시자 값에 해당합니다. 자리표시자 값은 urlTemplate
에 있어야 하고 중괄호({}
)로 묶여야 합니다.
앱 링크 URL
앱 링크 URL을 사용하는 경우 urlTemplate
은 Activity
를 트리거할 수 있는 일반 HTTP URL을 가리킵니다. 매개변수는 앱 링크 URL에 URL 매개변수로 전달됩니다. urlTemplate
의 매개변수는 중괄호({}
)로 묶고 물음표(?
)를 접두사로 사용해야 합니다. 매개변수가 설정되지 않으면 매개변수(중괄호 포함)는 결과에서 생략됩니다.
예를 들어 사용자가 샌프란시스코로 가는 택시를 불러달라고 요청하여 앱 작업을 트리거한 경우 (매개변수 대체 후) 트리거되는 최종 URI는 다음과 같습니다.
https://mydomain.com/order?action=com.example.myapp.MY_ACTION&dropoff=San+Francisco
인텐트 기반 URL
인텐트 기반 URL을 사용 중인 경우 urlTemplate
값에는 패키지 이름, 인텐트 작업, 하차라는 추가 인텐트 한 개가 포함됩니다.
추가 항목은 String
인텐트 추가 항목(Intent.toUri()
를 통해 정의됨)을 나타내는 'S.'가 접두사로 추가되고, 중괄호로 묶여 매개변수로 대체되었음을 나타냅니다.
인텐트 작업을 인텐트 추가 항목에서 분리하려면 선행 세미콜론이 추가로 필요합니다(매개변수가 설정된 경우에만 포함됨).
다음 예에서 urlParameter
값은 S.dropoff
로 설정됩니다. urlTemplate
에서 이 값을 찾으면 URL에서 이 값이 표시되는 위치를 확인할 수 있습니다.
예를 들어 사용자가 샌프란시스코로 가는 차량 공유 서비스를 요청하여 앱 작업을 트리거하는 경우 (매개변수 대체 후) 트리거되는 최종 URI는 다음과 같습니다.
intent:#Intent;package=com.example.myapp;action=com.example.myapp.MY_ACTION;S.dropoff=San+Francisco;end
인텐트에 관한 자세한 내용은 Android 인텐트 문서를 참고하세요.
URL 템플릿에 항목의 URL 값 사용
기본적으로 <entity>
가 사용자의 쿼리와 일치하면 identifier
속성의 값이 URL 템플릿에 전달됩니다. 대신 <entity>
의 url
속성을 참조하려면 URL 템플릿에 {@url}
을 사용하고 <parameter-mapping>
태그는 사용하지 마세요. 식별자 값은 URL 이스케이프 처리되지만 url
속성 값은 변경되지 않고 유지됩니다.
URL 템플릿의 {@url}
이 처리에 사용되는 경우 웹 인벤토리와 인라인 인벤토리 같은 소스에서 {@url}
을 도출하려고 시도됩니다. 웹 인벤토리와 인라인 인벤토리가 모두 {@url}
을 도출하기 위한 잠재적인 소스인 경우 웹 인벤토리가 우선합니다.
예를 들면 다음과 같습니다.
<fulfillment urlTemplate="{@url}"> <!-- No parameter-mapping is needed --> </fulfillment> <entity-set entitySetId="..."> <entity name="..." url="https://my.url.fulfillment/1"/> <entity name="..." url="https://my.url.fulfillment/2"/> </entity-set>
{@url}
매개변수는 다른 매개변수와 함께 사용할 수 있습니다.
<fulfillment urlTemplate="{@url}?referrer=actions_on_google{&other_param}"> <parameter-mapping intentParameter="otherParam.name" urlParameter="other_param"/> </fulfillment> <entity-set entitySetId="..."> <entity name="..." url="https://my.url.fulfillment/1"/> <entity name="..." url="https://my.url.fulfillment/2"/> </entity-set>
매개변수 일치
Google에서 사용자 음성에서 비롯된 매개변수를 개발자가 지정한 항목과 일치시키는 방식은 매개변수 유형에 따라 다릅니다.
- Enum: Google은 사용자의 쿼리('Monday')를 연결된 enum URL('http://schema.org/Monday')과 일치시킨 다음, enum URL과 일치하는
sameAs
값을 갖는 항목을 선택합니다. - String: Google은
name
또는alternateName
값이 사용자의 쿼리와 일치하는 항목을 선택합니다.
예
이 섹션에서는 actions.xml
에서 내장 인텐트를 활용하는 방법의 예를 보여줍니다.
금융 - 계정 및 결제
다음 actions.xml
예에서는 actions.intent.CREATE_MONEY_TRANSFER
내장 인텐트를 사용합니다.
<?xml version="1.0" encoding="utf-8"?> <actions> <action intentName="actions.intent.CREATE_MONEY_TRANSFER"> <fulfillment urlTemplate="mybankapp://transfer{?amount,currency,recipientBankAccountType,senderBankAccountType,mode}"> <parameter-mapping intentParameter="moneyTransfer.amount.value" urlParameter="amount" /> <parameter-mapping intentParameter="moneyTransfer.amount.currency" urlParameter="currency" /> <parameter-mapping intentParameter="moneyTransfer.moneyTransferDestination.name" urlParameter="recipientBankAccountType" /> <parameter-mapping intentParameter="moneyTransfer.moneyTransferOrigin.name" urlParameter="senderBankAccountType" /> <parameter-mapping intentParameter="moneyTransfer.transferMode" urlParameter="mode" /> </fulfillment> </action> </actions>
피트니스 - 영양
다음 actions.xml
예에서는 actions.intent.RECORD_FOOD_OBSERVATION
내장 인텐트를 사용합니다.
<?xml version="1.0" encoding="utf-8"?> <actions> <action intentName="actions.intent.RECORD_FOOD_OBSERVATION"> <parameter name="foodObservation.forMeal"> <entity-set-reference entitySetId="MealEntitySet"/> </parameter> <fulfillment urlTemplate="myfoodapp://record{?food,meal}"> <parameter-mapping intentParameter="foodObservation.forMeal" urlParameter="meal" entityMatchRequired="true" /> <parameter-mapping intentParameter="foodObservation.aboutFood.name" urlParameter="food" /> </fulfillment> </action> <entity-set entitySetId="MealEntitySet"> <entity sameAs="http://schema.googleapis.com/MealTypeBreakfast" identifier="1" /> <entity sameAs="http://schema.googleapis.com/MealTypeLunch" identifier="2" /> <entity sameAs="http://schema.googleapis.com/MealTypeDinner" identifier="3" /> </entity-set> </actions>
음식 주문
다음 actions.xml
예에서는 actions.intent.ORDER_MENU_ITEM
내장 인텐트를 사용합니다.
<?xml version="1.0" encoding="utf-8"?> <actions> <action intentName="actions.intent.ORDER_MENU_ITEM"> <parameter name="menuItem.inMenuSection.inMenu.forRestaurant.servesCuisine"> <entity-set-reference entitySetId="CuisineEntitySet"/> </parameter> <fulfillment urlTemplate="myfoodapp://order{?restaurant}"> <parameter-mapping intentParameter="menuItem.inMenuSection.inMenu.forRestaurant.name" urlParameter="restaurant" required="true" /> </fulfillment> <!-- URL values are derived from a matched entity from the CuisineEntity Set. This is not a fallback fulfillment because {@url} is a required parameter. --> <fulfillment urlTemplate="{@url}" /> <!-- Fallback fulfillment with no required parameters --> <fulfillment urlTemplate="myfoodapp://browse{?food}"> <parameter-mapping intentParameter="menuItem.name" urlParameter="food" /> </fulfillment> </action> <entity-set entitySetId="CuisineEntitySet"> <entity url="myfoodapp://browse/italian/pizza" name="@string/pizza" alternateName="@array/pizzaSynonyms" /> <entity url="myfoodapp://browse/american/hamburger" name="@string/hamburger" alternateName="@array/hamburgerSynonyms" /> <entity url="myfoodapp://browse/mediterranean" name="@string/mediterranean" alternateName="@array/mediterraneanSynonyms" /> </entity-set> </actions>
교통정보
다음 actions.xml
파일은 actions.intent.CREATE_TAXI_RESERVATION
내장 인텐트를 사용합니다.
<actions> <action intentName="actions.intent.CREATE_TAXI_RESERVATION"> <fulfillment urlTemplate="https://taxi-actions.firebaseapp.com/order{?dropoffAddress}"> <!-- Dropoff location as an address --> <parameter-mapping intentParameter="taxiReservation.dropoffLocation.name" urlParameter="dropoffAddress"/> </fulfillment> </action> </actions>
기타
다음 actions.xml
예에서는 actions.intent.OPEN_APP_FEATURE
내장 인텐트를 사용합니다.
<?xml version="1.0" encoding="utf-8"?> <actions> <action intentName="actions.intent.OPEN_APP_FEATURE"> <!-- Each parameter can reference an entity set using a custom ID. --> <parameter name="feature"> <entity-set-reference entitySetId="FeatureEntitySet"/> </parameter> <fulfillment urlTemplate="myexampleapp://pathto{?appFeature}"> <parameter-mapping intentParameter="feature" urlParameter="appFeature" /> </fulfillment> </action> <entity-set entitySetId="FeatureEntitySet"> <entity identifier="FEATUREONE" name="first feature" /> <entity identifier="FEATURETWO" name="second feature" /> </entity-set> </actions>