Comment écrire des compétences Alexa personnalisées sans 'Ask xxxx'

18

J'utilise actuellement fauxmo pour envoyer des commandes personnalisées à divers appareils pour les allumer / éteindre (par exemple, j'ai un convertisseur WiFi vers IR pour contrôler mon tuner et mon téléviseur) et je peux allumer / éteindre le téléviseur avec cela.

J'ai également la configuration d'intégration de Kodi, donc je peux dire:

Alexa, Ask Kodi to set volume to 50%

Mais je voudrais pouvoir dire:

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

C'est-à-dire que je veux pouvoir contrôler des appareils sans en avoir besoin Ask xxxxdans le cadre de ma demande.

Idéalement, je veux le faire sans service basé sur le cloud (par exemple SmartThings ou Wink).

J'aime la solution utilisée par fauxmo (émuler un service UPNP existant), mais elle est limitée à on / off (et 'dim' si vous utilisez le patch activé Hue) et pas vraiment assez flexible.

PhratcuredBlue
la source

Réponses:

11

J'ai exploré moi-même la suppression du nom d'invocation pour les compétences personnalisées d'Alexa pour quelques projets. Et ce que j'ai trouvé après des heures de lecture de guides et de documentations, c'est que ... Cela ne peut pas être fait pour des compétences personnalisées .

Donc, votre meilleur pari pour votre cas d'utilisation est d'utiliser Alexa Smart Home avec un service de maison intelligente. Je sais que tu as dit:

Idéalement, je veux le faire sans service cloud (par exemple SmartThings ou Wink)

Malheureusement, la seule façon de ne pas avoir de nom d'invocation avec Alexa est d'utiliser leurs API prédéfinies (c'est-à-dire Smart Home, List Skill et Flash Briefing).

EDIT: votre cas d'utilisation relève cependant de l'API Smart Home. Vous pouvez donc toujours créer votre propre service qui utilise cette API au lieu de compter sur d'autres services (Wink, SmartThings, etc.).

leon.valencia
la source
1
Y a-t-il une source qui dit que cela ne peut pas être fait, ou est-ce le résultat implicite de votre recherche?
Helmar
C'est juste implicite. Bien que rétrospectivement, compte tenu du fonctionnement de la reconnaissance vocale et de la PNL, cela aurait dû être une affirmation raisonnable et je n'aurais pas dû me lancer dans une telle recherche en premier lieu. C'est une assertion raisonnable car un énoncé particulier a besoin d'un contexte pour lequel il serait interprété - et ce contexte est le nom de l'invocation. En fait, la raison même pour laquelle il y a un mot de réveil est la même chose que d'avoir un nom d'invocation - de sorte que les instructions qui seraient interprétées appartiennent à un contexte (le mot de réveil est le contexte à l'échelle du système de sorte que les énoncés aléatoires ne soient pas traités).
leon.valencia
La seule façon d'avoir des énoncés qui n'ont pas besoin de noms d'invocation sont ceux avec des contextes à l'échelle du système (ce sont les API). Par exemple, les énoncés qu'Alexa interprète comme interagissant avec les appareils seraient automatiquement pour l'API de la maison intelligente - NLP catégoriserait l'énoncé en tant que tel en utilisant des mots clés comme on, off, turn down, etc + syntaxe qui est comme une commande à un appareil.
leon.valencia
Mais vous savez quoi ... votre cas d'utilisation relève de l'API de la maison intelligente. Je vais donc ajouter ma réponse car vous pouvez simplement utiliser cette API.
leon.valencia
Merci. Je lisais sur les compétences Smart Home, et même si je ne pense pas qu'ils seront en mesure de faire tout ce que je veux pour le moment, il semble qu'Amazon envisage d'y ajouter plus de fonctionnalités. Donc, plutôt que fauxmo, je pense qu'il vaut peut-être la peine d'investir dans une compétence Smart Home open-source appropriée qui peut traiter toutes les commandes disponibles et être extensible à l'avenir. Voici l'API actuelle pour la postérité: developer.amazon.com/public/solutions/alexa/alexa-skills-kit/…
PhratcuredBlue
7

Vous devriez pouvoir le faire maintenant avec l' interaction sans nom d'Alexa .

Pour rendre votre compétence plus visible pour une interaction sans nom, vous pouvez implémenter l'interface CanFulfillIntentRequest dans votre compétence

CSharper
la source
6

Comme lynx le précise déjà dans sa réponse, il n'y a aucun moyen de passer complètement sans nom d'invocation à moins que vous ne vous adressiez aux API prédéfinies. Cependant demander ma compétence n'est pas la seule façon d'utiliser le nom d'invocation.

Les pages de développeur offrent trois façons différentes d'utiliser des noms d'invocation avec une demande.

"Alexa, demande des horoscopes quotidiens pour les Gémeaux"

"Alexa, parle aux horoscopes quotidiens et donne-moi l'horoscope du Taureau"

"Alexa, donne-moi mon horoscope Taurus en utilisant des horoscopes quotidiens "

Documentation du nom d'invocation Alexa

De plus, cette page montre quels autres mots vous pouvez utiliser pour connecter la demande, le nom de l'invocation et les mots de connexion obligatoires. Ainsi, si vous créez votre propre compétence Alexa, il s'agit d'utiliser un bon nom d'invocation et une bonne demande pour le rendre naturel.

Encore mieux, votre écho devrait déjà réagir à cela en démarrant le Blu-ray avec votre intégration Kodi.

Alexa , joue Blu-ray avec Kodi .

Ainsi, alors que vous ne pouvez pas vous débarrasser du nom d'invocation en dehors des API prédéfinies , vous pouvez faire la commande vocale sensation plus naturelle et sauter le maladroit demander ... l' utilisation.

Helmar
la source
2

Si vous utilisez des mots spéciaux non utilisés par défaut par Alexa, c'est en fait possible. La méthode est de toute façon assez délicate.

Vous avez juste besoin d'éviter de passer par AWS pour votre demande! Impossible vous dites? Oui c'est possible.

Dans votre application Amazon Alexa ou sur l' application Web Amazon Alexa , vous vous connectez à votre compte Amazon Alexa, et dans -> paramètres -> l'historique, vous avez une page en direct de toutes les demandes et mots que vous direz à Alexa.

À ce moment, vous pouvez utiliser un analyseur Web pour prononcer le mot et déclencher un script si ce mot est celui que vous voulez, ou vous pouvez utiliser uniquement un petit logiciel étonnant pour Windows qui peut déclencher des actions et des scripts.

Voici le lien du logiciel. Consultez YouTube pour des didacticiels sur la façon d'utiliser addtopad.

Si vous souhaitez lancer des scripts, il suffit de déclencher un écouteur sur un port et une requête spéciale envoyée après un mot dans le logiciel. Je l'utilise à la maison et j'aime beaucoup le fait de ne pas avoir à dire de nom d'invocation.

Après, comme je l'ai dit, vous pouvez utiliser n'importe quel mot, même des mots comme ouvert. Cela déclenchera votre script, mais vous entendrez un "désolé, je ne sais pas" d'Alexa.

Je l'utilise et ça marche parfaitement!

léo Bernard
la source
Voilà une approche intéressante.
Helmar
Faut-il faire confiance à ce logiciel? Ça me rend nerveux ...
Sean Houlihane
-2

Alors, cette documentation Amazon n'est-elle pas vraie? https://developer.amazon.com/docs/custom-skills/understanding-how-users-invoke-custom-skills.html#invoking-a-skill-with-no-specific-request-no-intent

Cela semble dire assez directement que vous pouvez dire «Alexa» plus le nom de l'invocation. Tels que "Alexa, horoscopes quotidiens".

Il montre également cette méthode comme une option # 3 pour les compétences personnalisées: https://developer.amazon.com/docs/custom-skills/choose-the-invocation-name-for-a-custom-skill.html#invoking- compétences personnalisées

Mike
la source
3
La documentation est vraie, mais je ne pense pas que ce soit ce que l'auteur recherche ici. Par exemple, "Play Bluray" ne serait pas le nom d'invocation - c'est plutôt une intention, sans aucun nom d'invocation spécifié. À moins que vous n'ayez nommé votre compétence "Jouer à Bluray" (ce qui ne serait probablement pas autorisé par le nom d'Amazon), cela ne fonctionnera malheureusement pas.
Aurora0001