Разработка BytePace
105

Google Assistant: настройка кастомного ассистента

В 2018 году на конференции Google I/O представили ассистента - голосового помощника. Чуть позже был открыт доступ к консоли, где можно было создать своего собственного голосового ассистента, который мог выполнять команды, специфические для конкретного пользователя или группы пользователей. В этой статье Андрей Ващенко, Android-разработчик BytePace, расскажет подробнее как это сделать.

В закладки

Возможности Google Assistant

Помимо всех возможностей стандартного Google Ассистента, кастомный ассистент может:

  • распознавать в голосовой команде некоторые переменные, например: "выключи лампу номер 3"; цифра 3 является переменной, и значение этой переменной можно использовать в конкретных целях, о которых будет сказано ниже;
  • отправлять запросы на сервер и обрабатывать ответы, а также получать ответы через веб-хуки, если операция требует длительного выполнения;
  • распознавать разные типы переменных: числа, строки, даты, булеан (включить\выключить). Также любую операцию можно дополнить командой "ещё", например: "увеличь скорость вентилятора на 10 процентов" … "еще на 5" … "еще на 3";
  • отвечать фразами, которые имеют один смысл, но звучат по-разному, например "Включи чайник в 12:30" -> "Хорошо", "Так точно", "Будет сделано" и т.п., и возможные ответы настраиваются разработчиком. Также распознавать синонимы, например: "Включи чайник в 12:30" и "Активируй чайник в 12:30". Данные слова также могут быть указаны разработчиком.

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

Как создать голосового помощника

Переходим в консоль Actions on Google: https://console.actions.google.com/

Создаем новый проект, даем название проекта (это не имя бота!), выбираем страну и язык:

Выберите сферу деятельности своего бота. Это важно для первоначальных настроек ассистента

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

Настройка голосового помощника

Переходим к добавлению команд. Выбираем Custom intent.

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

Немного информации:

Intents - это функции, которые должен выполнять наш бот. Здесь задаются её аргументы (переменные), а также результат выполнения этой функции (ответ) и откуда этот ответ взять (ждать срабатывания хука или просто ответить фразой).

Entities - это словарь синонимов и терминов, актуальных для пользователя или группы пользователей. Используется для расширения словарного запаса бота и пользователей для общения с ботом.

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

Fulfillment - модуль для настройки веб-хуков и связи с сервером. Всё, что связано с API вашего сервера, можно настроить здесь.

Integrations - внедрение вашего бота в наиболее популярные сервисы и мессенджеры, например Slack, WhatsApp, Skype, Telegram, Trello и т.п.

Training - тренировка бота, проверка качества работы и правильности выполнения операций, а также обучение каким-нибудь специфическим вещам.

History и Analytics - всё, что касается логирования, ведения статистики использования, статистики ошибок и статистики запросов, можно будет узнать в этих модулях.

Contexts - позволяет связывать несколько функций в цепочку. Указывается функция перед текущей и функция после текущей функции.

Events - позволяет заменять стандартные триггеры Google Ассистента на свои, например, приветствие.

Training phrases - голосовые команды, которые должны прозвучать, чтобы бот начал выполнение этой функции.

Actions and parameters - здесь задаются аргументы функции (переменные).

Responses - ответные фразы бота.

Fulfillment - настройка запроса или хука для выполнения функции на сервере.

Что сделал я? Я заменил стандартный приветственный интент на свой. В итоге получилось следующее:

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

Спасибо за внимание!

Больше статей на нашем сайте:

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "BytePace", "author_type": "self", "tags": [], "comments": 2, "likes": 4, "favorites": 8, "is_advertisement": false, "subsite_label": "dev", "id": 78246, "is_wide": false, "is_ugc": true, "date": "Tue, 06 Aug 2019 14:29:21 +0300" }
{"average":25541,"one":95,"ten":74}
Сколько денег вы откладываете в месяц?
Ответьте и узнаете, сколько копят другие.
0 ₽
70 000+ ₽
0 ₽
{ "id": 78246, "author_id": 331975, "diff_limit": 1000, "urls": {"diff":"\/comments\/78246\/get","add":"\/comments\/78246\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/78246"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 235819, "last_count_and_date": null }
2 комментария

Популярные

По порядку

1

Скажите, с помощью этого инструмента можно научить ассистента работать с программой которая не имеет поддержки ассистента?

Ответить
0

Спасибо за ваш вопрос!

Научить ассистента можно, если программа будет иметь API для управления через веб-сервер.

Для интеграции Google Assistant в программу имеются SDK для Go, Java (Android), C#, Node.js, Ruby. Подробнее об интеграции можно почитать здесь: https://developers.google.com/assistant/sdk/

Ответить
0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Нейронная сеть научилась читать стихи
голосом Пастернака и смотреть в окно на осень
Подписаться на push-уведомления
{ "page_type": "default" }