1. Обзор
Платформа для разработчиков Google Assistant позволяет создавать программное обеспечение для расширения функциональности Google Assistant, виртуального персонального помощника, на более чем миллиарде устройств, включая умные колонки, телефоны, автомобили, телевизоры, наушники и многое другое. Пользователи взаимодействуют с Assistant в диалоге, чтобы выполнять задачи, такие как покупка продуктов или заказ такси. Как разработчик, вы можете использовать платформу для разработчиков Assistant, чтобы легко создавать и управлять удобными и эффективными диалогами между пользователями и вашим собственным сторонним сервисом выполнения заказов.
Этот практический урок охватывает базовые концепции разработки с использованием Actions SDK для Google Assistant; для его выполнения не требуется никакого предварительного опыта работы с платформой. В этом уроке вы создадите простой Action для Google Assistant, который будет предсказывать пользователям их судьбу, когда они начнут свое приключение в мифической стране Гриффинберг. В практическом уроке по Actions SDK уровня 2 вы доработаете этот Action, чтобы персонализировать предсказание пользователя на основе его ввода.
Что вы построите
В этом практическом задании вы создадите простой объект Action со следующими функциями:
- Отвечает пользователям приветственным сообщением.
- Задает пользователям вопрос и дает соответствующий ответ на их выбор.
- Предоставляет пользователям возможность оставлять комментарии, нажимая на которые они могут ввести свои предложения.
- Изменяет приветственное сообщение для пользователя в зависимости от того, является ли он повторным пользователем.
По завершении этого практического задания ваше готовое действие будет иметь следующий диалоговый сценарий (текст рядом с микрофоном представляет собой ввод пользователя, а текст рядом с говорящим — ответ действия):


Что вы узнаете
- Как создать проект в консоли действий
- Как использовать инструмент gactions для отправки и получения вашего проекта Actions между консолью Actions и локальной файловой системой.
- Как отправить пользователю запрос после того, как он вызовет ваше действие
- Как обработать ввод пользователя и вернуть ответ.
- Как протестировать ваше действие в симуляторе действий
- Как реализовать выполнение заказов с помощью редактора Cloud Functions
Что вам понадобится
В вашей среде должны быть установлены следующие инструменты:
- Среда разработки (IDE) или текстовый редактор на ваш выбор.
- Терминал для выполнения команд оболочки для Node.js и npm.
- Веб-браузер, например, Google Chrome.
2. Настройка
В следующих разделах описано, как настроить среду разработки и создать проект Actions.
Проверьте настройки разрешений Google.
Для тестирования действия, созданного вами в этом практическом задании, необходимо включить необходимые разрешения, чтобы симулятор мог получить к нему доступ.
Чтобы включить необходимые разрешения, выполните следующие действия:
- Перейдите в раздел «Управление действиями» .
- Если вы еще этого не сделали, войдите в систему с помощью своей учетной записи Google.
- Включите следующие разрешения:
- Активность в интернете и приложениях
- В разделе «Активность в Интернете и приложениях» установите флажок « Включать историю и активность Chrome с сайтов, приложений и устройств, использующих сервисы Google ».
Создайте проект Actions
Ваш проект Actions — это контейнер для вашего действия.
Чтобы создать проект Actions для этого практического занятия, выполните следующие шаги:
- Откройте консоль «Действия» .
- Нажмите «Создать проект» .
- Введите название проекта , например,
actions-codelab. (Это название предназначено для внутреннего использования. Позже вы сможете задать внешнее название для своего проекта.)

- Нажмите «Создать проект» .
- На экране «Какое действие вы хотите создать?» выберите карточку «Пользовательское» .
- Нажмите «Далее» .
- На экране «Как вы хотите это построить?» выберите карточку «Пустой проект» .
- Нажмите « Начать строительство» .
Сохраните идентификатор проекта для вашего действия.
Идентификатор проекта — это уникальный идентификатор вашего действия. Идентификатор проекта необходим для нескольких шагов в этом практическом задании.
Чтобы получить идентификатор вашего проекта, выполните следующие действия:
- В консоли действий нажмите на три вертикальные точки (вставьте значок сюда).
- Нажмите «Настройки проекта» .

- Скопируйте идентификатор проекта**.**
Привязать платежный аккаунт
Если у вас еще нет платежного аккаунта, вам необходимо создать его и связать с вашим проектом в Google Cloud, чтобы в дальнейшем развернуть обработку заказов с помощью Cloud Functions.
Чтобы связать платежный аккаунт с вашим проектом, выполните следующие шаги:
- Перейдите на страницу оплаты Google Cloud Platform .
- Нажмите «Добавить платежный аккаунт» или «Создать аккаунт» .
- Введите платежные данные.
- Нажмите «Начать бесплатную пробную версию» или «Отправить» и включите оплату .
- Перейдите на страницу оплаты Google Cloud Platform .
- Нажмите вкладку «Мои проекты» .
- Нажмите на три точки под разделом «Действия» рядом с проектом «Действия» для данного практического занятия.
- Нажмите «Изменить платежные данные» .
- В выпадающем меню выберите настроенный вами платежный аккаунт.
- Нажмите «Настроить учетную запись» .
Чтобы избежать дополнительных расходов, выполните действия, описанные в разделе «Очистка проекта» в конце этого практического занятия.
Установите интерфейс командной строки gactions.
В этом практическом занятии вы используете инструмент командной строки gactions для синхронизации вашего проекта Actions между консолью Actions и вашей локальной файловой системой.
Для установки инструмента командной строки gactions следуйте инструкциям в разделе «Установка инструмента командной строки gactions» .
Загрузите свой проект Actions
Начните разработку своего действия, загрузив проект Actions из консоли Actions.
Чтобы загрузить свой проект Actions, выполните следующие действия:
- Чтобы создать новую директорию и перейти в неё, выполните следующие команды:
mkdir myproject cd myproject
- Чтобы скопировать конфигурацию вашего проекта Actions в локальную файловую систему, выполните следующую команду:
gactions pull --project-id <projectID>
Разберитесь в структуре файлов.
Загруженный из консоли Actions проект представлен в виде YAML- файла. На следующем изображении показано общее представление структуры файла:

Структура файлов состоит из следующих элементов:
-
actions/: Представляет ваш проект Actions. Система вызываетactions.yamlпри запуске вашего действия, которое затем вызывает файл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.
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
- Сохраните файл.
Протестируйте основной вызов в симуляторе.
Консоль 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. Схема типичного диалога в действии, созданном с помощью Actions SDK.
Сцены, намерения и переходы вместе составляют логику вашего диалога и определяют различные пути, по которым пользователь может пройти в ходе диалога вашего действия. В следующем разделе вы создадите сцену и определите, как эта сцена активируется после того, как пользователь вызовет ваше действие.
Переход от основного вызова к сцене
В этом разделе вы создаете новую сцену под названием Start , которая отправляет пользователю запрос с вопросом, хочет ли он, чтобы ему гадали. Вы также добавляете переход от основного вызова к новой сцене Start .
Чтобы создать эту сцену и добавить к ней переход, выполните следующие шаги:
- Откройте
custom/global/actions.intent.MAIN.yamlв текстовом редакторе. - Замените текст в поле
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 сцене.
- Сохраните файл.
- В терминале создайте новую директорию
scenesв директорииcustom:
mkdir custom/scenes
- Создайте в каталоге
scenesновый файл с именемStart.yaml, который будет представлять собойstartсцену в вашем действии:
touch custom/scenes/Start.yaml
- Откройте
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?
В коде файла Start.yaml есть поле onEnter , которое обозначает первый этап жизненного цикла сцены.
В этом случае подсказка (« Before you continue on your quest... ») добавляется в очередь подсказок, когда пользователь впервые входит в Start сцену.
Добавить подсказки
В этом разделе вы можете добавить всплывающие подсказки, которые ваш Action обрабатывает как пользовательский ввод. Под этим подсказкой ( Before you continue on your quest, would you like your fortune told? ) отображаются всплывающие подсказки Yes и No , предназначенные для пользователей устройств с экранами.
Чтобы добавить подсказки в диалоговое окно « Start », выполните следующие действия:
- Обновите код в
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"
- Сохраните файл.
Проверьте свои действия в симуляторе.
На этом этапе ваше действие должно перейти от основного вызова к 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 сцену.
Теперь Action может понимать, когда пользователь выражает намерение «да» . Вы можете добавить пользовательское намерение yes в сцену « Start , поскольку пользователь отвечает на запрос Start (« Прежде чем продолжить свой квест, хотели бы вы узнать свою судьбу?» ).
Чтобы добавить этот пользовательский интент в Start сцену, выполните следующие действия:
- Откройте
custom/scenes/Start.yamlв текстовом редакторе. - Добавьте обработчики
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 ответ, в очередь подсказок добавляется сообщение «Ваше будущее зависит от предмета, который вы выберете для своего задания...» . Затем сцена 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:
no.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:
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
- Сохраните файл.
Проверка 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:
ActionsOnGoogleFulfillment.yaml
handlers:
- name: greeting
inlineCloudFunction:
executeFunction: ActionsOnGoogleFulfillment
Файл ActionsOnGoogleFulfillment.yaml определяет обработчики веб-перехватчиков (например, обработчик greeting ) и указывает вашему действию использовать Cloud Functions в качестве конечной точки веб-перехватчика.
- Создайте новую директорию
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 Ассистента.
В предыдущем фрагменте кода вы определяете обработчик greeting , который проверяет, посещал ли пользователь ранее данное действие, используя свойство lastSeenTime . Если свойство lastSeenTime не определено, пользователь является новым и получает приветствие, предназначенное для новых пользователей. В противном случае сообщение подтверждает возвращение пользователя и генерирует измененное приветствие.
Обновите основной вызов, чтобы он запускал веб-перехватчик.
Теперь, когда вы определили функцию greeting , вы можете настроить обработчик события greeting в вашем основном намерении вызова, чтобы ваше действие знало, что нужно вызвать эту функцию, когда пользователь вызывает ваше действие.
Чтобы настроить действие на вызов нового обработчика greeting , выполните следующие действия:
- Откройте
custom/global/actions.intent.MAIN.yamlв текстовом редакторе. - Замените код в файле
actions.intent.MAIN.yamlследующим кодом:
actions.intent.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. Визуализируйте действия с помощью конструктора действий.
SDK Actions совместим с веб-IDE Actions Builder , интегрированной в консоль Actions. Вы можете отправить содержимое вашей локальной файловой системы в черновик вашего Action в консоли с помощью команды gactions push . В отличие от gactions deploy preview , которая позволяет тестировать Action только в симуляторе, gactions push перемещает все содержимое из локальных файлов в Actions Builder.
Консоль Actions предоставляет визуальное представление конфигурации вашего Action. Визуальное отображение конфигурации вашего Action может быть полезно во время разработки и не влияет на версию Action, используемую для тестирования.
Чтобы отправить свой проект Actions и просмотреть его в консоли 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 Ассистента с помощью Actions SDK.
Что вы осветили
- Как настроить проект Actions в консоли Actions
- Как использовать Actions SDK для сборки проекта Actions в локальной файловой системе
- Как добавить подсказку в основной вызов, чтобы пользователи могли начать диалог с вашим действием?
- Как создать диалоговый интерфейс с использованием сцен, намерений, переходов, подсказок и реализации.
- Как протестировать ваше действие с помощью симулятора действий
Узнать больше
Чтобы узнать больше о создании действий для Google Ассистента, ознакомьтесь со следующими ресурсами:
- Официальный сайт документации по разработке действий для Google Ассистента.
- Действия на странице Google GitHub для примеров кода и библиотек
- Официальное сообщество Reddit для разработчиков, работающих с Assistant.
Follow @ActionsOnGoogle on Twitter for the latest announcements and tweet with #AoGDevs to share what you build!
Опрос обратной связи
Before you go, please fill out a brief survey about your experience.