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

1. Обзор

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

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

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

Что вы будете строить

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

  • Собирает данные от пользователя и в зависимости от значения изменяет диалоговые подсказки
  • Отвечает дополнительными вопросами для продолжения разговора
  • Создает игровой цикл, чтобы пользователь мог снова взаимодействовать с действием после получения состояния.

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

dd6f5c61296b8b50.png

eba043f546aa8c51.png

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

  • Как использовать слоты для сбора данных от пользователя
  • Как использовать условия для добавления логики в сцену
  • Как добавить игровой цикл
  • Как добавить вспомогательный путь

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

Предварительные условия для этой кодлабы включают следующее:

Знакомство с JavaScript (ES6) настоятельно рекомендуется, хотя и не обязательно, для понимания кода выполнения для этой кодовой лаборатории.

2. Продолжайте создавать диалоговый интерфейс

В первой лаборатории кода вы создали простое диалоговое действие с одной сценой Start .

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

  • Переход к новой сцене Fortune , когда пользователь хочет услышать свою судьбу
  • Спросите пользователя, какую помощь он хочет выбрать для своего путешествия.
  • Доставьте индивидуальное состояние на основе выбора пользователя

Создать сцену Fortune

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

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

  1. Откройте проект Actions уровня 1 вашей лаборатории кода.
  2. Нажмите « Разработать» на панели навигации.
  3. В разделе « Сцены » нажмите « Начать сцену».
  4. Щелкните намерение « да » (поле « При совпадении да »), чтобы открыть параметры.
  5. Снимите флажок « Отправить подсказки» , чтобы удалить подсказку.
  6. В разделе « Переход » щелкните раскрывающееся меню, щелкните текстовое поле и введите Fortune .
  7. Щелкните Добавить. Это создает новую сцену под названием Fortune . Он также добавляет переход от Start сцены к сцене Fortune , когда пользователь хочет услышать свою судьбу.

56682a0c7459b98c.png

Определить диалоговую логику для сцены Fortune

В этой кодовой лаборатории вы настраиваете свою сцену Fortune , чтобы спросить пользователя: « Что вы выберете, чтобы помочь вам в вашем поиске, дракона, переводчика или компаса?» Вы можете использовать функцию заполнения слотов , чтобы получить необходимую информацию от пользователя, прежде чем продолжить.

Ваше Действие дает состояния для трех помощников: дракона, переводчика и компаса. Чтобы настроить действие для идентификации этих трех параметров в пользовательском вводе, необходимо создать новый тип.

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

Создать тип available_options

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

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

  1. На панели навигации щелкните Типы.
  2. Нажмите + (плюс) , введите available_options и нажмите Enter .
  3. Нажмите available_options , чтобы открыть параметры.

Типы настраиваются как пары данных ключ-значение, где ключ — это имя типа, а значения — синонимы для этого ключа. Когда вы определяете ключ, он автоматически добавляется как значение.

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

  1. Прокрутите до раздела « Добавить записи ».
  2. В поле Новая запись введите dragon и нажмите Enter . Это действие создает ключ dragon .
  3. Введите hydra в поле Добавить значения и нажмите Enter , чтобы добавить его в качестве значения (синонима). Затем повторите этот шаг для значения lizard .
  4. Добавьте остальные ключи и соответствующие значения:
  • translator | translator , communicator , machine , decoder , translate
  • compass | compass , direction , guide

8333b1b67445f21.png

  1. Нажмите Сохранить .

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

Настроить заполнение слота

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

  1. На панели навигации в разделе Сцены щелкните Fortune .
  2. В сцене Fortune нажмите + (плюс) для заполнения слота .
  3. В поле Введите имя слота добавьте chosenOptions в качестве имени слота.
  4. В раскрывающемся списке Выберите тип выберите available_options в качестве типа слота.
  5. Установите флажок Этот слот является обязательным .

a461b906476e244.png

  1. Выберите Отправить подсказки и добавьте следующие чипы сообщений и предложений:
candidates:
  - first_simple:
      variants:
        - speech: >-
            What do you choose to help you on your quest, a dragon, a
            translator, or a compass?
    suggestions:
      - title: 'Dragon'
      - title: 'Translator'
      - title: 'Compass'
  1. Нажмите Сохранить .

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

Обратите внимание, что когда вы называете слот chosenOptions , поле обратной записи значения Customize slot обновляется с тем же именем ( $session.params.chosenOptions ). Вы можете получить доступ к этому параметру по этому имени в Actions Builder и в своем выполнении через клиентскую библиотеку.

Настройте scene.slots.status == "FINAL"

Когда вы добавляете слот, условие scene.slots.status == "FINAL" автоматически добавляется в список условий.

Условие scene.slots.status == "FINAL" проверяет полное заполнение слота. Когда все слоты заполнены, условие может активировать веб-перехватчик, переход к новой сцене или добавление подсказок в очередь подсказок.

В этом разделе вы настраиваете scene.slots.status == "FINAL" для добавления подсказки в очередь подсказок после заполнения слотов.

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

  1. Нажмите scene.slots.status == "FINAL" , чтобы открыть окно параметров.
  2. Выберите Отправить подсказки и добавьте следующую подсказку:
candidates:
  - first_simple:
      variants:
        - speech: You picked $session.params.chosenOptions.
  1. Нажмите Сохранить .

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

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

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

  1. На панели навигации нажмите « Тест» .
  2. Щелкните или введите Talk to my test app в поле ввода и нажмите Enter .
  3. Введите Yes в поле ввода и нажмите Enter . (Кроме того, вы можете щелкнуть фишку предложения « Да ».)

a899d45c542668f6.png

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

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

Настройка подсказок с использованием условий

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

Настройте состояние dragon

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

  1. Нажмите « Разработать» на панели навигации.
  2. На панели навигации щелкните сцену Fortune .
  3. Нажмите scene.slots.status == "FINAL" , чтобы открыть окно параметров.
  4. Обновите оператор условия на: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
  5. Выберите Отправить запросы.
  6. Обновите подсказку следующим состоянием в редакторе кода:
candidates:
  - first_simple:
      variants:
        - speech: >-
            The people of Gryffinberg will be awestruck by the beauty and power
            of the ancient dragon. Much to your dismay, the townspeople fall
            into dispute over who will receive the honor of riding the dragon
            first. You return home from your quest without everlasting glory or
            a dragon.
  1. Нажмите Сохранить .

d31767232ad908bd.png

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

Настройте состояние translator

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

  1. Нажмите + (знак плюс) рядом с условием.
  2. Добавьте scene.slots.status == "FINAL" && session.params.chosenOptions == "translator" в поле else if .
  3. Выберите Отправить запросы .
  4. Добавьте следующее приглашение в редактор кода:
candidates:
  - first_simple:
      variants:
        - speech: >-
            With the help of the translator, the rival factions in Gryffinberg
            are finally able to communicate with each other and resolve their
            disputes. You will complete your quest to restore peace in the town.
            The translator will be used on many subsequent journeys across the
            earth. After its work is done, it retires honorably to a premier
            location in the Gryffinberg History Museum.
  1. Нажмите Сохранить .

c1af65e70dbf3dfe.png

Настройте compass удачи

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

  1. Нажмите + (знак плюса) рядом с Condition .
  2. Добавьте scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" в текстовое поле else if .
  3. Выберите Отправить запросы .
  4. Добавьте следующую подсказку в редакторе кода:
candidates:
  - first_simple:
      variants:
        - speech: >-
            The compass will help you find the mystical and ancient Library of
            Gryffinberg. Among its infinite stacks of dusty books, you find one
            entitled "Wisdom of the Ages". By the time you've read the
            50,000-page tome, the townspeople have forgotten their problems. You
            will write a second edition of "Wisdom of the Ages", but have
            limited commercial success.
  1. Нажмите Сохранить .

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

На этом этапе ваше действие должно предоставлять индивидуальное состояние для пользователя в зависимости от выбранного им варианта.

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

  1. На панели навигации нажмите « Тест» .
  2. Введите Talk to my test app в поле ввода и нажмите Enter .
  3. Введите Yes в поле ввода и нажмите Enter . Либо щелкните фишку предложения « Да ».
  4. Нажмите, введите или произнесите Translator .

29e17f950bd0dd71.png

Вы должны получить соответствующее состояние для опции «переводчик».

3. Добавьте игровой цикл

В этом разделе вы настраиваете свое действие, чтобы пользователь мог выбрать другой вариант и услышать другое состояние после выбора. Это изменение похоже на запрос «Хотите сыграть снова?» сообщение в конце игры. Чтобы построить этот цикл, вы можете повторно использовать ранее созданные намерения « yes » и « no » и добавить их в новую сцену под названием « Again .

Создать Again сцену

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

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

  1. Нажмите « Разработать» на панели навигации.
  2. Нажмите + (знак плюс) в разделе « Сцены».
  3. Введите Again и нажмите Enter .
  4. Щелкните сцену « Again на панели навигации.
  5. Нажмите + (плюс) рядом с При вводе.
  6. Выберите Отправить подсказки и добавьте следующие чипы подсказок и предложений:
candidates:
  - first_simple:
      variants:
        - speech: >-
            That is what I see for you. Would you like to choose a different option and
            explore another future?
    suggestions:
      - title: 'Yes'
      - title: 'No'
  1. Нажмите Сохранить .

Добавить переход от Fortune к сцене Again

После того, как пользователь получит свое состояние, разговор должен перейти к новой сцене « Again .

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

  1. Нажмите на сцену Fortune .
  2. Щелкните первое условие ( scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon" ), чтобы открыть окно параметров.
  3. Прокрутите и выберите Again в разделе «Переход ».
  4. Нажмите Сохранить .
  5. Щелкните второе условие, чтобы открыть окно параметров.
  6. Прокрутите и выберите Again в разделе «Переход ».
  7. Нажмите Сохранить .
  8. Щелкните третье условие, чтобы открыть окно параметров.
  9. Прокрутите и выберите Again в разделе «Переход ».
  10. Нажмите Сохранить .

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

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

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

  1. На панели навигации нажмите « Тест» .
  2. Введите Talk to my test app в поле ввода и нажмите Enter .
  3. Введите Yes в поле ввода и нажмите Enter . Либо щелкните фишку предложения « Да ».
  4. Нажмите, введите или произнесите слово dragon ».

b299e9fed9aedb69.png

Вы должны получить состояние за вариант дракона и подсказку « Again .

Добавить намерения и перейти к сцене Again

В этом разделе вы добавляете намерения « yes » и « no » к сцене « Again , чтобы ваше действие понимало, хочет ли пользователь выбрать новый вариант или нет. Вы также добавляете соответствующие переходы для намерений « yes » и « no ». Намерение « yes » переходит к сцене Fortune , а намерение « no » — к системной сцене. End conversation .

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

  1. Нажмите « Разработать» на панели навигации.
  2. Щелкните сцену « Again .
  3. Щелкните значок + (знак плюса) рядом с Обработкой намерений пользователя .
  4. Выберите « Да » в раскрывающемся меню «Намерение».
  5. Выберите Fortune в раскрывающемся меню « Переход ».
  6. Нажмите Сохранить .

c2efba35ea881b0d.png

  1. Щелкните значок + (знак плюса) рядом с Обработкой намерений пользователя .
  2. Выберите « нет » в раскрывающемся меню «Намерение».
  3. Выберите « Завершить разговор » в раскрывающемся меню « Переход ».
  4. Выберите Отправить подсказки и добавьте следующую подсказку в редакторе кода:
candidates:
  - first_simple:
      variants:
        - speech: >-
            It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell.
  1. Нажмите Сохранить .

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

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

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

  1. На панели навигации нажмите « Тест» .
  2. Введите Talk to my test app в поле ввода и нажмите Enter .
  3. Введите Yes в поле ввода и нажмите Enter . Либо щелкните фишку предложения « Да ».
  4. Нажмите, введите или произнесите один из вариантов.
  5. Введите Yes в поле ввода и нажмите Enter .

5d0690332efe2e29.png

Вы должны получить подсказку: «Что вы выберете, чтобы помочь вам в вашем поиске, дракона, переводчика или компаса?»

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

  1. Нажмите, введите или произнесите один из вариантов.
  2. Введите No в поле ввода и нажмите Enter .

Вы должны получить сообщение « End conversation »: «Мне приятно, что вы довольны своим выбором. Удачи в ваших поисках. Прощайте».

4. Добавьте поддерживающий путь

Теперь вы построили основной путь, по которому большинство пользователей идут в своем действии. Однако пользователь мог ответить на подсказку из сцены Fortune : « Что вы выберете, чтобы помочь вам в вашем поиске, дракона, переводчика или компаса?» , с выбором, который не является одним из предоставленных вариантов.

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

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

Создать тип unavailable_options

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

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

  1. Нажмите « Разработать» на панели навигации.
  2. Нажмите + (знак плюс) в разделе « Типы».
  3. Введите unavailable_options и нажмите Enter .
  4. Щелкните unavailable_options , чтобы открыть параметры.
  5. Введите следующие записи и соответствующие значения в разделе Добавить записи :

horse

horse , stallion , steed

magic

magic , enchanted , spells

money

money , cash , gold

phone

phone , cell , apps

Ваша таблица «ключ-значение» должна выглядеть следующим образом:

c9e119e0f5fb2a47.png

  1. Нажмите Сохранить .

Создать намерение other_option

Затем вы создаете намерение с именем other_option и добавляете обучающие фразы, включающие параметры типа unavailable_options . Это намерение выполняется, когда пользователь выбирает вариант, содержащийся в типе unavailable_options .

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

  1. Нажмите + (знак плюса) в разделе « Пользовательские намерения» .
  2. Введите other_option и нажмите Enter .
  3. Щелкните other_option , чтобы открыть окно.
  4. Добавьте следующие обучающие фразы и нажимайте Enter после каждой:
  • I want to use spells
  • I really really want to use a phone
  • magic!
  • cash
  • I want to ride a horse
  1. В разделе Добавить параметры намерения измените имя параметра на chosenUnavailableOption .
  2. Нажмите Сохранить .

Когда вы вводите обучающие фразы, Actions Builder распознает spells , phone , magic , cash и horse из типа unavailable_options и автоматически выделяет (аннотирует) эти слова. Построитель действий автоматически добавляет параметр намерения в раздел Добавить параметры намерения , как показано на следующем рисунке.

Параметр намерения позволяет извлечь имя параметра и использовать его в подсказке.

df61d4489f0910.png

Добавьте намерение other_option в сцену Fortune

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

Чтобы добавить other_option в сцену Fortune , выполните следующие действия:

  1. Нажмите на сцену Fortune .
  2. Щелкните значок + (знак плюса) рядом с Обработкой намерений пользователя .
  3. Выберите other_option в раскрывающемся меню намерения.
  4. Выберите Отправить подсказки и добавьте следующую подсказку:
candidates:
  - first_simple:
      variants:
        - speech: >-
            I have seen the future and a $intent.params.chosenUnavailableOption.original
            will not aid you on your journey. 

Выражение $intent.params.chosenUnavailableOption относится к объекту параметра намерения, а $intent.params.chosenUnavailableOption.original относится к значению этого объекта. original property относится к необработанному вводу, указанному пользователем.

  1. Нажмите Сохранить .

4bab1efbe21056aa.png

Когда пользователь произносит вариант, указанный в типе unavailable_options во время сцены Fortune , намерение other_option совпадает и добавляет приглашение в очередь приглашений. Поскольку переход не указан, цикл выполнения сцены продолжается путем переоценки этапа условий. Затем слот chosenOptions добавляет свою подсказку в очередь подсказок, и очередь подсказок доставляется пользователю.

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

Теперь ваше действие должно реагировать соответствующим образом, когда пользователь выбирает одну из опций, перечисленных в типе unavailable_options , и указывать, какую помощь выбрал пользователь. Затем ваше действие должно предложить пользователю выбрать один из исходных вариантов (дракон, переводчик или компас).

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

  1. На панели навигации нажмите « Тест» .
  2. Введите Talk to my test app в поле ввода и нажмите Enter .
  3. Введите Yes в поле ввода и нажмите Enter . Либо щелкните фишку предложения « Да ».
  4. Введите magic в поле ввода и нажмите Enter .

3a42c33eca435f32.png

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

Добавить обработчик unavailable_options

Чтобы поместить статью «а» перед соответствующими вариантами выбора из типа unavailable_options , вы можете настроить обработчик событий в своей логике выполнения, чтобы проверить, требуется ли варианту, который выбирает пользователь, «а» перед ним. Во-первых, вам нужно настроить действие для вызова обработчика в консоли.

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

  1. Нажмите « Разработать» на панели навигации.
  2. Нажмите на сцену Fortune .
  3. В разделе « Обработка намерений пользователя » нажмите «При совпадении other_option», чтобы открыть окно.
  4. Снимите флажок Отправлять запросы .
  5. Установите флажок Вызов вашего веб -перехватчика.
  6. Введите unavailable_options в текстовое поле для обработчика событий.

52a0fba115f1b377.png

  1. Щелкните Сохранить.

Обновление и развертывание выполнения

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

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

  1. Щелкните Веб -перехватчик на панели навигации.
  2. Добавьте следующий код в обработчик greeting :
app.handle('unavailable_options', conv => {
  const option = conv.intent.params.chosenUnavailableOption.original;
  const optionKey = conv.intent.params.chosenUnavailableOption.resolved;
  let message = 'I have seen the future and ';
  if(optionsNeedA.has(optionKey)){
    message = message + 'a ';
  }
  message = message + `${option} will not aid you on your journey. `;
  conv.add(message);
});
  1. Добавьте следующий код в const app = conversation(); :
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
  1. Нажмите Сохранить выполнение .
  2. Щелкните Развернуть выполнение . Когда развертывание будет завершено, над вашим редактором появится сообщение « Ваше развертывание облачной функции обновлено».

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

Обработчик unavailable_options делает следующее:

  • Получает данные option из объекта conv и присваивает option original свойству, которое является необработанным вводом от пользователя.
  • Присваивает optionKey resolved свойству, которое является ключом для типа unavailable_options .
  • Проверяет, является ли optionKey одним из параметров, которому требуется «a»; если это так, создает сообщение с добавленной буквой «а».
  • Добавляет сообщение через conv.add(message)

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

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

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

  1. На панели навигации нажмите « Тест» .
  2. Щелкните или введите Talk to my test app в поле ввода и нажмите Enter .
  3. Введите Yes в поле ввода и нажмите Enter . Либо щелкните фишку предложения « Да ».
  4. Введите magic в поле ввода и нажмите Enter .
  5. Введите horse в поле ввода и нажмите Enter .

54ee24c5c3c56e.png

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

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

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

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

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

Теперь вы освоили промежуточные навыки, необходимые для создания действий для Google Assistant.

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

  • Как разработать диалоговые действия с помощью библиотеки выполнения Node.js
  • Как использовать слоты для сбора данных от пользователя
  • Как использовать условия для добавления логики в сцену
  • Как добавить игровой цикл
  • Как добавить вспомогательный путь

Учить больше

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

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

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

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