2017-03-13 1 views
0

Contexte

J'écris une compétence Alexa et cherche à obtenir des informations de l'utilisateur.Réponse unique à Alexa Compétence

La conversation suivante par exemple:

Alexa: What month were you born at? 
User: April 
Alexa: Good. And what was your favorite movie? 
User: April 

Le problème

Compte tenu des énoncés suivants:

GetMonthIntent {month} 
GetMovieIntent {movie} 

Une fois qu'un utilisateur répond April pour la deuxième fois, le GetMonthIntent pourrait être déclenchée .

Ce que j'ai essayé

Demander à l'utilisateur de spécifier qui information est de donner à l'aide des énoncés suivants:

GetMonthIntent Month {month} 
GetMovieIntent Movie {movie} 

La question

Quelle est la bonne façon de faire attendre Alexa une réponse à un seul terme en fonction du contexte actuel?

Répondre

0

Malheureusement, il n'y a pas de solution. Il n'y a aucun moyen de spécifier le «contexte» dans lequel une réponse de l'utilisateur doit être interprétée, vous devez donc dire à l'utilisateur «quel était votre film préféré» s'il vous plaît dire «mon film préféré est» et ensuite le nom du film ».

Voici deux DEMANDEZ demandes de fonctionnalités que je pense aborderait votre question:
https://forums.developer.amazon.com/content/idea/41062/creating-something-to-help-with-more-structured-qu.html
https://forums.developer.amazon.com/content/idea/55525/allow-a-response-to-specify-a-set-of-expected-inte.html

Personnellement, je pense que cela est assez important pour que je voté pour ceux-ci, mais ils ne sont pas près du sommet.

0

J'ai rencontré ce même problème lorsque j'ai créé la compétence «Qui est le premier? Baseball Skit». Je me suis occupé ce par:

  1. Créer un numéro de séquence pour chaque réponse donnée par Alexa
  2. Ecrire ce numéro à la « session » dans la réponse.
  3. La session est ensuite renvoyée à votre compétence par Alexa dans la prochaine requête.
  4. Lire le numéro de séquence de la demande pour savoir quelle était la question précédente.
  5. Si une intention donnée peut être la réponse à plusieurs questions (par exemple, mois et film dans votre cas), utilisez le numéro de séquence pour déterminer lequel.

Cela devrait vous donner des idées sur la façon de traiter les réponses répétées. La session est assez facile à utiliser. D'autres options incluent l'écriture de l'userId et de l'état dans une base de données comme DynamoDB, mais je trouve que la session fonctionne dans la plupart des cas.

1

Dans la même veine que les autres réponses ici, vous devriez jeter un coup d'œil au nouveau nœud.bibliothèque JS ici, qui gère l'état de la boîte: https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs#making-skill-state-management-simpler

vous pouvez définir:

  • State_Launch
  • State_Month
  • State_Movie

Et puis retourner la réponse d'erreur appropriée si autre chose que les intentions GetMovieIntent ou GetMonthIntent (etc.) sont appelées dans le mauvais état.

Vous devrez effectuer une validation des données côté serveur pour vous assurer que le "mois" est valide et que les vidéos sont encore plus difficiles à valider à moins d'avoir une liste des valeurs attendues. Autrement dit, si vous voulez les analyser pour une utilisation au-delà de répéter.