Создайте действия для Google Assistant с помощью Actions Builder (уровень 1).

1. Обзор

Платформа для разработчиков Google Assistant позволяет создавать программное обеспечение, расширяющее функциональность Google Assistant, виртуального персонального помощника, на более чем миллиарде устройств, включая умные колонки, телефоны, автомобили, телевизоры, наушники и многое другое. Пользователи взаимодействуют с Assistant для выполнения различных задач, например, покупки продуктов или заказа такси. Как разработчик, вы можете использовать платформу для разработчиков Assistant, чтобы легко создавать и поддерживать увлекательные и эффективные диалоги между пользователями и вашим сторонним сервисом обработки заказов.

В этой лабораторной работе рассматриваются базовые концепции разработки с использованием Google Ассистента; для её выполнения не требуется никакого предварительного опыта работы с платформой. В этой лабораторной работе вы создадите простое действие для Google Ассистента, которое предсказывает пользователям их судьбу в начале их приключения в мифической стране Гриффинберг. В лабораторной работе уровня 2 «Конструктор действий» вы доработаете это действие, чтобы настроить судьбу пользователя в зависимости от его действий.

Что вы построите

В этой лабораторной работе вы создадите простое действие со следующими функциями:

  • Отвечает пользователям приветственным сообщением
  • Задаёт пользователю вопрос. Когда пользователь отвечает, ваше действие реагирует соответствующим образом на выбор пользователя.
  • Предоставляет подсказки, на которые пользователи могут нажать, чтобы внести свой вклад.
  • Изменяет приветственное сообщение для пользователя в зависимости от того, является ли он постоянным пользователем.

После завершения этой лабораторной работы ваше готовое действие будет иметь следующий диалоговый поток:

1c1e79902bed7230.png

18ef55647b4cb52c.png

Чему вы научитесь

  • Как создать проект в консоли действий
  • Как отправить пользователю подсказку после того, как он выполнит ваше действие
  • Как обработать ввод пользователя и вернуть ответ
  • Как протестировать свое действие в симуляторе действий
  • Как реализовать выполнение с помощью редактора Cloud Functions

Что вам понадобится

В вашей среде должны быть следующие инструменты:

2. Настройка

В следующих разделах описывается, как настроить среду разработки и создать проект Actions.

Проверьте настройки разрешений Google.

Чтобы протестировать действие, которое вы создадите в этой лабораторной работе, вам необходимо включить необходимые разрешения, чтобы симулятор мог получить к нему доступ. Чтобы включить разрешения, выполните следующие действия:

  1. Перейдите на страницу «Управление активностью» .
  2. Если вы еще этого не сделали, войдите в свою учетную запись Google.
  3. Включите следующие разрешения:
  • Активность в Интернете и приложениях
  • В разделе «История приложений и веб-поиска» установите флажок «Включить историю Chrome и активность с сайтов, из приложений и с устройств, использующих сервисы Google» .

Создать проект «Действия»

Ваш проект Actions — это контейнер для вашего Action. Чтобы создать проект Actions для этой лабораторной работы, выполните следующие действия:

  1. Откройте консоль действий .
  2. Нажмите «Новый проект» .
  3. Введите название проекта , например, actions-codelab . (Название предназначено для вашего внутреннего использования. Позже вы сможете задать внешнее название для своего проекта.)

8cd05a84c1c0a32f.png

  1. Нажмите Создать проект .
  2. На экране «Какое действие вы хотите создать?» выберите карту «Пользовательская» .
  3. Нажмите кнопку «Далее» .
  4. Выберите пустую карточку проекта .
  5. Нажмите «Начать строительство» .

Привязать платежный аккаунт

Чтобы позже развернуть выполнение заказов в этой лабораторной работе с использованием Cloud Functions, вам необходимо связать платежный аккаунт с вашим проектом в Google Cloud.

Если вы еще не связали платежный аккаунт со своим проектом, выполните следующие действия:

  1. Перейдите на страницу выставления счетов Google Cloud Platform .
  2. Нажмите Добавить платежный аккаунт или Создать аккаунт .
  3. Введите платежную информацию.
  4. Нажмите «Начать бесплатную пробную версию» или «Отправить и включить выставление счетов» .
  5. Перейдите на страницу выставления счетов Google Cloud Platform .
  6. Откройте вкладку «Мои проекты» .
  7. Нажмите на три точки в разделе «Действия» рядом с проектом «Действия» для кодовой лаборатории.
  8. Нажмите Изменить платежную информацию .
  9. В раскрывающемся меню выберите настроенный вами платёжный счёт. Нажмите «Настроить счёт» .

Чтобы избежать дополнительных расходов, следуйте инструкциям в разделе «Очистка проекта» в конце этой практической работы.

3. Начните разговор

Пользователи начинают диалог с вашим действием через вызов . Например, если у вас есть действие с именем MovieTime , пользователи могут вызвать его, произнеся фразу вроде «Окей, Google, поговори с MovieTime» , где MovieTimeотображаемое имя. Если вы хотите развернуть действие в рабочей среде, у него должно быть отображаемое имя; однако для тестирования действия отображаемое имя указывать не нужно. Вместо этого вы можете использовать фразу «Поговори с моим тестовым приложением» в симуляторе для вызова действия.

Вам необходимо отредактировать основной вызов , чтобы определить, что произойдет после того, как пользователь вызовет ваше действие.

По умолчанию Actions Builder выводит общую подсказку при запуске вызова ( «Начните создание своего действия, определив основной вызов»).

В следующем разделе вы настроите приглашение для основного вызова в консоли действий.

Настроить основной вызов

Чтобы изменить подсказку, которую ваше действие отправляет пользователю при вызове вашего действия, выполните следующие действия:

  1. Нажмите «Основной вызов» на панели навигации.

966d037e1d7914df.png

  1. В редакторе кода замените текст в поле speech ( Start building your action... ) следующим приветственным сообщением A wondrous greeting, adventurer! Welcome to the mythical land of Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you're on your way to an epic journey.
  1. Нажмите «Сохранить» .

Протестируйте основной вызов в симуляторе

Консоль действий предоставляет веб-инструмент для тестирования действий, называемый симулятором . Интерфейс имитирует аппаратные устройства и их настройки, поэтому вы можете взаимодействовать с действием так, как если бы оно работало на смарт-дисплее, телефоне, колонке или KaiOS.

Теперь при вызове вашего действия оно должно отвечать добавленной вами персонализированной подсказкой ( "A wondrous greeting, adventurer!..." ).

Чтобы протестировать основной вызов вашего действия в симуляторе, выполните следующие действия:

  1. На верхней панели навигации нажмите Тест , чтобы перейти к симулятору.
  2. Чтобы вызвать действие в симуляторе, введите Talk to my test app в поле ввода и нажмите Enter .

656f5736af6a5a07.png

При запуске основного действия Помощник отвечает вашим персонализированным приветственным сообщением. В этот момент диалог завершается, и Помощник отвечает приветственным сообщением. В следующем разделе вы изменяете действие, чтобы диалог продолжался.

Просмотр журналов событий

На вкладке «Тест» на панели справа отображаются журналы событий , в которых история разговора отображается в виде журналов событий. В каждом журнале событий отображаются события, произошедшие в течение данного этапа разговора.

В настоящее время у вашего действия есть один журнал событий, в котором отображаются как ввод пользователя ( "Talk to my test app" ), так и ответ вашего действия. На следующем снимке экрана показан журнал событий вашего действия:

443129bdcbecc593.png

Если нажать на стрелку вниз в журнале событий, можно увидеть события, расположенные в хронологическом порядке, которые произошли на данном этапе разговора:

  • userInput : Соответствует вводу пользователя ( "Talk to my test app" ).
  • interactionMatch : Соответствует основному ответу вызова вашего действия, вызванному вводом пользователя. Если развернуть эту строку, щёлкнув по стрелке, можно увидеть подсказку, добавленную для основного вызова ( A wondrous greeting, adventurer!... ).
  • endConversation : соответствует выбранному переходу в Main invocation , которое в данный момент завершает диалог. (Подробнее о переходах вы узнаете в следующем разделе этой практической работы.)

Журналы событий позволяют отслеживать работу вашего действия и являются полезными инструментами для отладки действия в случае возникновения проблем. Чтобы просмотреть подробную информацию о событии, нажмите на стрелку рядом с его названием, как показано на следующем снимке экрана:

fcc389b59af5bef1.png

4. Создайте диалог вашего действия.

Теперь, когда вы определили, что происходит после того, как пользователь активирует ваше действие, вы можете построить остальную часть диалога вашего действия. Прежде чем продолжить работу с этой лабораторной работой, ознакомьтесь со следующими терминами, чтобы понять, как работает диалог вашего действия:

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

Например, представьте себе гипотетическое действие, которое предоставляет пользователю информацию о животных. Когда пользователь вызывает это действие, срабатывает намерение Main invocation и запускается переход к сцене с названием Facts . Этот переход активирует сцену Facts , которая отправляет пользователю следующее приглашение: Would you like to hear a fact about cats or dogs? В сцене Facts находится намерение пользователя Cat , которое содержит обучающие фразы, которые пользователь может произнести, чтобы услышать факт о кошках, например , «Я хочу услышать факт о кошках» или «кошка» . Когда пользователь просит услышать факт о кошках, срабатывает намерение Cat и запускается переход к сцене с названием Cat fact . Сцена Cat fact активируется и отправляет пользователю приглашение, включающее факт о кошках.

a78f549c90c3bff6.png

Рисунок 1. Поток типичного разговора в действии, созданном с помощью Actions Builder

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

Переход от основного призыва к сцене

В этом разделе вы создаёте новую сцену под названием Start , которая отправляет пользователю запрос на предсказание судьбы. Вы также добавляете переход от основного вызова к новой сцене Start .

Чтобы создать эту сцену и добавить к ней переход, выполните следующие действия:

  1. Нажмите «Разработать» на панели навигации.
  2. Нажмите «Основной вызов» на боковой панели навигации.
  3. В разделе «Переход» щелкните раскрывающееся меню и введите Start в текстовом поле.

29e12dff950a3bce.png

  1. Нажмите кнопку «Добавить» . Это создаст сцену « Start » и предложит действию перейти к сцене Start после того, как действие отобразит пользователю приветственное сообщение.
  2. Нажмите «Сцены» на боковой панели навигации, чтобы отобразить список сцен.
  3. В разделе «Сцены» нажмите «Пуск» , чтобы увидеть Start сцену.
  4. Нажмите + в разделе «При входе» Start сцены.
  5. Выберите Отправить подсказки .
  6. Замените предложение в поле speech ( Enter the response that users will see or hear... ) вопросом, который следует задать пользователю: Before you continue on your quest, would you like your fortune told?

3fc95466efd476f.png

  1. Нажмите «Сохранить».

Google Assistant выводит эту подсказку ( Before you continue on your quest... ) пользователю при переходе на Start сцену.

Добавить фишки предложений

Чипы подсказок предлагают пользователю кликабельные подсказки, которые ваше действие обрабатывает как пользовательский ввод. В этом разделе вы добавите чипы подсказок для поддержки пользователей устройств с экранами.

Чтобы добавить фишки подсказок в подсказку Start сцены, выполните следующие действия:

  1. На Start сцене нажмите «Предложения» . Это действие добавит один чип с предложением.
  2. В поле title замените Suggested Response на 'Yes' .
  3. Используя то же форматирование, вручную добавьте чип подсказки с заголовком 'No' . Ваш код должен выглядеть следующим образом:
    suggestions:
      - title: 'Yes'
      - title: 'No'
  1. Нажмите «Сохранить» .

2d13c2ada791ec26.png

Проверьте свои действия в симуляторе

На этом этапе ваше действие должно перейти от основного вызова к Start сцене и спросить пользователя, хочет ли он узнать своё будущее. На смоделированном экране также должны появиться фишки с предложениями.

Чтобы протестировать свое действие в симуляторе, выполните следующие действия:

  1. На панели навигации нажмите «Тест» , чтобы перейти к симулятору.
  2. Чтобы протестировать действие в симуляторе, введите Talk to my test app в поле ввода и нажмите Enter . Действие должно отобразить Main invocation и добавленную подсказку Start сцены: "Before you continue on your quest, would you like your fortune told?" .

На следующем снимке экрана показано это взаимодействие:

3c2013ebb2da886a.png

  1. Нажмите на значок Yes или No , чтобы ответить на запрос. (Вы также можете сказать «Да» или «Нет» или ввести Yes или No в поле ввода .)

При ответе на запрос ваше действие выдаёт сообщение о том, что оно не может распознать ваш ввод: «Извините, я не расслышал. Попробуйте ещё раз?» Поскольку вы ещё не настроили своё действие на распознавание и реагирование на ввод «Да» или «Нет» , ваше действие сопоставляет ваш ввод с намерением NO_MATCH .

По умолчанию системное намерение NO_MATCH выдаёт стандартные ответы, но вы можете настроить эти ответы, чтобы показать пользователю, что вы не поняли его ввод. Помощник завершает диалог пользователя с вашим действием после трёх неудачных попыток сопоставить вводимые пользователем данные.

Добавьте намерения yes и no

Теперь, когда пользователи могут отвечать на вопросы, заданные вашим действием, вы можете настроить действие так, чтобы оно распознавало ответы пользователей ( «Да» или «Нет» ). В следующих разделах вы создадите пользовательские намерения, которые срабатывают при ответе пользователя «Да» или «Нет» , и добавите эти намерения в Start сцену.

Создайте намерение yes

Чтобы создать намерение yes , выполните следующие действия:

  1. Нажмите «Разработать» на панели навигации.
  2. Нажмите «Пользовательские намерения» на панели навигации, чтобы открыть список намерений.
  3. Нажмите + (знак плюс) в конце списка намерений.
  4. Назовите новое намерение yes и нажмите Enter .
  5. Нажмите yes », чтобы открыть страницу с намерением yes .
  6. В разделе Добавить обучающие фразы щелкните текстовое поле Введите фразу и введите следующие фразы:
  • Yes
  • Y
  • I would
  • Tell me

98440276cb9e7de8.png

  1. Нажмите «Сохранить» .

Добавить намерение yes в Start сцену

Теперь действие может распознавать, когда пользователь выражает намерение «да» . Вы можете добавить намерение yes в сцену Start , поскольку пользователь отвечает на подсказку StartПрежде чем продолжить поиски, хотите ли вы, чтобы вам предсказали судьбу?» ).

Чтобы добавить это намерение пользователя в Start сцену, выполните следующие действия:

  1. Нажмите « Начальная сцена» на панели навигации.
  2. Нажмите на знак + (плюс) на Start сцене рядом с пунктом Обработка намерений пользователя.
  3. В раскрывающемся меню намерений выберите «Да» .

681928e3d71abdbf.png

  1. Нажмите «Отправить подсказки» и обновите поле speech следующим текстом: Your future depends on the aid you choose to use for your quest. Choose wisely! Farewell, stranger.

Код в вашем редакторе должен выглядеть как следующий фрагмент:

candidates:
  - first_simple:
      variants:
        - speech: >-
            Your future depends on the aid you choose to use for your quest. Choose
            wisely! Farewell, stranger.
  1. В разделе «Переход» нажмите на раскрывающееся меню и выберите «Завершить разговор» .
  2. Нажмите «Сохранить» .

Тест yes намерения в симуляторе

На этом этапе ваше действие понимает, когда пользователь хочет услышать свою судьбу, и возвращает соответствующий ответ.

Чтобы проверить это намерение в симуляторе, выполните следующие действия:

  1. На панели навигации нажмите Тест .
  2. Чтобы протестировать свое действие в симуляторе, введите Talk to my test app в поле ввода и нажмите Enter .
  3. Введите Yes в поле ввода и нажмите Enter . Также можно нажать на значок с предложением «Да» .

f131998710d8ffd8.png

Ваше действие отвечает пользователю и сообщает ему, что его судьба зависит от выбранной им помощи. Затем ваше действие завершает сеанс, поскольку вы выбрали переход End conversation для намерения yes .

no создавать намерений

Теперь вам нужно создать намерение no , чтобы понимать и реагировать на пользователя, когда он не хочет слышать свою судьбу. Чтобы создать это намерение, выполните следующие действия:

  1. Нажмите «Разработать» на панели навигации.
  2. Нажмите «Пользовательские намерения» на панели навигации, чтобы открыть список намерений.
  3. Нажмите + (знак плюс) в конце списка намерений.
  4. Назовите новый no намерения и нажмите Enter .
  5. Нажмите «Нет» , чтобы открыть страницу ** no ** намерений .
  6. В разделе Добавить обучающие фразы щелкните текстовое поле Введите фразу и введите следующие фразы:
  • No
  • N
  • I don't want
  • nope

2e7b8fd57eac94c5.png

  1. Нажмите «Сохранить» .

no добавлять намерение в Start сцену

Теперь действие может распознавать, когда пользователь выражает «нет» или что-то похожее на «нет» , например, «нет» . Вам необходимо добавить намерение no пользователя» в сцену Start , поскольку пользователь отвечает на подсказку StartПрежде чем продолжить поиски, хотите ли вы, чтобы вам поведали судьбу?» ).

Чтобы добавить это намерение для Start сцены, выполните следующие действия:

  1. Нажмите « Начальная сцена» на панели навигации.
  2. Нажмите на знак + (плюс) на Start сцене рядом с пунктом Обработка намерений пользователя .
  3. В разделе «Намерение» в раскрывающемся меню выберите «Нет» .

4aa558abdecb3121.png

  1. Нажмите Отправить подсказки .
  2. Обновите поле speech следующим текстом: I understand, stranger. Best of luck on your quest! Farewell.

Код в вашем редакторе должен выглядеть как следующий фрагмент:

 candidates:
  - first_simple:
      variants:
        - speech: >-
             I understand, stranger. Best of luck on your quest! Farewell.
  1. В разделе «Переход» выберите в раскрывающемся меню пункт «Завершить беседу» .
  2. Нажмите «Сохранить» .

Тестирование no намерений в симуляторе

На этом этапе ваше действие понимает, когда пользователь не хочет слышать свою судьбу, и возвращает соответствующий ответ.

Чтобы проверить это намерение в симуляторе, выполните следующие действия:

  1. На панели навигации нажмите Тест .
  2. Введите Talk to my test app в поле ввода и нажмите Enter .
  3. Введите No в поле ввода и нажмите Enter . Также можно нажать на значок «Нет предложений».

c0c8b04066577eb2.png

Вместо того, чтобы подарить пользователю удачу, ваше действие желает ему удачи в путешествии. Затем ваше действие завершает сеанс, поскольку вы выбрали переход End conversation для no намерения.

5. Реализовать выполнение

В настоящее время ответы вашего действия статичны: при активации сцены, содержащей подсказку, ваше действие каждый раз отправляет одну и ту же подсказку. В этом разделе мы реализуем механизм выполнения , содержащий логику для построения динамического диалогового ответа.

Ваше выполнение определяет, является ли пользователь вернувшимся или новым, и изменяет приветственное сообщение действия для вернувшихся пользователей. Для вернувшихся пользователей приветственное сообщение сокращается и подтверждает возвращение пользователя: « Чудесное приветствие, искатель приключений! Добро пожаловать обратно в мифическую страну Гриффинберг!»

Для этой лабораторной работы используйте редактор Cloud Functions в консоли действий, чтобы отредактировать и развернуть код выполнения.

Ваше действие может активировать веб-хуки , которые уведомляют ваше выполнение о событии, происходящем во время вызова или определенных этапов выполнения сцены. При срабатывании веб-хука ваше действие отправляет вашему выполнению запрос с полезными данными JSON вместе с именем обработчика, который будет использоваться для обработки события. Этот обработчик выполняет определённую логику и возвращает соответствующий JSON-ответ.

Создайте свою реализацию

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

Чтобы добавить эту логику в свою реализацию, выполните следующие действия:

  1. Нажмите «Разработать» на панели навигации.
  2. Нажмите вкладку Webhook на панели навигации.
  3. Установите флажок Встроенные облачные функции .
  4. Нажмите «Подтвердить» . Шаблонный код будет автоматически добавлен в файлы index.js и package.json .

d4702f1de6404285.png

  1. Замените содержимое index.js следующим кодом:

index.js

const { conversation } = require('@assistant/conversation');
const functions = require('firebase-functions');

const app = conversation({debug: true});

app.handle('greeting', conv => {
 let message = 'A wondrous greeting, adventurer! Welcome back to the mythical land of Gryffinberg!';
 if (!conv.user.lastSeenTime) {
   message = 'Welcome to the mythical land of  Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you\'re on your way to an epic journey.';
 }
 conv.add(message);
});


exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);
  1. Нажмите «Сохранить выполнение» .
  2. Нажмите Развернуть выполнение .

Подождите пару минут, пока Cloud Functions подготовит и развернет ваш запрос. Над редактором кода должно появиться сообщение « Развертывание Cloud Function в процессе...» . После успешного развёртывания кода сообщение изменится на «Ваше развёртывание Cloud Function актуально» .

Понять код

Ваш заказ, использующий библиотеку Actions on Google Fulfillment для Node.js , отвечает на HTTP-запросы от Google Assistant.

В предыдущем фрагменте кода вы определяете обработчик greeting , который проверяет, посещал ли пользователь ранее действие, проверяя свойство lastSeenTime . Если lastSeenTime не определено, пользователь новый, и обработчик greeting выводит приветствие нового пользователя.

Обновить основной вызов для активации веб-перехватчика

Теперь, когда вы определили функцию greeting , вы можете настроить обработчик событий greeting в вашем основном намерении вызова, чтобы ваше действие знало, что нужно вызвать эту функцию, когда пользователь вызывает ваше действие.

Чтобы настроить действие для вызова нового обработчика greeting , выполните следующие действия:

  1. Нажмите «Основной вызов» на панели навигации.
  2. Очистить запрос на отправку .
  3. Установите флажок Вызвать свой вебхук .
  4. Добавьте greeting в текстовое поле.

a803afe4f7375a97.png

  1. Нажмите «Сохранить» .

Тестирование обновленного основного вызова в симуляторе

Чтобы протестировать свое действие в симуляторе, выполните следующие действия:

  1. На панели навигации нажмите «Тест» , чтобы перейти к симулятору.
  2. Введите Talk to my test app в поле ввода и нажмите Enter .

Поскольку вы уже тестировали свое действие ранее в этой лабораторной работе, вы не новый пользователь, поэтому вы получите следующее сокращённое приветствие: « Чудесное приветствие, искатель приключений! Добро пожаловать обратно в мифическую страну Гриффинберг!...»

Очистите свой проект [рекомендуется]

Во избежание возможных расходов рекомендуется удалить проекты, которые вы не планируете использовать. Чтобы удалить проекты, созданные в этой лабораторной работе, выполните следующие действия:

  1. Чтобы удалить облачный проект и ресурсы, выполните действия, указанные в разделе Завершение работы (удаление) проектов .
  1. Необязательно: чтобы немедленно удалить проект из консоли «Действия», выполните действия, указанные в разделе «Удаление проекта» . Если вы не выполните этот шаг, ваш проект будет автоматически удалён примерно через 30 дней.

6. Поздравляем!

Вы знакомы с основами создания действий для Google Assistant.

Что вы охватили

  • Как настроить проект Actions с помощью консоли Actions
  • Как добавить подсказку к основному вызову, чтобы пользователи могли начать диалог с вашим действием
  • Как создать диалоговый интерфейс со сценами, намерениями, переходами, предложениями и исполнением
  • Как протестировать свое действие с помощью симулятора действий

Узнать больше

Изучите следующие ресурсы, чтобы узнать больше о создании действий для Google Assistant:

Опрос отзывов

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