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

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

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

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

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

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

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

1c1e79902bed7230.png

18ef55647b4cb52c.png

Что ты узнаешь

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

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

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

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

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

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

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

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

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

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

Ваш проект Действия - это контейнер для вашего Действия.

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

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

8cd05a84c1c0a32f.png

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

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

ID проекта - это уникальный идентификатор вашего действия. Вам понадобится ваш Project ID для нескольких шагов в этой кодовой таблице.

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

  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

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

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

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

Понять файловую структуру

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

2aefeeab7c8eb32f.png

Файловая структура состоит из следующего:

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

Пользователи начинают беседу с вашего действия посредством вызова . Например, если у вас есть действие с именем 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.

actions.intent.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. Сохраните файл.

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

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

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

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

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

  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 .

656f5736af6a5a07.png

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

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

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

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

a1b748d1fcebca80.png

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

  • userInput : соответствует вводу пользователя ( «Поговорите с моим тестовым приложением» ).
  • interactionMatch : соответствует основному ответу на вызов вашего действия, который был инициирован вводом пользователя. Если вы развернете эту строку, щелкнув стрелку, вы увидите подсказку, которую вы добавили для основного вызова ( A wondrous greeting, adventurer!... )
  • endConversation : соответствует выбранному переходу в основном намерении Main invocation , который в настоящее время завершает диалог. Вы узнаете больше о переходах в следующем разделе этой лаборатории кода.

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

fcc389b59af5bef1.png

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

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

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

actions.intent.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 :

Start.yaml

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

В Start.yaml файла 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 чтобы он соответствовал следующему фрагменту кода, который включает код для настройки микросхем Start.yaml :

Start.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 подсказкой 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 :

да. ямл

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

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

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

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

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

Start.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 намерения « 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 :

нет. ямл

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

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

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

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

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

Start.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 намерения.

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

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

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

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

Создайте свое удовлетворение

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

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

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

ActionsOnGoogleFulfillment.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 , который проверяет, посещал ли пользователь ранее Action с lastSeenTime свойства lastSeenTime . Если свойство lastSeenTime не определено, пользователь является новым и получает приветствие, предназначенное для новых пользователей. В противном случае сообщение подтверждает возврат пользователя и генерирует измененное приветствие.

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

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

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

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

actions.intent.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 .

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

Actions SDK может взаимодействовать с веб-интегрированной средой разработки под названием 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 дней.

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

Что ты накрыл

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

Учить больше

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

Подпишитесь на @ActionsOnGoogle в Твиттере, чтобы получать последние новости, и твитните с #AoGDevs, чтобы поделиться своими разработками!

Анкета обратной связи

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