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

1. Обзор

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

В этой лаборатории кода рассматриваются концепции начального уровня разработки с помощью Actions SDK для Google Assistant; для ее завершения вам не нужен какой-либо предварительный опыт работы с платформой. В этой лаборатории кода вы создадите простое действие для Google Assistant, которое сообщает пользователям судьбу, когда они начинают свое приключение в мифической стране Гриффинберг. В кодовой лаборатории Actions SDK уровня 2 вы дорабатываете это действие, чтобы настроить судьбу пользователя на основе его ввода.

Что ты построишь

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

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

Когда вы закончите эту лабораторную работу, завершенное Действие будет иметь следующий диалоговый поток (текст рядом с микрофоном представляет ввод пользователя, а текст рядом с динамиком представляет собой ответ Действия):

1c1e79902bed7230.png

18ef55647b4cb52c.png

Что вы узнаете

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

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

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

  • IDE или текстовый редактор по вашему выбору
  • Терминал для запуска команд оболочки для Node.js и npm.
  • Веб-браузер, например Google Chrome.

2. Настройка

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

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

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

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

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

Создать проект действий

Ваш проект Actions — это контейнер для вашего Action.

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

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

8cd05a84c1c0a32f.png

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

Сохраните идентификатор проекта для своего действия.

Идентификатор проекта — это уникальный идентификатор вашего действия. Для выполнения нескольких шагов в этой лаборатории кода вам понадобится идентификатор проекта.

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

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

6f59050b85943073.png

  1. Скопируйте идентификатор проекта**.**

Свяжите платежный аккаунт

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

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

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

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

Установите интерфейс командной строки gactions

В этой лаборатории кода вы используете инструмент интерфейса командной строки (CLI) gactions для синхронизации проекта Actions между консолью Actions и локальной файловой системой.

Чтобы установить интерфейс командной строки gactions, следуйте инструкциям в разделе Установка инструмента командной строки gactions .

Загрузите проект Actions

Начните разработку своего действия, загрузив проект Actions из консоли Actions.

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

  1. Чтобы создать новый каталог и перейти в него, выполните следующие команды:
mkdir myproject
cd myproject
  1. Чтобы скопировать конфигурацию вашего проекта Actions в локальную файловую систему, выполните следующую команду:
gactions pull --project-id <projectID>

Понимание файловой структуры

Проект Actions, который вы загружаете из консоли Actions, представлен в файловой структуре YAML . На следующем изображении показано высокоуровневое представление файловой структуры:

2aefeeab7c8eb32f.png

Структура файла состоит из следующего:

  • actions/ : представляет ваш проект Actions. Система вызывает actions.yaml при вызове вашего Action, который затем вызывает файл custom/global/actions.intent.MAIN.yaml .
  • custom/ : каталог, в котором вы будете работать, чтобы изменить свое действие.
  • global/ : этот каталог содержит системные намерения , которые платформа автоматически добавляет в ваш проект. Вы узнаете больше о системных намерениях позже в этой лаборатории кода.
  • manifest.yaml : файл, который содержит информацию, которую можно переносить или не относится к какому-либо конкретному проекту и который можно перемещать между проектами.
  • settings/ : представляет настройки проекта Actions, такие как отображаемое имя, языковой стандарт по умолчанию и категория.

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

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

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

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

В следующем разделе вы настроите приглашение для основного вызова в файле custom/global/actions.intent.MAIN.yaml .

Настройка основного вызова

Вы можете изменить основное приглашение вызова в файле actions.intent.MAIN.yaml .

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

  1. Откройте custom/global/actions.intent.MAIN.yaml в текстовом редакторе.
  2. Замените текст в поле 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.

действия.намерение.MAIN.yaml

handler:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: 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.
transitionToScene: actions.scene.END_CONVERSATION
  1. Сохраните файл.

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

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

Когда вы вызываете свое действие, оно теперь должно отвечать добавленным вами индивидуальным приглашением ( «Чудесное приветствие, искатель приключений!...») .

Вы можете использовать команду gactions deploy preview , чтобы протестировать свое действие в консоли без обновления версии вашего проекта Actions. Когда вы запускаете эту команду, ни одно из изменений, внесенных вами в локальную файловую систему, не распространяется на развернутые версии вашего проекта Actions, но вы можете протестировать их в предварительной версии.

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

  1. Чтобы развернуть проект в консоли Actions для тестирования, выполните в терминале следующую команду:
gactions deploy preview

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

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. Скопируйте предоставленный URL-адрес и вставьте его в браузер.
  2. Чтобы вызвать действие в симуляторе, введите Talk to my test app в поле «Ввод» и нажмите Enter .

656f5736af6a5a07.png

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

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

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

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

a1b748d1fcebca80.png

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

  • userInput : соответствует вводу пользователя ( «Поговорите с моим тестовым приложением» )
  • 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. Последовательность типичного диалога в Action, созданном с помощью Actions SDK.

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

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

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

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

  1. Откройте custom/global/actions.intent.MAIN.yaml в текстовом редакторе.
  2. Замените текст в поле transitionToScene ( actions.scene.END_CONVERSATION ) на следующий: transitionToScene: Start

действия.намерение.MAIN.yaml

handler:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: 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.
transitionToScene: Start

Это сообщает вашему действию о переходе от основного вызова к Start сцене.

  1. Сохраните файл.
  2. В терминале создайте новый каталог scenes в custom каталоге:
mkdir custom/scenes 
  1. Создайте новый файл с именем Start.yaml в каталоге scenes , который представляет собой start сцену вашего действия:
touch custom/scenes/Start.yaml 
  1. Откройте Start.yaml в текстовом редакторе.
  2. Вставьте следующий код в файл Start.yaml :

Старт.yaml

onEnter:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: Before you continue on your quest, would you like your fortune
              told?

В коде файла Start.yaml есть поле onEnter , которое является первым этапом жизненного цикла сцены.

В этом случае подсказка ( Before you continue on your quest... ) добавляется в очередь подсказок, когда пользователь впервые входит в Start сцену.

Добавить чипы предложений

Чипы предложений предлагают пользователю интерактивные предложения, которые ваше действие обрабатывает как вводимые пользователем данные. В этом разделе вы добавляете фишки с предложениями Yes и No , которые появляются под только что настроенным приглашением ( Before you continue on your quest, would you like your fortune told? ) для поддержки пользователей на устройствах с экранами.

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

  1. Обновите код в Start.yaml , чтобы он соответствовал следующему фрагменту кода, который включает код для настройки чипов предложений:

Старт.yaml

onEnter:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: Before you continue on your quest, would you like your fortune
              told?
        suggestions:
        - title: "Yes"
        - title: "No"
  1. Сохраните файл.

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

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

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

  1. В терминале выполните следующую команду:
gactions deploy preview

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

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. Скопируйте предоставленный URL-адрес и вставьте его в браузер.
  2. Нажмите «Тест» , чтобы перейти к симулятору.
  3. Введите Talk to my test app в поле «Ввод» и нажмите Enter . Ваше действие должно отреагировать на Main invocation и добавленный запрос на Start сцену: «Прежде чем продолжить поиск, хотите ли вы, чтобы вам предсказали судьбу?» , с отображенными фишками предложений.

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

3c2013ebb2da886a.png

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

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

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

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

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

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

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

  1. В терминале создайте новый каталог с именем intents в custom каталоге:
mkdir custom/intents 
  1. Создайте новый файл с именем yes.yaml в каталоге intents :
touch custom/intents/yes.yaml
  1. Откройте yes.yaml в текстовом редакторе.
  2. Вставьте следующий фрагмент кода, содержащий обучающие фразы, в yes.yaml :

да.yaml

trainingPhrases:
- of course
- let's do it
- ok
- sure
- "y"
- "yes"
  1. Сохраните файл.

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

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

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

  1. Откройте custom/scenes/Start.yaml в текстовом редакторе.
  2. Добавьте обработчик intentEvents и yes в конец файла Start.yaml :

Старт.yaml

intentEvents:
- handler:
    staticPrompt:
      candidates:
      - promptResponse:
          firstSimple:
            variants:
            - speech: Your future depends on the item you choose to use for your quest. Choose wisely! Farewell, stranger.
  intent: "yes"
  transitionToScene: actions.scene.END_CONVERSATION

Когда намерение yes соответствует, в очередь подсказок добавляется подсказка «Ваше будущее зависит от предмета, который вы решите использовать для своего квеста...» . Затем сцена Start переходит в системную сцену actions.scene.END_CONVERSATION , которая доставляет подсказки в очередь подсказок и завершает диалог.

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

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

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

  1. В терминале выполните следующую команду:
gactions deploy preview

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

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. Скопируйте предоставленный URL-адрес и вставьте его в браузер.
  2. Нажмите «Тест» , чтобы перейти к симулятору.
  3. Чтобы протестировать свое действие в симуляторе, введите Talk to my test app в поле «Ввод» и нажмите Enter .
  4. Введите Yes в поле ввода и нажмите Enter . Либо нажмите кнопку «Да» .

f131998710d8ffd8.png

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

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

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

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

  1. В терминале создайте новый файл с именем no.yaml в каталоге intents :
touch custom/intents/no.yaml
  1. Откройте no.yaml в текстовом редакторе.
  2. Вставьте следующие обучающие фразы в файл no.yaml :

нет.yaml

trainingPhrases:
- nope
- I don't want
- "n"
- "no"
- nah
- no thanks
  1. Сохраните файл.

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

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

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

  1. Откройте custom/scenes/Start.yaml в текстовом редакторе.
  2. Добавьте следующий обработчик no под обработчиком yes в Start.yaml :

Старт.yaml

- handler:
    staticPrompt:
      candidates:
      - promptResponse:
          firstSimple:
            variants:
            - speech: I understand, stranger. Best of luck on your quest! Farewell.
  intent: "no"
  transitionToScene: actions.scene.END_CONVERSATION
  1. Сохраните файл.

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

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

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

  1. В терминале выполните следующую команду:
gactions deploy preview

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

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. Скопируйте предоставленный URL-адрес и вставьте его в браузер.
  2. Нажмите «Тест» , чтобы перейти к симулятору.
  3. Введите Talk to my test app в поле «Ввод» и нажмите Enter .
  4. Введите No в поле ввода и нажмите Enter . Либо нажмите кнопку No предложений».

c0c8b04066577eb2.png

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

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

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

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

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

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

Постройте свое удовлетворение

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

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

  1. В терминале убедитесь, что вы находитесь в корневом каталоге вашего проекта, и создайте новый каталог webhooks :
mkdir webhooks 
  1. Создайте новый файл ActionsOnGoogleFulfillment.yaml в каталоге webhooks :
touch webhooks/ActionsOnGoogleFulfillment.yaml
  1. Откройте ActionsOnGoogleFulfillment.yaml в текстовом редакторе.
  2. Добавьте обработчик greeting и содержимое inlineCloudFunction в файл ActionsOnGoogleFulfillment.yaml :

ДействияOnGoogleFulfillment.yaml

handlers:
- name: greeting
inlineCloudFunction:
  executeFunction: ActionsOnGoogleFulfillment

Файл ActionsOnGoogleFulfillment.yaml определяет ваши обработчики веб-перехватчиков (например, обработчик greeting ) и сообщает вашему действию использовать облачные функции в качестве конечной точки веб-перехватчика.

  1. Создайте новый каталог ActionsOnGoogleFulfillment в каталоге webhooks :
mkdir webhooks/ActionsOnGoogleFulfillment
  1. Создайте новый файл index.js в каталоге ActionsOnGoogleFulfillment :
touch webhooks/ActionsOnGoogleFulfillment/index.js
  1. Откройте index.js в текстовом редакторе.
  2. Добавьте следующий код в 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);

Этот код определяет обработчик greeting , который отправляет соответствующее приветствие в

пользователь.

  1. Сохраните файл.
  2. Создайте новый файл package.json в каталоге ActionsOnGoogleFulfillment :
touch webhooks/ActionsOnGoogleFulfillment/package.json

Файл package.json определяет зависимости и другие метаданные для вашего веб-перехватчика.

  1. Откройте package.json в текстовом редакторе.
  2. Скопируйте код из этого репозитория GitHub и вставьте его в файл package.json .
  3. Сохраните файл.

Разобраться в коде

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

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

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

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

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

  1. Откройте custom/global/actions.intent.MAIN.yaml в текстовом редакторе.
  2. Замените код в actions.intent.MAIN.yaml следующим кодом:

действия.намерение.MAIN.yaml

handler:
  webhookHandler: greeting
transitionToScene: Start
  1. Сохраните файл.

Теперь, когда ваше основное намерение вызова совпадает, вызывается обработчик веб-перехватчика greeting .

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

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

  1. В терминале выполните следующую команду:
gactions deploy preview

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

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. Скопируйте предоставленный URL-адрес и вставьте его в браузер.
  2. Чтобы протестировать свое действие в симуляторе, введите Talk to my test app в поле «Ввод» и нажмите Enter .

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

6. Визуализируйте действие с помощью Action Builder

Actions SDK совместим с веб-IDE Actions Builder , интегрированной в консоль Actions. Вы можете перенести свою локальную файловую систему в черновик вашего действия в консоли с помощью команды gactions push . В отличие от gactions deploy preview , который позволяет вам протестировать свое действие только в симуляторе, gactions push перемещает весь контент из ваших локальных файлов в Actions Builder.

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

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

  1. В терминале выполните следующую команду, чтобы отправить проект на консоль действий:
gactions push

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

✔ Done. Files were pushed to Actions Console, and you can now view your project with this URL: https://console.actions.google.com/project/{project-id}/overview. If you want to test your changes, run "gactions deploy preview", or navigate to the Test section in the Console.
  1. Скопируйте предоставленный URL-адрес и вставьте его в браузер.
  2. В консоли «Действия» нажмите «Разработка» на верхней панели навигации.
  3. Нажмите стрелку раскрывающегося списка рядом с пунктом «Сцены» и нажмите «Пуск» . Вы должны увидеть визуальное представление сцены Start вашего действия, как показано на следующем снимке экрана:

332404b148609e96.png

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

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

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

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

Вы знаете основы создания действий для Google Assistant с помощью Actions SDK.

Что вы покрыли

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

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

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

Следите за новостями @ActionsOnGoogle в Твиттере и пишите в Твиттере с хэштегом #AoGDevs , чтобы поделиться тем, что вы создаете!

Опрос обратной связи

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