1. Обзор
Платформа разработчиков Google Assistant позволяет создавать программное обеспечение для расширения функциональности Google Assistant, виртуального личного помощника, на более чем 1 миллиарде устройств, включая интеллектуальные колонки, телефоны, автомобили, телевизоры, наушники и многое другое. Пользователи вовлекают Ассистента в разговор, чтобы сделать что-то, например купить продукты или заказать поездку. Как разработчик, вы можете использовать платформу разработчика Assistant, чтобы легко создавать и управлять восхитительными и эффективными диалогами между пользователями и вашей собственной сторонней службой выполнения заказов.
В этой лаборатории кода рассматриваются концепции начального уровня разработки с помощью Actions SDK для Google Assistant; для ее завершения вам не нужен какой-либо предварительный опыт работы с платформой. В этой лаборатории кода вы создадите простое действие для Google Assistant, которое сообщает пользователям судьбу, когда они начинают свое приключение в мифической стране Гриффинберг. В кодовой лаборатории Actions SDK уровня 2 вы дорабатываете это действие, чтобы настроить судьбу пользователя на основе его ввода.
Что ты построишь
В этой лаборатории кода вы создадите простое действие со следующими функциями:
- Отвечает пользователям приветственным сообщением
- Задает пользователям вопрос и соответствующим образом отвечает на выбор пользователя.
- Предоставляет фишки предложений, которые пользователи могут нажать, чтобы внести свой вклад.
- Изменяет приветственное сообщение пользователю в зависимости от того, является ли он вернувшимся пользователем.
Когда вы закончите эту лабораторную работу, завершенное Действие будет иметь следующий диалоговый поток (текст рядом с микрофоном представляет ввод пользователя, а текст рядом с динамиком представляет собой ответ Действия):
Что вы узнаете
- Как создать проект в консоли Actions
- Как использовать инструмент gactions для перемещения проекта Action между консолью Actions и локальной файловой системой.
- Как отправить приглашение пользователю после того, как он вызовет ваше действие
- Как обработать ввод пользователя и вернуть ответ
- Как протестировать свое действие в симуляторе действий
- Как реализовать выполнение с помощью редактора Cloud Functions
Что вам понадобится
В вашей среде должны быть следующие инструменты:
- IDE или текстовый редактор по вашему выбору
- Терминал для запуска команд оболочки для Node.js и npm.
- Веб-браузер, например Google Chrome.
2. Настройка
В следующих разделах описывается, как настроить среду разработки и создать проект Actions.
Проверьте настройки разрешений Google
Чтобы протестировать действие, которое вы создаете в этой лаборатории кода, вам необходимо включить необходимые разрешения, чтобы симулятор мог получить доступ к вашему действию.
Чтобы включить разрешения, выполните следующие действия:
- Перейдите в раздел «Контроль активности» .
- Если вы еще этого не сделали, войдите в свою учетную запись Google.
- Включите следующие разрешения:
- Активность в Интернете и приложениях
- В разделе «Активность в Интернете и приложениях» установите флажок «Включать историю и активность Chrome на сайтах, приложениях и устройствах, использующих службы Google» .**.**
Создать проект действий
Ваш проект Actions — это контейнер для вашего Action.
Чтобы создать проект Actions для этой лаборатории кода, выполните следующие действия:
- Откройте консоль действий .
- Нажмите Новый проект .
- Введите имя проекта , например
actions-codelab
. (Это имя предназначено для вашей внутренней ссылки. Позже вы можете установить внешнее имя для своего проекта.)
- Нажмите Создать проект .
- В разделе «Какое действие вы хотите построить?» экране выберите Пользовательскую карту.
- Нажмите Далее .
- В разделе «Как вы хотите это построить?» выберите пустую карточку проекта .
- Нажмите Начать сборку .
Сохраните идентификатор проекта для своего действия.
Идентификатор проекта — это уникальный идентификатор вашего действия. Для выполнения нескольких шагов в этой лаборатории кода вам понадобится идентификатор проекта.
Чтобы получить идентификатор проекта, выполните следующие действия:
- В консоли «Действия» щелкните три вертикальные точки (вставьте значок сюда).
- Нажмите «Настройки проекта» .
- Скопируйте идентификатор проекта**.**
Свяжите платежный аккаунт
Если у вас еще нет учетной записи для выставления счетов, вам необходимо создать учетную запись для выставления счетов и связать ее со своим проектом в Google Cloud, чтобы позже развернуть выполнение с помощью Cloud Functions.
Чтобы связать платежный аккаунт с вашим проектом, выполните следующие действия:
- Перейдите на страницу оплаты Google Cloud Platform .
- Нажмите «Добавить платежный аккаунт» или «Создать аккаунт» .
- Введите платежную информацию.
- Нажмите «Начать бесплатную пробную версию» или «Отправить и включить оплату» .
- Перейдите на страницу оплаты Google Cloud Platform .
- Откройте вкладку «Мои проекты» .
- Щелкните три точки в разделе «Действия» рядом с проектом «Действия» для лаборатории кода.
- Нажмите Изменить платеж .
- В раскрывающемся меню выберите настроенный вами платежный аккаунт.
- Нажмите Установить учетную запись .
Чтобы избежать дополнительных расходов, выполните действия, описанные в разделе «Очистка проекта» в конце этой лаборатории кода.
Установите интерфейс командной строки gactions
В этой лаборатории кода вы используете инструмент интерфейса командной строки (CLI) gactions для синхронизации проекта Actions между консолью Actions и локальной файловой системой.
Чтобы установить интерфейс командной строки gactions, следуйте инструкциям в разделе Установка инструмента командной строки gactions .
Загрузите проект Actions
Начните разработку своего действия, загрузив проект Actions из консоли Actions.
Чтобы загрузить проект Actions, выполните следующие действия:
- Чтобы создать новый каталог и перейти в него, выполните следующие команды:
mkdir myproject cd myproject
- Чтобы скопировать конфигурацию вашего проекта Actions в локальную файловую систему, выполните следующую команду:
gactions pull --project-id <projectID>
Понимание файловой структуры
Проект Actions, который вы загружаете из консоли Actions, представлен в файловой структуре YAML . На следующем изображении показано высокоуровневое представление файловой структуры:
Структура файла состоит из следующего:
-
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
.
Чтобы изменить приглашение, которое ваше Действие отправляет обратно пользователю, когда он вызывает ваше Действие, выполните следующие действия:
- Откройте
custom/global/actions.intent.MAIN.yaml
в текстовом редакторе. - Замените текст в поле
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
- Сохраните файл.
Проверьте основной вызов в симуляторе.
Консоль Actions предоставляет веб-инструмент для тестирования вашего Action, называемый симулятором . Интерфейс имитирует аппаратные устройства и их настройки, поэтому вы можете общаться с вашим Action, как если бы оно работало на интеллектуальном дисплее, телефоне, динамике или KaiOS.
Когда вы вызываете свое действие, оно теперь должно отвечать добавленным вами индивидуальным приглашением ( «Чудесное приветствие, искатель приключений!...») .
Вы можете использовать команду gactions deploy preview
, чтобы протестировать свое действие в консоли без обновления версии вашего проекта Actions. Когда вы запускаете эту команду, ни одно из изменений, внесенных вами в локальную файловую систему, не распространяется на развернутые версии вашего проекта Actions, но вы можете протестировать их в предварительной версии.
Чтобы протестировать основной вызов вашего действия в симуляторе, выполните следующие действия:
- Чтобы развернуть проект в консоли 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
- Скопируйте предоставленный URL-адрес и вставьте его в браузер.
- Чтобы вызвать действие в симуляторе, введите
Talk to my test app
в поле «Ввод» и нажмитеEnter
.
Когда вы запускаете основной вызов вашего действия, Ассистент отвечает вашим персонализированным приветственным сообщением. На этом этапе разговор заканчивается после того, как Ассистент отвечает приветствием. В следующем разделе вы измените свое действие, чтобы разговор продолжился.
Просмотр журналов событий
Когда вы находитесь на вкладке «Тест» в консоли «Действия», на панели отображаются журналы событий , в которых история разговоров отображается в виде журналов событий. В каждом журнале событий отображаются события, произошедшие во время этого этапа разговора.
В настоящее время ваше действие имеет один журнал событий, в котором отображаются как ввод пользователя ( «Поговорите с моим тестовым приложением» ), так и ответ вашего действия. На следующем снимке экрана показан журнал событий вашего действия:
Если вы щелкнете стрелку вниз рядом с надписью Talk to my test app
в журнале событий, вы увидите события, расположенные в хронологическом порядке, которые произошли на этом этапе разговора:
-
userInput
: соответствует вводу пользователя ( «Поговорите с моим тестовым приложением» ) -
interactionMatch
: соответствует основному ответу на вызов вашего действия, который был вызван вводом пользователя. Если вы развернете эту строку, щелкнув стрелку, вы увидите добавленную вами подсказку для основного вызова (A wondrous greeting, adventurer!...
). -
endConversation
: соответствует выбранному переходу вMain invocation
, который в данный момент завершает диалог. Вы узнаете больше о переходах в следующем разделе этой лаборатории кода.
Журналы событий позволяют увидеть, как работает ваше действие, и являются полезными инструментами для отладки вашего действия, если у вас возникнут какие-либо проблемы. Чтобы просмотреть подробную информацию о событии, щелкните стрелку рядом с названием события, как показано на следующем снимке экрана:
4. Создайте диалог вашего действия
Теперь, когда вы определили, что происходит после того, как пользователь вызывает ваше действие, вы можете построить остальную часть диалога вашего действия. Прежде чем продолжить работу с этой лабораторией кода, ознакомьтесь со следующими терминами, чтобы понять, как работает диалог вашего действия:
Ваше действие может иметь одну или несколько сцен, и вы должны активировать каждую сцену, прежде чем она сможет запуститься. Действие, которое вы создаете в этой лаборатории кода, имеет только одну сцену под названием Start
. Самый распространенный способ активации сцены — настроить действие таким образом, чтобы, когда ввод пользователя соответствует намерению внутри сцены, это намерение запускало переход к другой сцене и активировало ее.
Например, представьте себе гипотетическое действие, которое предоставляет пользователю факты о животных. Когда пользователь вызывает это действие, Main invocation
совпадает и запускает переход к сцене с именем Facts.
Этот переход активирует сцену Facts
, которая отправляет пользователю следующий запрос: Would you like to hear a fact about cats or dogs?
В сцене Facts
есть пользовательское намерение под названием Cat
, которое содержит обучающие фразы, которые пользователь может произнести, чтобы услышать факт о кошке, например «Я хочу услышать факт о кошке» или «кот» . Когда пользователь просит услышать факт о кошке, намерение Cat
совпадает и вызывает переход к сцене под названием Cat fact.
Сцена Cat fact
активируется и отправляет пользователю подсказку, содержащую факт о кошке.
Рис. 1. Последовательность типичного диалога в Action, созданном с помощью Actions SDK.
Вместе сцены, намерения и переходы составляют логику вашего разговора и определяют различные пути, по которым ваш пользователь может идти в диалоге вашего действия. В следующем разделе вы создадите сцену и определите, как эта сцена активируется после того, как пользователь вызывает ваше действие.
Переход от основного вызова к сцене
В этом разделе вы создаете новую сцену под названием Start
, которая отправляет пользователю подсказку с вопросом, хочет ли он узнать свое состояние. Вы также добавляете переход от основного вызова к новой Start
сцене.
Чтобы создать эту сцену и добавить к ней переход, выполните следующие действия:
- Откройте
custom/global/actions.intent.MAIN.yaml
в текстовом редакторе. - Замените текст в поле
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
сцене.
- Сохраните файл.
- В терминале создайте новый каталог
scenes
вcustom
каталоге:
mkdir custom/scenes
- Создайте новый файл с именем
Start.yaml
в каталогеscenes
, который представляет собойstart
сцену вашего действия:
touch custom/scenes/Start.yaml
- Откройте
Start.yaml
в текстовом редакторе. - Вставьте следующий код в файл
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
сцены, выполните следующие действия:
- Обновите код в
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"
- Сохраните файл.
Проверьте свои действия в симуляторе
На этом этапе ваше действие должно перейти от основного вызова к сцене Start
и спросить пользователя, хочет ли он узнать свою судьбу. Фишки предложений также должны появиться на смоделированном дисплее.
Чтобы проверить свое действие в симуляторе, выполните следующие действия:
- В терминале выполните следующую команду:
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
- Скопируйте предоставленный URL-адрес и вставьте его в браузер.
- Нажмите «Тест» , чтобы перейти к симулятору.
- Введите
Talk to my test app
в поле «Ввод» и нажмитеEnter
. Ваше действие должно отреагировать наMain invocation
и добавленный запрос наStart
сцену: «Прежде чем продолжить поиск, хотите ли вы, чтобы вам предсказали судьбу?» , с отображенными фишками предложений.
На следующем снимке экрана показано это взаимодействие:
- Нажмите кнопку «Да» или «Нет », чтобы ответить на запрос. (Вы также можете сказать «Да» или «Нет» или ввести
Yes
илиNo
в поле ввода .)
Когда вы отвечаете на запрос, ваше действие отвечает сообщением о том, что оно не может понять ваш ввод: «Извините, я этого не уловил. Можете ли вы попробовать еще раз?» Поскольку вы еще не настроили свое действие для понимания и ответа на ввод «Да» или «Нет» , ваше действие сопоставляет ваш ввод с намерением NO_MATCH
.
По умолчанию системное намерение NO_MATCH
предоставляет общие ответы, но вы можете настроить эти ответы, чтобы указать пользователю, что вы не поняли его ввод. Помощник завершает разговор пользователя с помощью вашего действия после того, как оно не может сопоставить вводимые пользователем данные три раза.
Добавьте намерения yes
и no
Теперь, когда пользователи могут отвечать на вопрос, который задает ваше действие, вы можете настроить свое действие так, чтобы понимать ответы пользователей ( «Да» или «Нет» ). В следующих разделах вы создаете собственные намерения, которые совпадают, когда пользователь говорит «Да» или «Нет», и добавляете эти намерения в Start
сцену.
Создайте намерение yes
Чтобы создать намерение yes
, выполните следующие действия:
- В терминале создайте новый каталог с именем
intents
вcustom
каталоге:
mkdir custom/intents
- Создайте новый файл с именем
yes.yaml
в каталогеintents
:
touch custom/intents/yes.yaml
- Откройте
yes.yaml
в текстовом редакторе. - Вставьте следующий фрагмент кода, содержащий обучающие фразы, в
yes.yaml
:
да.yaml
trainingPhrases:
- of course
- let's do it
- ok
- sure
- "y"
- "yes"
- Сохраните файл.
Добавить намерение yes
в Start
сцену
Теперь Действие может понимать, когда пользователь выражает намерение «да» . Вы можете добавить пользовательское намерение yes
к сцене Start
, поскольку пользователь отвечает на приглашение Start
(« Прежде чем продолжить поиск, хотите ли вы, чтобы вам предсказали судьбу?» ).
Чтобы добавить это пользовательское намерение в Start
сцену, выполните следующие действия:
- Откройте
custom/scenes/Start.yaml
в текстовом редакторе. - Добавьте обработчик
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
в симуляторе
На этом этапе ваше действие понимает, когда пользователь хочет узнать свою судьбу, и возвращает соответствующий ответ.
Чтобы проверить это намерение в симуляторе, выполните следующие действия:
- В терминале выполните следующую команду:
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
- Скопируйте предоставленный URL-адрес и вставьте его в браузер.
- Нажмите «Тест» , чтобы перейти к симулятору.
- Чтобы протестировать свое действие в симуляторе, введите
Talk to my test app
в поле «Ввод» и нажмитеEnter
. - Введите
Yes
в поле ввода и нажмитеEnter
. Либо нажмите кнопку «Да» .
Ваше действие отвечает пользователю и сообщает ему, что его судьба зависит от выбранной им помощи. Затем ваше действие завершает сеанс, поскольку вы настроили переход End conversation
для намерения yes
.
no
создавать намерения
Теперь вы можете создать « no
намерения», чтобы ваше действие могло понимать пользователя и реагировать на него, когда он не хочет слышать свою судьбу.
Чтобы создать это намерение, выполните следующие действия:
- В терминале создайте новый файл с именем
no.yaml
в каталогеintents
:
touch custom/intents/no.yaml
- Откройте
no.yaml
в текстовом редакторе. - Вставьте следующие обучающие фразы в файл
no.yaml
:
нет.yaml
trainingPhrases:
- nope
- I don't want
- "n"
- "no"
- nah
- no thanks
- Сохраните файл.
no
добавлять намерение в Start
сцену
Теперь Действие может понимать, когда пользователь выражает «нет» или что-то похожее на «нет» , например «нет» . Вам необходимо добавить « no
пользовательского намерения» в сцену Start
, поскольку пользователь отвечает на приглашение Start
(« Прежде чем продолжить поиск, хотите ли вы, чтобы вам предсказали судьбу?» ).
Чтобы добавить это намерение для Start
сцены, выполните следующие действия:
- Откройте
custom/scenes/Start.yaml
в текстовом редакторе. - Добавьте следующий обработчик
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
- Сохраните файл.
Проверьте no
намерений в симуляторе
На этом этапе ваше действие понимает, когда пользователь не хочет слышать свою судьбу, и возвращает соответствующий ответ.
Чтобы проверить это намерение в симуляторе, выполните следующие действия:
- В терминале выполните следующую команду:
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
- Скопируйте предоставленный URL-адрес и вставьте его в браузер.
- Нажмите «Тест» , чтобы перейти к симулятору.
- Введите
Talk to my test app
в поле «Ввод» и нажмитеEnter
. - Введите
No
в поле ввода и нажмитеEnter
. Либо нажмите кнопкуNo
предложений».
Вместо того, чтобы подарить пользователю удачу, ваше Действие желает ему удачи в путешествии. Затем ваше действие завершает сеанс, поскольку вы настроили переход End conversation
no
намерения.
5. Реализуйте выполнение
В настоящее время ответы вашего действия статичны; когда активируется сцена, содержащая подсказку, ваше Действие каждый раз отправляет одно и то же подсказку. В этом разделе вы реализуете выполнение , содержащее логику для построения динамического диалогового ответа.
Ваше выполнение определяет, является ли пользователь вернувшимся пользователем или новым пользователем, и изменяет приветственное сообщение Действия для вернувшихся пользователей. Приветственное сообщение сокращается для вернувшихся пользователей и подтверждает возвращение пользователя: « Чудесное приветствие, искатель приключений! Добро пожаловать обратно в мифическую страну Гриффинберг!»
В этой лаборатории кода вы используете редактор Cloud Functions для редактирования и развертывания кода выполнения.
Ваше действие может запускать веб-перехватчики , которые уведомляют вас о событии, которое происходит во время вызова или определенных частей выполнения сцены. Когда срабатывает веб-перехватчик, ваше действие отправляет запрос с полезными данными JSON для вашего выполнения вместе с именем обработчика, который будет использоваться для обработки события. Этот обработчик выполняет некоторую логику и возвращает соответствующий ответ JSON.
Постройте свое удовлетворение
В этом разделе вы измените свое выполнение, чтобы генерировать разные запросы для вернувшихся и новых пользователей, когда они вызывают ваше Действие.
Чтобы добавить эту логику в ваше выполнение, выполните следующие действия:
- В терминале убедитесь, что вы находитесь в корневом каталоге вашего проекта, и создайте новый каталог
webhooks
:
mkdir webhooks
- Создайте новый файл
ActionsOnGoogleFulfillment.yaml
в каталогеwebhooks
:
touch webhooks/ActionsOnGoogleFulfillment.yaml
- Откройте
ActionsOnGoogleFulfillment.yaml
в текстовом редакторе. - Добавьте обработчик
greeting
и содержимоеinlineCloudFunction
в файлActionsOnGoogleFulfillment.yaml
:
ДействияOnGoogleFulfillment.yaml
handlers:
- name: greeting
inlineCloudFunction:
executeFunction: ActionsOnGoogleFulfillment
Файл ActionsOnGoogleFulfillment.yaml
определяет ваши обработчики веб-перехватчиков (например, обработчик greeting
) и сообщает вашему действию использовать облачные функции в качестве конечной точки веб-перехватчика.
- Создайте новый каталог
ActionsOnGoogleFulfillment
в каталогеwebhooks
:
mkdir webhooks/ActionsOnGoogleFulfillment
- Создайте новый файл
index.js
в каталогеActionsOnGoogleFulfillment
:
touch webhooks/ActionsOnGoogleFulfillment/index.js
- Откройте
index.js
в текстовом редакторе. - Добавьте следующий код в
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
, который отправляет соответствующее приветствие в
пользователь.
- Сохраните файл.
- Создайте новый файл
package.json
в каталогеActionsOnGoogleFulfillment
:
touch webhooks/ActionsOnGoogleFulfillment/package.json
Файл package.json
определяет зависимости и другие метаданные для вашего веб-перехватчика.
- Откройте
package.json
в текстовом редакторе. - Скопируйте код из этого репозитория GitHub и вставьте его в файл
package.json
. - Сохраните файл.
Разобраться в коде
Ваше выполнение, использующее библиотеку Actions on Google Fulfillment для Node.js , отвечает на HTTP-запросы от Google Assistant.
В предыдущем фрагменте кода вы определяете обработчик greeting
, который проверяет, посещал ли пользователь ранее действие со свойством lastSeenTime
. Если свойство lastSeenTime
не определено, пользователь является новым и получает приветствие, предназначенное для новых пользователей. В противном случае сообщение подтверждает возврат пользователя и генерирует измененное приветствие.
Обновить основной вызов для запуска веб-перехватчика.
Теперь, когда вы определили функцию greeting
, вы можете настроить обработчик событий greeting
в своем основном намерении вызова, чтобы ваше действие знало о вызове этой функции, когда пользователь вызывает ваше действие.
Чтобы настроить действие для вызова нового обработчика greeting
, выполните следующие действия:
- Откройте
custom/global/actions.intent.MAIN.yaml
в текстовом редакторе. - Замените код в
actions.intent.MAIN.yaml
следующим кодом:
действия.намерение.MAIN.yaml
handler:
webhookHandler: greeting
transitionToScene: Start
- Сохраните файл.
Теперь, когда ваше основное намерение вызова совпадает, вызывается обработчик веб-перехватчика greeting
.
Тестирование обновленного основного вызова в симуляторе
Чтобы проверить свое действие в симуляторе, выполните следующие действия:
- В терминале выполните следующую команду:
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
- Скопируйте предоставленный URL-адрес и вставьте его в браузер.
- Чтобы протестировать свое действие в симуляторе, введите
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, выполните следующие действия:
- В терминале выполните следующую команду, чтобы отправить проект на консоль действий:
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.
- Скопируйте предоставленный URL-адрес и вставьте его в браузер.
- В консоли «Действия» нажмите «Разработка» на верхней панели навигации.
- Нажмите стрелку раскрывающегося списка рядом с пунктом «Сцены» и нажмите «Пуск» . Вы должны увидеть визуальное представление сцены
Start
вашего действия, как показано на следующем снимке экрана:
Очистите свой проект [рекомендуется]
Чтобы избежать возможных расходов, рекомендуется удалять проекты, которые вы не собираетесь использовать. Чтобы удалить проекты, созданные вами в этой лаборатории кода, выполните следующие действия:
- Чтобы удалить облачный проект и ресурсы, выполните действия, перечисленные в разделе «Завершение работы (удаление) проектов» .
- Необязательно: Чтобы немедленно удалить проект из консоли «Действия», выполните действия, перечисленные в разделе «Удалить проект» . Если вы не выполните этот шаг, ваш проект будет автоматически удален примерно через 30 дней.
7. Поздравляем!
Вы знаете основы создания действий для Google Assistant с помощью Actions SDK.
Что вы покрыли
- Как настроить проект Actions в консоли Actions
- Как использовать Actions SDK для создания проекта Actions в локальной файловой системе.
- Как добавить подсказку к основному вызову, чтобы пользователи могли начать разговор с вашим действием
- Как создать диалоговый интерфейс со сценами, намерениями, переходами, чипами предложений и выполнением
- Как протестировать свое действие с помощью симулятора действий
Узнать больше
Изучите следующие ресурсы, чтобы узнать больше о создании действий для Google Assistant:
- Официальный сайт документации по разработке действий для Google Assistant.
- Действия на странице Google GitHub для примера кода и библиотек
- Официальное сообщество Reddit для разработчиков, работающих с Assistant.
Следите за новостями @ActionsOnGoogle в Твиттере и пишите в Твиттере с хэштегом #AoGDevs , чтобы поделиться тем, что вы создаете!
Опрос обратной связи
Прежде чем отправиться, пожалуйста, заполните краткую анкету о своем опыте.