Как создать свои собственные действия Google Assistant
Если вы когда-либо разговаривали с устройством Google Home, вы знаете, как неприятно слышать: «Извините, я пока не знаю, как с этим помочь».
Читать дальше: подпрограммы Google Assistant – все, что вам нужно знать
К счастью, вам не нужно ждать, пока кто-то реализует эту недостающую функцию. Вы можете сделать это сами! У Google есть целая платформа, предназначенная для того, чтобы помочь вам расширить функциональность Google Assistant, определяя настраиваемые действия.
По сравнению с другими продуктами и услугами Google, платформа Google Assistant по-прежнему кажется относительно новой, и, в отличие от многолюдной сцены мобильных приложений, по-прежнему существует множество возможностей для создания действий, которые полностью отличаются от всего остального, присутствующего в настоящее время на рынке. Если вы взглянете на каталог действий Google Assistant, вы найдете несколько интересных действий, разработанных третьими сторонами для Assistant и Google Home, но это далеко не исчерпывающий список!
Читать дальше: Actions on Google упрощает создание приложений для Google Assistant
Давайте посмотрим, как создать полноценное действие Google Assistant. К концу этой статьи вы создадите действие, которое задает пользователю различные вопросы, анализирует его ответы, а затем извлекает определенные фрагменты информации, которые затем используются для персонализации разговора и продвижения его вперед.
Что мы собираемся построить
Мы создадим экшен-генератор плохих шуток, который узнает имя пользователя и узнает, хотят ли они услышать пошлый анекдот о собаках или кошках.
При разработке действия рекомендуется наметить все возможные маршруты разговора, поэтому вот что мы будем строить:
Создание проекта действий и агента Dialogflow
Каждое действие требует следующего:
- Проект действий – здесь вы будете управлять, тестировать и публиковать свое действие, а также выполнять административные задачи, такие как руководство своим действием в процессе публикации.
- Агент Dialogflow – это веб-сервис, который вы будете использовать для интеграции вашего действия с Google Assistant. Вы будете использовать этот агент, чтобы определить, как пользователи взаимодействуют с вашим действием, какие параметры должен извлекать Dialogflow и как должен развиваться диалог.
Чтобы создать эти компоненты:
- Перейдите в Actions on Google Developer Console и войдите в свою учетную запись Google. Если это ваш первый визит, следуйте инструкциям по созданию учетной записи Actions on Google.
- При появлении запроса выберите Добавить / импортировать проект.
- Дайте проекту имя; Я использую «BadJokeGenerator».
- Щелкните ” Создать проект”.
- Вместо того, чтобы выбирать категорию, выберите Пропустить.
- В левом меню консоли выберите Действия.
- Выберите Добавить первое действие.
- Выберите язык (языки), на котором должен отображаться ваш список каталогов действий. Нажмите Обновить.
- Выберите Custom intent, а затем – Build.
- Консоль Dialogflow откроется в новой вкладке. Просмотрите эту информацию и, если вы готовы продолжить, создайте свой агент Dialogflow, нажав кнопку «Создать».
Приветствуем пользователя в вашем действии
Каждый разговор должен с чего-то начинаться! Каждый раз, когда вы создаете агент Dialogflow, автоматически создается приветствие, которое представляет собой точку входа в ваше действие.
Вы определяете, как ваше действие реагирует на ввод пользователя через намерения Dialogflow. Он может ответить двумя способами:
- Статическая. Если ваше действие всегда отвечает одинаково, вы можете предоставить шаблонный ответ в виде обычного текста.
- Динамический. Вы можете использовать веб-перехватчик, также известный как выполнение, чтобы выяснить соответствующий ответ и отправить его обратно в Google Assistant и, в конечном итоге, пользователю.
Ваши ответы должны подсказать пользователю, что сказать дальше, поэтому я поприветствую пользователя в нашем приложении, а затем попрошу его имя. Поскольку это статический ответ, мы можем предоставить его как обычный текст:
- Выберите «Намерения» в левом меню консоли.
- Наведите курсор на текст приветствия по умолчанию и нажмите на него. Это запускает редактор намерений Dialogflow.
- Прокрутите до раздела ” Ответ редактора” .
- Удалите все предварительно заполненные отзывы акций, наведя курсор на каждый ответ и щелкнув значок корзины.
- Нажмите кнопку «Добавить ответы» и выберите «Текстовый ответ».
- Введите это сообщение: «Привет, добро пожаловать в Bad Joke Generator. Как вас зовут?”
- Щелкните Сохранить.
Обучение языку: определите грамматику вашего разговора
Затем нам нужно убедиться, что наш агент Dialogflow может определить, какая часть ответа пользователя является обязательным параметром имени. Это означает предоставление примеров всех различных способов, которыми кто-то может назвать свое имя.
Когда дело доходит до понимания и обработки языка, механизм естественного обучения (NLU) Dialogflow выполняет большую часть тяжелой работы, поэтому вам не нужно перечислять все возможные ответы. Однако чем больше тренировочных фраз вы предоставите, тем больше у вас шансов на успешный матч, поэтому постарайтесь быть максимально точными.
Чтобы обучить вашего агента:
- В левом меню консоли выберите маленький +, который появляется рядом с намерениями.
- В самом верху экрана дайте этому намерению заголовок create_name.
- Щелкните, чтобы развернуть раздел Действия и параметры.
- В разделе «Имя параметра» введите «имя».
- Затем нам нужно определить объект, который будет отвечать за извлечение значений параметров из пользовательского ввода. Dialogflow имеет предварительно определенную сущность «имя», которую вы можете использовать, поэтому начните вводить @ sys.given-name, а затем выберите его из следующего раскрывающегося списка, когда он появится.
- Убедитесь, что диалог не продвигается, пока Dialogflow не узнает имя пользователя, выбрав «Обязательно».
- Нажмите «Определить запросы» и введите несколько дополнительных фраз, которые помощник должен повторять, пока не получит необходимую информацию, например «Извините, я не совсем понял ваше имя! Повторите?” Если в какой-то момент пользователь дает неожиданный ответ, наше действие будет циклически повторять эти запросы, пока ему не удастся извлечь правильный параметр.
- Когда вас устраивают введенные вами фразы, нажмите «Закрыть».
- Щелкните, чтобы развернуть раздел Обучающие фразы.
- В поле «Добавить выражение пользователя» введите «Меня зовут Джон» и нажмите клавишу Enter.
По умолчанию Dialogflow должен распознавать «Джон» как обязательный параметр и назначать его объекту @ sys.given-name.
Повторите этот процесс для вариаций этой фразы, таких как «Джон – мое имя», «Меня зовут Джон» и «Джон Смит».
Если Dialogflow когда-либо не удается назначить @ sys.given-name для «John», вы можете создать это назначение вручную:
- Выделите слово «Джон».
- Выберите @ sys.given-name: имя из раскрывающегося списка.
Создайте и разверните свой веб-перехватчик
Теперь, когда наш агент может распознать параметр имени, давайте применим эту информацию с пользой! Вы можете обратиться к пользователю по имени, создав веб-перехватчик Dialogflow:
- По-прежнему в редакторе намерений щелкните, чтобы развернуть раздел «Выполнение ».
- Выберите Включить выполнение.
- Перетащите ползунок Включить вызов веб-перехватчика для этого ползунка намерения в положение Вкл.
- Сохраните изменения, прокрутив экран вверх и нажав кнопку «Сохранить».
Затем создайте веб-перехватчик с помощью встроенного редактора Dialogflow:
- Выберите «Выполнение» в левом меню консоли.
- Переместите ползунок «Встроенный редактор» в положение «Вкл .».
- Убедитесь, что вкладка index.js выбрана, а затем скопируйте / вставьте следующее:
'use strict'
- Разверните веб-перехватчик, нажав кнопку «Развернуть». Dialogflow теперь подготовит и развернет ваш код веб-перехватчика в управляемой среде с помощью облачных функций для Firebase. Это может занять несколько минут, в зависимости от скорости вашего интернет-соединения.
В приведенном выше коде «имя» относится к параметру, который мы определили в редакторе намерений.
Проверьте свое действие
Вы можете протестировать свой проект с помощью симулятора действий:
- Убедитесь, что вы включили необходимые разрешения, перейдя на страницу «Элементы управления действиями» и убедившись, что ползунки «История приложений и веб- поиска», «Информация об устройстве» и «Активность голоса и звука» установлены в положение «Вкл .».
- Вернувшись в консоль Dialogflow, выберите в левом меню «Интеграции».
- Найдите карточку Google Ассистента и выберите Настройки интеграции.
- Если вы столкнетесь с диалоговым окном «Проверить настройки автоматического предварительного просмотра », оставьте включенным автоматический просмотр изменений.
- Выберите Test. Dialogflow теперь загрузит вашего агента и запустит симулятор действий в новой вкладке. В поле «Предлагаемый ввод» введите «Поговорите с моим тестовым приложением» и нажмите клавишу Enter на клавиатуре.
- Введите свое имя и нажмите Enter. Dialogflow теперь должен обращаться к вам по имени!
Поддерживайте беседу с последующими намерениями
Поскольку мы задали вопрос, нам нужно уметь справиться с ответом! Давайте создадим два последующих намерения для обработки ответов «Да» и «Нет»:
- В левом меню выберите «Намерения».
- Наведите указатель мыши на текст create_name и выберите «Добавить последующее намерение», когда он появится.
- Выберите Да в раскрывающемся меню.
- Повторите вышеуказанные шаги, но на этот раз выберите Нет.
Теперь вы можете редактировать эти намерения. Начнем с «нет»:
- Выберите create_name – без намерения.
- Щелкните, чтобы развернуть раздел ” Ответы”.
- Введите следующий статический ответ: «Хорошо, увидимся в следующий раз!»
- Поскольку мы попрощались, найдите ползунок Установить это намерение как конец разговора и перетащите его в положение Вкл.
- Прокрутите до верхней части экрана и нажмите Сохранить.
Теперь нам нужно отредактировать намерение «да»:
- В левом меню выберите «Намерения».
- Выберите create_name – да намерение.
- Разверните раздел «Ответы ».
- Введите следующий ответ: «Хотите послушать плохой анекдот о кошках или собаках?»
- Щелкните Сохранить.
Создание настраиваемой сущности
До сих пор мы придерживались готовых системных сущностей Dialogflow, таких как @ sys.given-name, но вы также можете создавать свои собственные сущности. Поскольку в настоящее время нет сущностей @ sys.cat или @ sys.dog, нам нужно определить их как настраиваемые сущности:
- В меню слева выберите Entities.
- Щелкните кнопку Create entity.
- Назовите эту сущность catOrDog.
- Выберите Щелкните здесь, чтобы добавить объект.
- В поле “Введите эталонное значение” введите “Cat”.
- Как и в случае с обучающими фразами, вам нужно ввести несколько синонимов, представляющих различные способы, которыми пользователи могут указать, что хотят услышать анекдот о кошках. После ввода каждого синонима нажмите Enter.
- Выберите последующий Щелкните здесь, чтобы изменить поле ввода.
- Введите «Собака» в качестве опорного значения, а затем добавить несколько синонимов.
- Щелкните Сохранить.
Использование ваших настраиваемых сущностей
Вы применяете эти настраиваемые сущности к своим намерениям точно так же, как сущности, определенные системой:
- В левом меню выберите «Намерения».
- Щелкните Создать намерение.
- Назовите это намерение «Шутка с собакой или кошкой».
- В разделе ” Дрессировка” введите “Собака” и “Кошка”. Dialogflow должен распознавать эти значения и сопоставлять их с вашей сущностью catOrDog.
- Щелкните Сохранить.
Раскройте свои лучшие плохие шутки!
Наша последняя задача – начать шутить над пользователем:
- В левом меню выберите «Намерения».
- Щелкните, чтобы развернуть намерение create_name.
- Наведите указатель мыши на create_name – да, последующее намерение, а затем выберите Добавить последующее намерение.
- В раскрывающемся списке выберите Custom.
- Выберите свое намерение, которое запустит редактор намерений.
- Имя намерения, сгенерированное автоматически, довольно длинное, поэтому давайте изменим его на «Собака».
- Под именем параметра введите «Собака».
- В Entity начните вводить «catOrDog», а затем выберите его из раскрывающегося списка, когда он появится.
- В разделе ” Значение” введите “Собака”.
- Введите такие обучающие фразы, как «Я хочу послушать анекдот о собаках», «Расскажи мне плохой анекдот о собаках» или «Собаки».
- В разделе «Текстовый ответ» напечатайте самую отвратительную собачью шутку. Я использую «Как вы называете большую собаку, которая медитирует? Знающий волк ».
- Никто не захочет продолжать говорить с нашим действием после такой ужасной шутки, поэтому включите ползунок Установить это намерение как конец разговора.
- Щелкните Сохранить.
Повторите описанные выше шаги, чтобы создать намерение кошки, вот и все!
Осталось только запустить Action Simulator и посмотреть, как Action обрабатывает различные ответы.
Подведение итогов
Это действие может быть простым, но оно демонстрирует многие задачи, которые вы будете выполнять снова и снова при создании своих собственных действий. Вы можете использовать эти методы для изучения имени пользователя, извлечения параметров, предоставления статических и динамических ответов и обучения агентов Dialogflow и применять их практически к любому проекту Action.
Если вы решили разработать Действия Google Assistant, которые не ограничиваются лишь парой плохих шуток, поделитесь своей работой с другими и отправьте свое действие на утверждение!
Будете ли вы заниматься разработкой для каталога Actions? Дайте нам знать в комментариях ниже!
Источник записи: https://www.androidauthority.com