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


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

- Нажмите Создать проект.
- На экране What kind of Action do you want to build? (Какое действие вы хотите создать?) выберите карточку Custom (Специальное).
- Нажмите Далее.
- На экране Как вы хотите создать проект? выберите карточку Пустой проект.
- Нажмите Начать.
Сохраните идентификатор проекта для своего действия.
Идентификатор проекта – это уникальный идентификатор вашего действия. Идентификатор проекта понадобится вам на нескольких этапах этой практической работы.
Чтобы узнать идентификатор проекта, выполните следующие действия:
- В консоли Actions нажмите на значок с тремя вертикальными точками (вставьте значок).
- Нажмите Настройки проекта.

- Скопируйте идентификатор проекта.
Как связать платежный аккаунт
Если у вас нет платежного аккаунта, создайте его и свяжите с проектом в Google Cloud, чтобы позже развернуть выполнение с помощью Cloud Functions.
Чтобы связать платежный аккаунт с проектом, выполните следующие действия:
- Перейдите на страницу оплаты Google Cloud Platform.
- Нажмите Добавить платежный аккаунт или Создать аккаунт.
- Введите платежные данные.
- Нажмите Start my free trial (Начать бесплатный пробный период) или Submit and enable billing (Отправить и включить оплату).
- Перейдите на страницу оплаты Google Cloud Platform.
- Откройте вкладку Мои проекты.
- Нажмите на значок с тремя точками в столбце Actions (Действия) рядом с проектом Actions для практической работы.
- Нажмите Изменить платежные данные.
- В раскрывающемся меню выберите настроенный платежный аккаунт.
- Нажмите Выбрать аккаунт.
Чтобы избежать дополнительных расходов, выполните действия, описанные в разделе "Очистка проекта" в конце этой практической работы.
Установите интерфейс командной строки gactions
В этой практической работе вы будете использовать инструмент интерфейса командной строки gactions, чтобы синхронизировать проект Actions между консолью Actions и локальной файловой системой.
Чтобы установить CLI gactions, следуйте инструкциям в разделе Установка инструмента командной строки gactions.
Скачайте проект Actions
Чтобы начать разработку действия, скачайте проект из консоли Actions.
Чтобы скачать проект Actions, выполните следующие действия:
- Чтобы создать каталог и перейти в него, выполните следующие команды:
mkdir myproject cd myproject
- Чтобы скопировать конфигурацию проекта Actions в локальную файловую систему, выполните следующую команду:
gactions pull --project-id <projectID>
Структура файла
Проект Actions, скачанный из консоли 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 есть веб-инструмент для тестирования действий, который называется симулятором. Интерфейс имитирует аппаратные устройства и их настройки, поэтому вы можете общаться со своим действием так, как если бы оно работало на умном дисплее, телефоне, динамике или KaiOS.
Когда вы вызываете свое действие, оно должно ответить добавленной вами настраиваемой подсказкой ("A wondrous greeting, adventurer!...").
Вы можете использовать команду 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.

Когда вы активируете основную команду вызова, Ассистент отвечает настроенным вами приветственным сообщением. После этого разговор завершится. В следующем разделе вы измените действие, чтобы продолжить разговор.
Просмотр журналов событий
На вкладке Test (Тестирование) в консоли Actions на панели показываются журналы событий, в которых отображается история разговоров. В каждом журнале событий показаны события, которые происходят во время этого хода разговора.
Сейчас в журнале событий вашего действия есть одна запись, в которой показаны как запрос пользователя ("Talk to my test app"), так и ответ действия. На скриншоте ниже показан журнал событий действия.

Если нажать на стрелку вниз рядом с 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
- Создайте файл
Start.yamlв каталогеscenes, который представляет сцену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.
Добавьте варианты запросов/действий
Подсказки – это кликабельные варианты ответов, которые ваше действие обрабатывает как пользовательский ввод. В этом разделе вы добавите варианты запросов Yes и No, которые будут показываться под настроенной вами подсказкой (Before you continue on your quest, would you like your fortune told?) на устройствах с экранами.
Чтобы добавить варианты запросов в запрос сцены 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и добавленной подсказкой сцены "Before you continue on your quest, would you like your fortune told?" (Прежде чем продолжить, не хотите ли вы узнать свою судьбу?), а также показать варианты запросов.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следующий фрагмент кода с обучающими фразами:
yes.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:
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, в очередь запросов добавляется запрос "Your future depends on the item you choose to use for your quest...". Затем сцена 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(>39;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, который отправляет пользователю соответствующее приветствие.
user.
- Сохраните файл.
- Создайте файл
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. Визуализация действий с помощью Actions Builder
Actions SDK совместим с веб-версией интегрированной среды разработки Actions Builder, которая интегрирована в консоль Actions. Вы можете отправить локальную файловую систему в черновик своего действия в консоли с помощью команды gactions push. В отличие от команды gactions deploy preview, которая позволяет только протестировать действие в симуляторе, команда gactions push переносит весь контент из локальных файлов в Actions Builder.
В консоли Actions можно посмотреть, как будет выглядеть ваше действие. Визуальное представление действия может быть полезно при разработке и не влияет на версию действия, которая используется для тестирования.
Чтобы отправить проект 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 и вставьте его в адресную строку браузера.
- В консоли Actions нажмите Develop (Разработка) на верхней панели навигации.
- Нажмите на значок раскрывающегося списка рядом с пунктом Сцены и выберите Начать. Вы должны увидеть визуальное представление сцены
Startвашего действия, как показано на следующем скриншоте:

Очистите проект (рекомендуется)
Чтобы избежать возможных расходов, рекомендуется удалить проекты, которые вы не планируете использовать. Чтобы удалить проекты, созданные в ходе этой практической работы, выполните следующие действия:
- Чтобы удалить облачный проект и ресурсы, выполните действия, описанные в разделе Shutting down (deleting) projects (Закрытие (удаление) проектов).
- Необязательно. Чтобы немедленно удалить проект из консоли Actions, выполните действия, описанные в разделе Удаление проекта. Если вы не выполните этот шаг, ваш проект будет автоматически удален примерно через 30 дней.
7. Поздравляем!
Вы знаете основы создания действий для Google Ассистента с помощью Actions SDK.
Что вы узнали
- Как настроить проект Actions в консоли Actions
- Как использовать Actions SDK для создания проекта действий в локальной файловой системе.
- Как добавить подсказку к основному вызову, чтобы пользователи могли начать разговор с вашим действием
- Как создать диалоговый интерфейс со сценами, интентами, переходами, вариантами запроса и выполнением
- Как протестировать действие в симуляторе действий
Подробнее…
Чтобы узнать больше о создании действий для Google Ассистента, ознакомьтесь со следующими ресурсами:
- Официальный сайт с документацией по разработке действий для Google Ассистента.
- Страница Actions on Google на GitHub с образцами кода и библиотеками.
- Официальное сообщество Reddit для разработчиков, работающих с Ассистентом.
Подпишитесь на @ActionsOnGoogle в Твиттере, чтобы узнавать последние новости, и делитесь своими разработками, используя хештег #AoGDevs.
Опрос для сбора отзывов
Прежде чем уйти, пройдите небольшой опрос.