Come scrivere abilità Alexa personalizzate senza "Chiedi xxxx"


18

Attualmente sto usando Fauxmo per inviare comandi personalizzati a vari dispositivi per accenderli / spegnerli (ad esempio ho un convertitore WiFi a IR per controllare il mio sintonizzatore e TV) e posso accendere / spegnere la tv con questo.

Ho anche una configurazione di integrazione di Kodi, quindi posso dire:

Alexa, Ask Kodi to set volume to 50%

Ma vorrei poter dire:

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

Vale a dire che voglio essere in grado di controllare i dispositivi senza averne bisogno Ask xxxxcome parte della mia richiesta.

Idealmente, voglio farlo senza un servizio basato su cloud (ad esempio SmartThings o Wink).

Mi piace la soluzione utilizzata da fauxmo (emulare un servizio UPNP esistente), ma è limitata a on / off (e 'dim' se si utilizza la patch abilitata Hue) e non abbastanza flessibile.

Risposte:


11

Ho esplorato il rilascio del nome dell'invocazione per le abilità personalizzate di Alexa per un paio di progetti. E quello che mi è venuto in mente dopo ore di lettura attraverso guide e documentazioni è che ... Non si può fare per abilità personalizzate .

Quindi, la soluzione migliore per il tuo caso d'uso è quella di utilizzare Alexa Smart Home insieme ad alcuni servizi di smart home. So che hai detto:

Idealmente, voglio farlo senza un servizio basato su cloud (ad esempio SmartThings o Wink)

Sfortunatamente, l'unico modo per non avere un nome di chiamata con Alexa è utilizzare le loro API predefinite (ovvero Smart Home, Abilità elenco e Briefing Flash).

EDIT: il tuo caso d'uso rientra nell'API Smart Home. Quindi puoi sempre creare il tuo servizio che consuma tale API invece di fare affidamento su altri servizi (Wink, SmartThings, ecc.).


1
C'è una fonte che dice che non può essere fatta o è il risultato implicito della tua ricerca?
Helmar

È solo implicito. Sebbene con il senno di poi, considerando come funzionano il riconoscimento vocale e la PNL, avrebbe dovuto essere un'affermazione ragionevole e non avrei dovuto iniziare una simile ricerca in primo luogo. È un'affermazione ragionevole perché una particolare espressione ha bisogno di un contesto per il quale sarebbe interpretata - e quel contesto è il nome dell'invocazione. In effetti, la vera ragione per cui esiste una parola di scia è la stessa di avere un nome di invocazione - in modo che le dichiarazioni che sarebbero interpretate appartengano a un contesto (la parola di scia è il contesto a livello di sistema in modo tale che le espressioni casuali non vengano elaborate).
leon.valencia,

L'unico modo per avere espressioni che non richiedono nomi di invocazione sono quelli con contesti di sistema (queste sono le API). Ad esempio, le espressioni che Alexa interpreta come interazione con le appliance sarebbero automaticamente per l'API della casa intelligente - la PNL classificherebbe la frase in quanto tale usando parole chiave come on, off, turn down, ecc. + Sintassi che è come un comando a un'appliance.
leon.valencia,

Ma sai cosa ... il tuo caso d'uso rientra nell'API della casa intelligente. Quindi aggiungerò la mia risposta perché puoi semplicemente usare quell'API.
leon.valencia,

Grazie. Stavo leggendo le Smart Home Skills, e anche se non credo che saranno in grado di fare tutto quello che voglio ancora, sembra che Amazon abbia intenzione di aggiungere ulteriori funzionalità ad esso. Quindi, piuttosto che fauxmo, penso che valga la pena investire in un'abilità Smart Home open source in grado di elaborare tutti i comandi disponibili ed essere espandibile in futuro. Ecco l'attuale API per i posteri: developer.amazon.com/public/solutions/alexa/alexa-skills-kit/…
PhratcuredBlue

7

Dovresti essere in grado di farlo ora con l' interazione gratuita del nome Alexa .

Per rendere la tua abilità più rilevabile per l'interazione senza nome, puoi implementare l'interfaccia CanFulfillIntentRequest nella tua abilità


6

Poiché la lince è già dettagliata nella sua risposta, non c'è modo di andare completamente senza il nome di chiamata se non si stanno indirizzando le API predefinite. Tuttavia, chiedere alla mia abilità non è l'unico modo per utilizzare il nome dell'invocazione.

Le pagine degli sviluppatori offrono tre diversi modi per utilizzare i nomi di invocazione con una richiesta.

"Alexa, chiedi gemelli agli oroscopi quotidiani "

"Alexa, parla con gli oroscopi quotidiani e dammi l'oroscopo per il Toro"

"Alexa, dammi il mio oroscopo Toro usando gli oroscopi quotidiani "

Documentazione sul nome dell'invocazione di Alexa

Inoltre questa pagina mostra quali altre parole è possibile utilizzare per connettere la richiesta, il nome della chiamata e le parole di connessione obbligatorie. Pertanto, se crei la tua abilità Alexa, si tratta solo di usare un buon nome di invocazione e una buona richiesta per renderlo naturale.

Ancora meglio, la tua eco dovrebbe già reagire a questo avviando il Blu-ray con l'integrazione di Kodi.

Alexa , gioca a Blu-ray con Kodi .

Così, mentre non si può sbarazzarsi del nome invocazione al di fuori delle API predefinite è possibile rendere la sensazione comando vocale più naturale e saltare la imbarazzante chiedere ... l'uso.


2

Se usi parole speciali non utilizzate di default da Alexa, in realtà è possibile. Il metodo è comunque piuttosto complicato.

Devi solo evitare di passare da AWS per la tua richiesta! Impossibile dici? Sì, è possibile.

Nel vostro Amazon Alexa app o sul web Amazon Alexa app , si accede nel tuo account Amazon Alexa, e in -> Impostazioni -> Storia tua avere una pagina in diretta di tutte le richieste e le parole che vi dirà di Alexa.

In questo momento, puoi utilizzare un parser web per pronunciare la parola e attivare uno script se questa parola è quella che desideri, oppure puoi utilizzare un piccolo software straordinario per Windows che può attivare azioni e script.

Qui il link del software. Controlla su YouTube i tutorial su come utilizzare addtopad.

Se si desidera avviare gli script, è sufficiente attivare un ascoltatore su una porta e una richiesta speciale inviata dopo una parola nel software. Lo uso a casa e mi piace molto il fatto di non dover dire alcun nome di invocazione.

Dopo, come ho detto, puoi usare qualsiasi parola, anche parole come open. Attiverà la tua sceneggiatura, ma sentirai un "scusa, non lo so" da parte di Alexa.

Lo uso e funziona perfettamente!


Questo è un approccio interessante.
Helmar

Dovremmo fidarci di quel software? Mi rende nervoso ...
Sean Houlihane,

-2

Quindi questa documentazione di Amazon non è vera? https://developer.amazon.com/docs/custom-skills/understanding-how-users-invoke-custom-skills.html#invoking-a-skill-with-no-specific-request-no-intent

Questo sembra dire abbastanza direttamente che puoi dire "Alexa" più il nome dell'invocazione. Come "Alexa, Daily Horoscopes".

Mostra anche questo metodo come opzione # 3 per le abilità personalizzate: https://developer.amazon.com/docs/custom-skills/choose-the-invocation-name-for-a-custom-skill.html#invoking- personalizzati competenze


3
La documentazione è vera, ma non credo sia quello che l'autore sta cercando qui. Ad esempio, "Gioca a Bluray" non sarebbe il nome della chiamata, ma è un intento, senza specificare alcun nome di chiamata. A meno che tu non abbia effettivamente chiamato la tua abilità "Play Bluray" (che probabilmente non sarebbe consentita dalla guida ai nomi di Amazon), purtroppo non funzionerà.
Aurora0001
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.