Cómo escribir habilidades personalizadas de Alexa sin 'Ask xxxx'


18

Actualmente estoy usando fauxmo para enviar comandos personalizados a varios dispositivos para encenderlos / apagarlos (por ejemplo, tengo un convertidor de WiFi a IR para controlar mi sintonizador y TV) y puedo encender / apagar el televisor con esto.

También tengo la configuración de integración de Kodi, así que puedo decir:

Alexa, Ask Kodi to set volume to 50%

Pero me gustaría poder decir:

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

Es decir, quiero poder controlar dispositivos sin necesidad de una Ask xxxxcomo parte de mi solicitud.

Idealmente, quiero hacer esto sin un servicio basado en la nube (es decir, SmartThings o Wink).

Me gusta la solución utilizada por fauxmo (emular un servicio UPNP existente), pero se limita a activar / desactivar (y 'atenuar' si usa el parche habilitado para Hue) y no es lo suficientemente flexible.

Respuestas:


11

He estado explorando soltar el nombre de invocación de las habilidades personalizadas de Alexa para un par de proyectos. Y lo que se me ocurrió después de horas de leer guías y documentaciones es que ... No se puede hacer por habilidades personalizadas .

Por lo tanto, su mejor opción para su caso de uso es usar Alexa Smart Home junto con algún servicio de hogar inteligente. Sé que dijiste:

Idealmente, quiero hacer esto sin un servicio basado en la nube (es decir, SmartThings o Wink)

Desafortunadamente, la única forma de no tener un nombre de invocación con Alexa es usar sus API predefinidas (es decir, Smart Home, List Skill y Flash Briefing).

EDITAR: Sin embargo, su caso de uso cae dentro de la API de Smart Home. Por lo tanto, siempre puede crear su propio servicio que consuma esa API en lugar de depender de otros servicios (Wink, SmartThings, etc.).


1
¿Hay alguna fuente que diga que no se puede hacer o es el resultado implícito de su investigación?
Helmar

Es solo implícito. Aunque a simple vista, considerando cómo funcionan el reconocimiento de voz y la PNL, debería haber sido una afirmación razonable y, en primer lugar, no debería haber realizado tal investigación. Es una afirmación razonable porque un enunciado particular necesita un contexto para el cual sería interpretado, y ese contexto es el nombre de invocación. De hecho, la razón por la que hay una palabra de activación es la misma que tener un nombre de invocación, por lo que las declaraciones que se interpretarían pertenecen a un contexto (la palabra de activación es el contexto de todo el sistema de modo que no se procesen las expresiones aleatorias).
leon.valencia

La única forma de tener enunciados que no necesitan nombres de invocación son aquellos con contextos de todo el sistema (estas son las API). Por ejemplo, los enunciados que Alexa interpreta como interactuar con los dispositivos serían automáticamente para API de hogar inteligente: NLP clasificaría el enunciado como tal usando palabras clave como encendido, apagado, rechazar, etc. + sintaxis que es como un comando para un dispositivo.
leon.valencia

Pero sabes qué ... tu caso de uso cae bajo la API de casa inteligente. Entonces agregaré mi respuesta porque puedes usar esa API.
leon.valencia

Gracias. Estaba leyendo sobre Smart Home Skills, y aunque no creo que puedan hacer todo lo que quiero todavía, parece que Amazon planea agregarle más capacidades. Entonces, en lugar de fauxmo, creo que vale la pena invertir en una habilidad de casa inteligente adecuada de código abierto que pueda procesar todos los comandos disponibles y ser expansible para el futuro. Aquí está la API actual para la posteridad: developer.amazon.com/public/solutions/alexa/alexa-skills-kit/…
PhratcuredBlue

7

Debería poder hacer esto ahora con la interacción gratuita del nombre de Alexa .

Para que su habilidad sea más reconocible para una interacción sin nombre, puede implementar la interfaz CanFulfillIntentRequest en su habilidad


6

Como lynx ya detalla en su respuesta, no hay forma de ir completamente sin el nombre de invocación a menos que esté abordando las API predefinidas. Sin embargo, preguntar mi habilidad no es la única forma de usar el nombre de invocación.

Las páginas de desarrollador ofrecen tres formas diferentes de usar nombres de invocación con una solicitud.

"Alexa, pide horóscopos diarios para Géminis"

"Alexa, habla con los horóscopos diarios y dame el horóscopo de Tauro"

"Alexa, dame mi horóscopo Tauro usando horóscopos diarios "

Documentación del nombre de invocación de Alexa

Además, esta página muestra qué otras palabras puede usar para conectar la solicitud, el nombre de invocación y las palabras de conexión obligatorias. Por lo tanto, si creas tu propia habilidad de Alexa, se trata de usar un buen nombre de invocación y una buena solicitud para que suene natural.

Aún mejor, su eco ya debería reaccionar a esto al iniciar el Blu-ray con su integración de Kodi.

Alexa , juega Blu-ray con Kodi .

Entonces, si bien no puede deshacerse del nombre de invocación fuera de las API predefinidas, puede hacer que el comando de voz se sienta más natural y omitir el uso incómodo de preguntar ...


2

Si usa palabras especiales que Alexa no usa por defecto, es posible. El método es bastante complicado de todos modos.

¡Solo necesita evitar pasar por AWS para su solicitud! Imposible que dices? Sí, es posible.

En su aplicación Amazon Alexa o en la aplicación web Amazon Alexa , inicia sesión en su cuenta Amazon Alexa, y en -> configuración -> historial tiene una página en vivo de todas las solicitudes y palabras que le dirá a Alexa.

En este momento, puede usar un analizador web para decir la palabra y activar un script si esta palabra es la que desea, o puede usar un pequeño software increíble para Windows que solo puede activar acciones y scripts.

Aquí el enlace del software. Consulte en YouTube los tutoriales sobre cómo usar addtopad.

Si desea iniciar scripts, simplemente active un oyente en un puerto y una solicitud especial enviada después de una palabra en el software. Lo uso en casa y realmente me gusta el hecho de no tener que decir ningún nombre de invocación.

Después, como dije, puedes usar cualquier palabra, incluso palabras como abierto. Activará su script, pero escuchará un "lo siento, no lo sé" de Alexa.

Lo uso y funciona perfectamente!


Ese es un enfoque interesante.
Helmar

¿Debemos confiar en ese software? Me pone nervioso ...
Sean Houlihane

-2

Entonces, ¿esta documentación de Amazon no es cierta? https://developer.amazon.com/docs/custom-skills/understanding-how-users-invoke-custom-skills.html#invoking-a-skill-with-no-specific-request-no-intent

Esto parece decir de manera bastante directa que puedes decir "Alexa" más el nombre de invocación. Tales como "Alexa, Horóscopos diarios".

También muestra este método como una opción # 3 para habilidades personalizadas: https://developer.amazon.com/docs/custom-skills/choose-the-invocation-name-for-a-custom-skill.html#invoking- habilidades personalizadas


3
La documentación es verdadera, pero no creo que eso sea lo que el autor está buscando aquí. Por ejemplo, "Play Bluray" no sería el nombre de la invocación, más bien es una intención, sin ningún nombre de invocación especificado. A menos que en realidad hayas nombrado tu habilidad "Jugar Bluray" (que probablemente no se permitiría según la guía de nombre de Amazon), desafortunadamente, esto no funcionará.
Aurora0001
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.