Ao implementar Ações no app Android, talvez você se depare com
ter que lidar com solicitações que são variações de um tema. Por exemplo, digamos que seu
fitness implementa a intent integrada (BII) do START_EXERCISE
para permitir
os usuários iniciam vários treinos perguntando ao Google Assistente coisas como:
"Ok Google, iniciar uma corrida no app de exemplo."
Para atender a essa intent, sua lógica de correspondência de solicitação precisa lidar com cada tipo de treino, incluindo variações como "correr", “sprint”, ou "raça". Essa lógica rapidamente se torna complicada conforme a variedade de treinos com suporte aumenta.
Para BIIs com suporte, como START_EXERCISE
, você pode evitar essa correspondência complexa
usando um inventário inline. Um inventário inline é um conjunto de imagens estáticas
Atalhos do Android definidos em shortcuts.xml
para representar recursos e conteúdo.
no seu app.
Cada atalho contém um identificador de item e uma lista de sinônimos. que representam variações na forma como os usuários podem se referir ao item. Durante a invocação, a BII compara o parâmetro de BII fornecido pelo usuário com a lista de sinônimos. Quando uma correspondência é encontrada, o parâmetro de BII é atualizado para o identificador de item do atalho correspondente.
Com um inventário inline, o Google Assistente pode simplificar o parâmetro de BII fornecidos ao seu aplicativo durante as invocações de Ações no app.
Inventários inline funcionam como tabelas de consulta para parâmetros de BII, Expressar várias maneiras pelas quais os usuários se referem aos recursos ou ao conteúdo do app usando os identificadores de item definidos por você. Elas simplificam a correspondência de solicitações do app lógica, permitindo que os fulfillments prevejam identificadores de itens da BII parâmetros.
![Diagrama de fluxo do usuário do inventários inline](https://developer.android.com/static/guide/app-actions/images/appactions-inline-inventory-flow.png?authuser=9&hl=pt)
START_EXERCISE
que usa uma
inventário inline para interpretar nomes de treinos fornecidos pelo usuário para
tipos de exercício no aplicativo.
Limitações e alternativas
Os atalhos de inventário inline têm as seguintes limitações:
- Limite de atalhos:é possível ter no máximo mil atalhos de inventário inline. definidos por app.
- Limite de sinônimos:cada atalho de inventário inline pode conter no máximo 20 de sinônimos.
- Definição estática:os atalhos de inventário inline são declarados estaticamente.
no
shortcuts.xml
e só podem ser atualizados para os usuários publicando um novo mais recente do seu app.
Devido à exigência de configuração estática, é melhor ter um inventário inline adequado para estender informações de aplicativos não personalizadas com pouca frequência para Google Assistente, como itens do cardápio, rotas de ônibus ou tamanhos de bebidas. Para outros tipos de conteúdo, considere estas alternativas:
Inventário da Web: permite que o Google Assistente consulte conteúdo público da Web quando: correspondência entre consultas do usuário e identificadores de conteúdo do app compatíveis. Inventário da Web as consultas ocorrem em tempo real durante uma invocação, o que permite estender catálogos de produtos, postagens em redes sociais e outros conteúdos atualizados com frequência; para o Google Assistente.
Atalhos dinâmicos:estendem um inventário de conteúdo personalizado do app. para o Google Assistente. Os atalhos dinâmicos permitem que os usuários reproduzam rapidamente ações, como pedir a bebida novamente em um aplicativo de pedidos de comida ou puxando uma lista de compras em um app de anotações.
Criar um inventário inline
O inventário inline simplifica o desenvolvimento porque oferece ao Google Assistente uma maneira prática de traduzir as diferentes maneiras como os usuários solicitam o conteúdo e os recursos do seu app nos identificadores previsíveis esperados pelo aplicativo. Para exemplo, suponha que seu aplicativo oferece diferentes treinos que os usuários podem começar a usar a voz deles, e seu aplicativo espera que os usuários façam as seguintes solicitações para o mesmo tipo de exercício:
- Ok Google, iniciar uma corrida no app de exemplo.
- Ok Google, comece uma corrida no app de exemplo.
No atalho do inventário inline, você define shortcutId
como "CARDIO_RUN"
.
o identificador de exercício esperado pelo app. Depois, você especifica "run" e
"correr" como sinônimos associados ao shortcutId
. Então, quando um usuário acionar
sua Ação no app com as consultas anteriores, o Google Assistente usa o identificador
"CARDIO_RUN"
para o parâmetro de BII ao gerar uma intent de fulfillment.
O snippet a seguir de um exemplo de arquivo app/res/shortcuts.xml
implementa
neste caso:
<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>
Na amostra anterior, o inventário inline shortcut
declara uma tag <parameter-binding>
em um elemento <capability-binding>
, que o vincula ao parâmetro de BII exercise.name
definido no elemento
<capability>
.
O recurso de matriz de strings @array/run_names
especifica uma lista de sinônimos em
res/values/arrays.xml
que o Google Assistente reconhecer e mapear para o
ID do item "CARDIO_RUN"
:
<!-- 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>
Quando um <url-template>
é fornecido para o capability, o shortcutId
do
um valor correspondente é inserido no URL gerado no momento
marcador de posição do parâmetro. O código de um exemplo a seguir
O arquivo app/res/shortcuts.xml
implementa este caso:
<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>
No exemplo anterior, o Google Assistente gera o link direto de fulfillment
myapp://workout?exercise=CARDIO_RUN
:
Fulfillment usando intents de atalhos
Por padrão, um atalho fornece o shortcutId
do valor de um inventário
inline correspondente à intent
do capability
a que o atalho é vinculado, conforme declarado
na tag <capability-binding>
do atalho. Como outra opção,
é possível especificar que uma intent
definida no próprio atalho seja usada para
fulfillment adicionando uma tag <shortcut-fulfillment>
ao capability
.
O código a seguir de um exemplo de arquivo app/res/shortcuts.xml
implementa
fulfillment de atalho:
<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>
No exemplo anterior, se a consulta do usuário corresponder a um valor de inventário inline
para o parâmetro exercise.name
, a tag <shortcut-fulfillment>
especifica que o intent
do atalho vinculado é usado para fulfillment.
Inventário inline para BIIs de recurso de apps abertos
Embora o inventário inline seja, geralmente, um recurso opcional para
as BIIs aceitas, ele é necessário para algumas BIIs, como OPEN_APP_FEATURE
. Isso
as BII usadas com frequência permitem que os usuários criem links diretos para recursos específicos do app
usando o Google Assistente.
A BII do recurso de app aberto exige um inventário inline de nomes de recursos do app para
verificar se existe um recurso solicitado pelo usuário antes de criar um link direto para
seu app.
O código a seguir de um exemplo de arquivo app/res/shortcuts.xml
implementa isso
BII com um único atalho que representa o recurso de status do pedido do app:
<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>
Os recursos da matriz de strings em res/values/arrays.xml
,
@array/order_status_names
, especifica uma lista de
sinônimos para este recurso:
<resources>
<string-array name="order_status_names">
<item>Order status</item>
<item>Orders</item>
<item>Order history</item>
</string-array>
</resources>
Com o recurso anterior em vigor, o Google Assistente pode fazer o fulfillment de várias frases para o mesmo recurso:
- "Ok Google, mostre o status do meu pedido no app de exemplo".
- "Ok Google, mostre meus pedidos no app de exemplo".
- "Ok Google, mostre meu histórico de pedidos no app de exemplo".
Testar inventários inline
Para testar o inventário, inspecione os valores de parâmetros das BIIs que o Google Assistente fornece ao
aplicativo para fazer o fulfillment dos recursos relevantes das Ações no app. Uma linha de comando
inventário funciona substituindo o valor fornecido pelo usuário de uma BII vinculada ao inventário
com o shortcutId
de um atalho de inventário inline correspondente.
Para
Por exemplo, um recurso de BII START_EXERCISE
pode usar um inventário inline para
traduza o parâmetro de BII "run" fornecido pelo usuário. ao exercício correspondente
ID, "CARDIO_RUN"
.
Com o plug-in do Google Assistente, você pode visualizar seu app de inventário inline. Ações no Google Assistente em um dispositivo de teste. Teste seu inventário usando o plug-in, seguindo estas etapas:
- Configure os parâmetros vinculados ao inventário do seu recurso de BIIs com valores de sinônimos associados ao inventário inline.
- Acione a BII do plug-in no dispositivo de teste fazendo a invocação dela.
- Inspecione os valores de parâmetros resultantes que o Google Assistente fornece ao seu aplicativo durante o fulfillment de Ações no app.