Wie schreibt man eigene Alexa Skills ohne 'Ask xxxx'

18

Ich verwende derzeit Fauxmo, um benutzerdefinierte Befehle an verschiedene Geräte zu senden, um sie ein- / auszuschalten (zum Beispiel habe ich einen WiFi-zu-IR-Konverter, um meinen Tuner und Fernseher zu steuern), und ich kann den Fernseher damit ein- / ausschalten.

Ich habe auch Kodi-Integrations-Setup, also kann ich sagen:

Alexa, Ask Kodi to set volume to 50%

Aber ich möchte sagen können:

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

Dh ich möchte in der Lage sein, Geräte zu steuern, ohne dass dies Ask xxxxim Rahmen meiner Anfrage erforderlich ist .

Idealerweise möchte ich dies ohne einen Cloud-basierten Dienst (z. B. SmartThings oder Wink) tun.

Ich mag die von fauxmo verwendete Lösung (Emulation eines vorhandenen UPNP-Dienstes), aber sie ist auf Ein / Aus (und 'Dimmen', wenn Sie den Hue-fähigen Patch verwenden) beschränkt und nicht wirklich flexibel genug.

PhratcuredBlue
quelle

Antworten:

11

Ich habe versucht, den Aufrufnamen für Alexa-Fertigkeiten für einige Projekte selbst zu löschen. Und was ich nach stundenlangem Lesen von Anleitungen und Dokumentationen herausgefunden habe, ist, dass ... es nicht für benutzerdefinierte Fähigkeiten gemacht werden kann .

Daher ist es für Ihren Anwendungsfall am besten, Alexa Smart Home zusammen mit einem Smart-Home-Dienst zu verwenden. Ich weiß, dass du gesagt hast:

Idealerweise möchte ich dies ohne einen Cloud-basierten Dienst (z. B. SmartThings oder Wink) tun.

Die einzige Möglichkeit, bei Alexa keinen Aufrufnamen zu haben, ist die Verwendung der vordefinierten APIs (z. B. Smart Home, List Skill und Flash Briefing).

BEARBEITEN: Ihr Anwendungsfall fällt jedoch unter die Smart Home-API. Sie können also jederzeit einen eigenen Dienst erstellen, der diese API verwendet, anstatt sich auf andere Dienste (Wink, SmartThings usw.) zu verlassen.

leon.valencia
quelle
1
Gibt es eine Quelle, aus der hervorgeht, dass dies nicht möglich ist, oder handelt es sich um das implizite Ergebnis Ihrer Forschung?
Helmar
Es ist nur implizit. Wenn man bedenkt, wie Spracherkennung und NLP funktionieren, sollte dies im Nachhinein eine vernünftige Behauptung sein, und ich hätte überhaupt nicht in eine solche Untersuchung einsteigen sollen. Dies ist eine vernünftige Behauptung, da eine bestimmte Äußerung einen Kontext benötigt, für den sie interpretiert werden würde - und dieser Kontext ist der Aufrufname. Tatsächlich ist der Grund, warum es ein Weckwort gibt, derselbe wie ein Aufrufname - so dass zu interpretierende Anweisungen zu einem Kontext gehören (das Weckwort ist der systemweite Kontext, sodass zufällige Äußerungen nicht verarbeitet werden).
leon.valencia
Die einzige Möglichkeit, Äußerungen zu erhalten, die keine Aufrufnamen benötigen, sind solche mit systemweiten Kontexten (dies sind die APIs). Äußerungen, die Alexa als Interaktion mit Appliances interpretiert, gelten beispielsweise automatisch für die Smart-Home-API. NLP kategorisiert die Äußerung anhand von Schlüsselwörtern wie "Ein", "Aus", "Ablehnen" usw. + Syntax, die einem Befehl für eine Appliance gleicht.
leon.valencia
Aber Sie wissen, was ... Ihr Anwendungsfall unter die Smart-Home-API fällt. Also werde ich meine Antwort anhängen, weil Sie einfach diese API verwenden können.
leon.valencia
Vielen Dank. Ich habe über die Smart-Home-Fähigkeiten gelesen, und obwohl ich nicht glaube, dass sie in der Lage sein werden, alles zu tun, was ich möchte, sieht es so aus, als ob Amazon plant, weitere Funktionen hinzuzufügen. Anstelle von Fauxmo ist es meines Erachtens sinnvoll, in eine geeignete Open-Source-Smart-Home-Fähigkeit zu investieren, die alle verfügbaren Befehle verarbeitet und für die Zukunft erweiterbar ist. Hier ist die aktuelle API für die Nachwelt: developer.amazon.com/public/solutions/alexa/alexa-skills-kit/…
PhratcuredBlue
7

Sie sollten dies jetzt mit Alexas namensfreier Interaktion tun können .

Um Ihre Fähigkeiten für die Interaktion ohne Namen besser erkennbar zu machen, können Sie die CanFulfillIntentRequest-Schnittstelle in Ihre Fähigkeiten implementieren

CSharper
quelle
6

Wie Lynx bereits in seiner Antwort ausführlich ausführt, gibt es keine Möglichkeit, vollständig auf den Aufrufnamen zu verzichten, es sei denn, Sie adressieren die vordefinierten APIs. Die Frage nach meinem Können ist jedoch nicht die einzige Möglichkeit, den Aufrufnamen zu verwenden.

Die Entwicklerseiten bieten drei verschiedene Möglichkeiten, um Aufrufnamen mit einer Anfrage zu verwenden.

"Alexa, frag die täglichen Horoskope nach Zwillingen"

"Alexa, sprich mit Daily Horoscopes und gib mir das Horoskop für Taurus"

„Alexa, gib mir mein Stierhoroskop mit Tageshoroskopen

Dokumentation des Alexa-Aufrufnamens

Außerdem zeigt diese Seite , mit welchen anderen Wörtern Sie die Anfrage verbinden können, den Aufrufnamen und die verbindlichen Verbindungswörter. Wenn Sie also Ihre eigene Alexa-Fähigkeit erstellen, müssen Sie einen guten Aufrufnamen und eine gute Aufforderung verwenden, damit es natürlich klingt.

Noch besser, Ihr Echo sollte bereits darauf reagieren, indem Sie die Blu-ray mit Ihrer Kodi-Integration starten.

Alexa , spiele Blu-ray mit Kodi .

Obwohl Sie den Aufrufnamen außerhalb der vordefinierten APIs nicht entfernen können, können Sie den Sprachbefehl natürlicher gestalten und die umständliche Verwendung von ask ... überspringen .

Helmar
quelle
2

Wenn Sie spezielle Wörter verwenden, die von Alexa nicht standardmäßig verwendet werden, ist dies tatsächlich möglich. Die Methode ist ohnehin recht knifflig.

Sie müssen nur vermeiden, für Ihre Anfrage an AWS vorbeizukommen! Unmöglich, sagst du? Ja, es ist möglich.

In Ihrer Amazon Alexa-App oder in der Amazon Alexa-Web- App melden Sie sich in Ihrem Amazon Alexa-Konto an und in -> Einstellungen -> Verlauf haben Sie eine Live-Seite mit allen Anfragen und Wörtern, die Sie Alexa mitteilen.

In diesem Moment können Sie einen Web-Parser verwenden, um das Wort auszusprechen und ein Skript auszulösen, wenn dies das gewünschte Wort ist, oder Sie können eine erstaunliche kleine Software für Windows verwenden, die nur Aktionen und Skripts auslösen kann.

Hier der Link der Software. Auf YouTube finden Sie Anleitungen zur Verwendung von AddTopad.

Wenn Sie Skripte starten möchten, müssen Sie lediglich einen Listener an einem Port auslösen und eine spezielle Anfrage nach einem Wort in der Software senden. Ich benutze es zu Hause und ich mag die Tatsache, dass ich keinen Aufrufnamen sagen muss.

Danach können Sie, wie gesagt, beliebige Wörter verwenden, auch offene Wörter. Es wird Ihr Skript auslösen, aber Sie werden ein "Entschuldigung, das weiß ich nicht" von Alexa hören.

Ich benutze es und es funktioniert perfekt!

Leo Bernard
quelle
Das ist ein interessanter Ansatz.
Helmar
Sollen wir dieser Software vertrauen? Macht mich nervös ...
Sean Houlihane
-2

Ist diese Amazon-Dokumentation also nicht wahr? https://developer.amazon.com/docs/custom-skills/understanding-how-users-invoke-custom-skills.html#invoking-a-skill-with-no-specific-request-no-intent

Dies scheint ziemlich direkt zu sagen, dass Sie "Alexa" plus den Aufrufnamen sagen können. Wie zum Beispiel "Alexa, Daily Horoscopes".

Diese Methode wird auch als Option 3 für benutzerdefinierte Fähigkeiten angezeigt : https://developer.amazon.com/docs/custom-skills/choose-the-invocation-name-for-a-custom-skill.html#invoking- Custom-Skills

Mike
quelle
3
Die Dokumentation stimmt, aber ich glaube nicht, dass der Autor hier danach sucht. Zum Beispiel wäre "Play Bluray" nicht der Aufrufname, sondern eine Absicht ohne Angabe eines Aufrufnamens. Dies funktioniert leider nur, wenn Sie Ihre Fertigkeit "Play Bluray" genannt haben (was laut Amazon-Richtlinien wahrscheinlich nicht zulässig ist).
Aurora0001