2016-05-16 19 views
17

Sono nuovo nello scrivere le abilità di Alexa e voglio scrivere un'abilità per memorizzare le parole dell'altoparlante.
Ad esempio, se dico "Alexa, salva {qualunque cosa dica}", dovrebbe salvare le parole in una stringa.
Ora da quanto ho capito, lo schema intento qualcosa dovrebbe essere comeAmazon Alexa: memorizzare le parole dell'utente

{ 
    intents:[ 
     "intent" : "SaveIntent" 
    ] 
} 

e espressioni come

SaveIntent save 
SaveIntent store 

In questo caso, come faccio Store '{qualunque cosa io dica}'?

risposta

1

Aggiornamento: questa risposta non è vera. menzionato nei commenti c'è il tipo di slot Amazon.Literal che dovrebbe consentire questo.


Alexa attualmente non supporta l'accesso agli input vocali degli utenti. Potrebbe essere possibile in futuro, oppure puoi guardare alcune altre API voce come testo come Google's.

L'unico modo per farlo al momento con Alexa sarebbe avere un elenco di parole che l'utente potrebbe dire che salverebbe.

Per fare ciò è possibile seguire uno degli esempi di Amazon dell'utilizzo di uno slot personalizzato type. Quindi metti tutte le parole possibili che l'utente vorrebbe dire in quella categoria.

+1

Ciao Alex, grazie per la tua risposta. C'è un comando incorporato, 'Alexa, Simon dice ..' che ripete qualunque cosa l'oratore parli dopo. Mi stavo chiedendo come sia salvato l'input vocale non elaborato in quel caso. –

+1

Gli sviluppatori di terze parti non hanno attualmente accesso a tutta la potenza di Alexa, puoi vederlo in alcune delle app di Amazon come la ricerca di musica e alcune applicazioni di alto profilo come Uber che possono ottenere la posizione degli utenti, ma un generale gli sviluppatori di app non possono. Spero che questo cambi in futuro con la maturazione della piattaforma. –

+2

Questa risposta non è vera: è possibile implementare il tipo di slot 'AMAZON.Literal', che consente di acquisire input di forma libera. Tuttavia, devi fornirgli una serie di esempi di input per addestrarlo su quale tipo generale di input aspettarsi. –

12

Per acquisire un input vocale in formato libero (anziché un elenco definito di valori possibili), è necessario utilizzare il tipo di slot AMAZON.LITERAL. Il Amazon documentation for the Literal slot type descrive un caso d'uso simile al tuo, in cui viene creata un'abilità per prendere qualsiasi frase e postarla su un sito di social media. Ciò si ottiene creando un intento StatusUpdate:

{ 
    "intents": [ 
    { 
     "intent": "StatusUpdate", 
     "slots": [ 
     { 
      "name": "UpdateText", 
      "type": "AMAZON.LITERAL" 
     } 
     ] 
    } 
    ] 
} 

Dal momento che utilizza il tipo di slot AMAZON.LITERAL, questo intento potrà catturare qualsiasi frase arbitrario. Tuttavia, per garantire che il motore di riconoscimento vocale esegua un lavoro decente nel catturare frasi del mondo reale, è necessario fornire una serie di espressioni di esempio che assomigliano al tipo di cose che ci si aspetta che l'utente possa dire.

Dato che nello scenario descritto, si sta cercando di catturare molto frasi dinamiche, ci sono un paio di cose nella documentazione si vorrà prendere in considerazione in più per:

Se si utilizza il tipo AMAZON.LITERAL per raccogliere forma libera testo con ampie variazioni nel numero di parole che potrebbero essere nella fessura, nota seguente:

  • Coprire questa gamma (minimo, massimo e tutti in B tra) sarà richiedono un set molto grande di campioni. Prova a fornire diverse centinaia di campioni o più per indirizzare tutte le variazioni nelle parole con valore di slot come annotate sopra.
  • Mantieni le frasi all'interno degli slot in modo che gli utenti possano pronunciare l'intera frase senza bisogno di mettere in pausa la frase .

Lengthy ingresso del può portare a esperienze minore precisione, evitando così progettazione di un'interfaccia lingua parlata che richiede più di qualche parole per un valore di slot. Una frase che un utente non può parlare senza la pausa è troppo lunga per un valore di slot.

Detto questo, ecco le esternazioni esempio campione dalla documentazione, ancora una volta:

StatusUpdate inviare l'aggiornamento {arrivato | UPDATETEXT}

StatusUpdate inviare l'aggiornamento {cena | UPDATETEXT}

StatusUpdate inviare l'aggiornamento {fuori a pranzo | UPDATETEXT}

... (più campioni mostrando frasi wi TH 4-10 parole)

StatusUpdate inviare l'aggiornamento {intenzione di fermarsi al negozio di alimentari di questa sera | UPDATETEXT}

Se si forniscono abbastanza esempi di diversa lunghezza per dare un quadro preciso della gamma di pronostici attesi dall'utente, quindi il tuo intento sarà in grado di catturare con precisione frasi dinamiche in casi d'uso reali, a cui puoi accedere nello slot UpdateText. Sulla base di questo, dovresti essere in grado di implementare un intento specifico per le tue esigenze.

+0

Come potrei 'allenare' il LITERALE quando il mio input potrebbe essere casuale come 'TBD-2019-UK', '17_TBD_UK_Leicester', '17_TBD_UK_Leicester 1', '18_TBD_UK_Leicester 2', 'Chicago IL Stati Uniti', ecc ... ? Non è "molto" casuale, ma è una combinazione piuttosto casuale dell'anno, città, stato, paese, qualche altro testo chiave in nessun ordine particolare.Anche se "Chicago IL United States" è specificato in Sample Utterances, LITERAL non è in grado di catturare qualcosa come "Pittsburgh PA United States" a meno che non venga fornito anche. Non c'è modo di trovare TUTTE le possibili combinazioni e permutazioni. – Kal

+0

Inoltre, è possibile aggiungere ulteriori valori dall'utente. Per ora, anche se scegliamo di ignorare i caratteri speciali, come possiamo ottenere il discorso dell'utente nel testo? Il problema è che, se non è stato trovato nessun intento corrispondente, invece di restituire il testo vocale dell'utente, il mio Alexa non sta facendo nulla. Si spegne senza niente. Qualche idea? Come nel commento di Kuldeep Ghate qui sotto, mi piacerebbe sapere come sta 'Alexa, Simon dice ...'. È esattamente quello che sto cercando di realizzare. Forse dovrei aprire una nuova discussione? – Kal

+0

Non sarai in grado di scoprire come funziona la funzione Simon Says, perché è un'abilità di prim'ordine, quindi probabilmente usa funzionalità non disponibili nel kit SDK di Skills Kit pubblico. Come sviluppatore di terze parti, la soluzione migliore è semplicemente fornire un'ampia varietà di tipi di frasi che potreste aspettarvi da un utente, e il motore vocale farà del suo meglio per estrapolare da quelli che sono pronti a tutto. Sfortunatamente è buono come l'SDK pubblico. –

0

(8/5/17) Sfortunatamente questa funzione è stata rimossa da Amazon con l'eliminazione di AMAZON.LITERALS.

Tuttavia, a seconda di come si è interessati a catturare gli ingressi a forma libera si può essere soddisfatti di un ingresso MODE che cattura una parola, nome, città, numero, lettera, simbolo, ecc alla volta e li stringhe insieme in una singola variabile senza messaggi in mezzo.

Ho lavorato su una modalità di immissione password che può essere modificata per raccogliere e concatenare gli input dell'utente. Sebbene il tuo input sia più lento, se ottimizzi la funzione lambda potresti riuscire a ottenere un'esperienza utente veloce per l'inserimento di alcune frasi. La struttura è ciò che è importante. Il codice potrebbe essere facilmente adattato.

Come dare input a Amazon Alexa Skills Kit (ASK) stringa mista con numeri? https://stackoverflow.com/a/45515598/8408056

Problemi correlati