Общий доступ к Ассистенту

Пользователи телефонов Android могут попросить Google Ассистента поделиться контентом приложения с другим пользователем, используя голосовую команду, например "Окей, Google, отправь это Жене". В зависимости от системных настроек первого пользователя Ассистент может добавить в контент текст с экрана или скриншот устройства.

Помощник вставляет выбранную фотографию в сообщение по запросу.
Рисунок 1. Ассистент делится фотографией с контактом.

Такого способа часто бывает достаточно, но пользователи, которые получают контент из вашего приложения, могут не заходить в него, чтобы посмотреть этот контент. Вы можете предоставить Ассистенту структурированную информацию о текущем контенте на переднем плане, реализовав метод onProvideAssistContent().

Этот процесс помогает поддерживать структуру данных, когда они передаются другому пользователю. Пользователи, которым отправляют контент из приложения, могут переходить по ссылкам на контент или получать его напрямую, а не в виде текста или скриншота.

Реализуйте onProvideAssistContent() для любого объекта entity, которым можно поделиться.

Предоставление контента Ассистенту

Вам нужно реализовать onProvideAssistContent() только для последнего действия в приложении в последовательности задач пользователя после вызова действия в приложении. Например, в процессе GET_ITEM_LIST реализуйте метод на последнем экране, где показывается список товаров. На промежуточных экранах и экранах предварительного просмотра этого делать не нужно.

Предоставьте контекстную информацию в виде объекта JSON-LD, используя словарь schema.org в поле structuredData объекта AssistContent. В следующем фрагменте кода показан пример регистрации контекстного контента:

Kotlin
override fun onProvideAssistContent(outContent: AssistContent) {
    super.onProvideAssistContent(outContent)

    // JSON-LD object based on Schema.org structured data
    outContent.structuredData = JSONObject()
            .put("@type", "ItemList")
            .put("name", "My Work items")
            .put("url", "https://my-notes-and-lists.com/lists/12345a")
            .toString()
}
      
Java
@Override
public void onProvideAssistContent(AssistContent outContent) {
  super.onProvideAssistContent(outContent);

  // JSON-LD object based on Schema.org structured data
  outContent.structuredData = new JSONObject()
          .put("@type", "ItemList")
          .put("name", "My Work items")
          .put("url", "https://my-notes-and-lists.com/lists/12345a")
          .toString();
}
      

Предоставьте как можно больше данных о каждом объекте entity. Обязательные поля:

  • @type
  • .name
  • .url (обязательно, только если контент доступен по URL)

Дополнительную информацию об использовании onProvideAssistContent() можно найти в руководстве Оптимизация контекстного контента для Ассистента.