Как написать пользовательские навыки Алекса без «Ask xxxx»


18

В настоящее время я использую fauxmo для отправки пользовательских команд на различные устройства для их включения / выключения (например, у меня есть конвертер WiFi в IR для управления моим тюнером и телевизором), и я могу включить / выключить телевизор с этим.

У меня также есть настройка интеграции Kodi, поэтому я могу сказать:

Alexa, Ask Kodi to set volume to 50%

Но я бы хотел сказать:

Alexa, Set tuner volume to 50%
Alexa, Play Bluray

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

В идеале я хочу сделать это без облачного сервиса (т.е. SmartThings или Wink).

Мне нравится решение, используемое fauxmo (эмулирует существующий сервис UPNP), но оно ограничено вкл / выкл (и dim, если вы используете патч с включенным оттенком) и недостаточно гибкое.

Ответы:


11

Я изучал возможность отказаться от имени вызова для пользовательских навыков Alexa для нескольких проектов. И после долгих часов чтения руководств и документации я придумал, что ... это невозможно сделать с помощью пользовательских навыков .

Таким образом, лучшим вариантом для вашего случая использования является использование Alexa Smart Home вместе с каким-то умным домашним сервисом. Я знаю, что вы сказали:

В идеале я хочу сделать это без облачного сервиса (т.е. SmartThings или Wink)

К сожалению, единственный способ не иметь имя для вызова в Alexa - это использовать их предопределенные API-интерфейсы (т. Е. Умный дом, Список навыков и Брифинг Flash).

РЕДАКТИРОВАТЬ: ваш вариант использования попадает в Smart Home API, хотя. Таким образом, вы всегда можете создать свой собственный сервис, который использует этот API вместо того, чтобы полагаться на другие сервисы (Wink, SmartThings и т. Д.).


1
Есть ли источник, который говорит, что это невозможно, или это неявный результат вашего исследования?
Хелмар

Это просто неявно. Хотя, оглядываясь назад, учитывая то, как работает распознавание голоса и НЛП, это должно было быть разумным утверждением, и я не должен был начинать такое исследование с самого начала. Это разумное утверждение, потому что конкретное высказывание нуждается в контексте, для которого оно будет интерпретировано - и этот контекст является именем вызова. Фактически, причина появления слова пробуждения та же, что и имя вызова - так что операторы, которые должны быть интерпретированы, принадлежат контексту (слово пробуждения является общесистемным контекстом, так что случайные высказывания не обрабатываются).
leon.valencia

Единственный способ иметь высказывания, которые не нуждаются в именах вызовов, - это те, которые имеют общесистемный контекст (это API). Например, высказывания, которые Alexa интерпретирует как взаимодействие с устройствами, будут автоматически использоваться для API умного дома - NLP будет классифицировать высказывание как таковое, используя ключевые слова, такие как on, off, down и т. Д. + Синтаксис, который похож на команду для устройства.
leon.valencia

Но вы знаете, что ... ваш вариант использования подпадает под API умного дома. Поэтому я добавлю свой ответ, потому что вы можете просто использовать этот API.
leon.valencia

Благодарю. Я читал об умных умных домах, и хотя я не думаю, что они смогут сделать все, что я хочу, похоже, Amazon планирует добавить в него больше возможностей. Поэтому, вместо того, чтобы использовать fauxmo, я думаю, что стоит инвестировать в правильный умный дом с открытым исходным кодом, который может обрабатывать все доступные команды и быть расширяемым в будущем. Вот текущий API для потомков: developer.amazon.com/public/solutions/alexa/alexa-skills-kit/...
PhratcuredBlue

7

Вы должны быть в состоянии сделать это сейчас с помощью свободного взаимодействия имени Алекса .

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


6

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

Страницы разработчика предлагают три различных способа использования имен вызовов с запросом.

«Алекса, спрашивай ежедневные гороскопы для Близнецов»

«Алекса, поговори с ежедневными гороскопами и дай мне гороскоп для Тельца»

«Алекса, дай мне мой гороскоп Тельца, используя Ежедневные Гороскопы »

Документация по имени вызова Alexa

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

Более того, ваше эхо должно уже реагировать на это, запуская Blu-ray с вашей интеграцией Kodi.

Алекса , играй в Blu-ray с Коди .

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


2

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

Вам просто нужно избегать прохождения AWS по вашему запросу! Невозможно сказать? Да, это возможно.

В вашем приложении Amazon Alexa или в веб- приложении Amazon Alexa вы входите в свою учетную запись Amazon Alexa, и в -> settings -> history у вас есть живая страница со всеми запросами и словами, которые вы скажете Alexa.

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

Здесь ссылка на программное обеспечение. Проверьте на YouTube учебники о том, как использовать addtopad.

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

После, как я уже сказал, вы можете использовать любые слова, даже такие слова, как открытый. Это вызовет ваш сценарий, но вы услышите «извините, я не знаю» от Алекса.

Я использую это, и это работает отлично!


Это интересный подход.
Хелмар

Должны ли мы доверять этому программному обеспечению? Заставляет меня нервничать ...
Шон

-2

Так что, эта документация Amazon не соответствует действительности? https://developer.amazon.com/docs/custom-skills/understanding-how-users-invoke-custom-skills.html#invoking-a-skill-with-no-specific-request-no-intent

Кажется, это прямо говорит о том, что вы можете сказать «Alexa» плюс имя вызова. Такие как «Алекса, Ежедневные Гороскопы».

Он также показывает этот метод как вариант № 3 для пользовательских навыков: https://developer.amazon.com/docs/custom-skills/choose-the-invocation-name-for-a-custom-skill.html#invoking- пользовательские навыки


3
Документация верна, но я не думаю, что это то, что автор ищет здесь. Например, «Play Bluray» не будет именем вызова - скорее это намерение, без указания имени вызова. Если вы на самом деле не назвали свой навык «Играть Bluray» (что, вероятно, не будет разрешено в соответствии с указаниями Amazon по имени), к сожалению, это не сработает.
Aurora0001
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.