2016-10-09 2 views
7

J'ai remarqué quelque chose d'étrange lors du test de mon modèle d'interaction avec le kit de compétences Alexa.Mon type de slot personnalisé prend des valeurs inattendues

I défini un type de logement personnalisé, comme ceci:

CAR_MAKERS Mercedes | BMW | Volkswagen 

Et mon plan l'intention était quelque chose comme:

{ 
    "intents": [ 
    { 
     "intent": "CountCarsIntent", 
     "slots": [ 
     { 
      "name": "CarMaker", 
      "type": "CAR_MAKERS" 
     }, 
    ... 

avec les énoncés échantillons tels que:

CountCarsIntent Add {Amount} cars to {CarMaker} 

maintenant , lors des tests dans la console de développeur, j'ai remarqué que je peux écrire des choses comme:

"Add three cars to Ford" 

Et il va effectivement analyser correctement! Même si "Ford" n'a jamais été mentionné dans le modèle d'interaction! La demande lambda est:

"request": { 
    "type": "IntentRequest", 
    ... 
    "intent": { 
     "name": "CountCarsIntent", 
     "slots": { 
     "CarMaker": { 
      "name": "ExpenseCategory", 
      "value": "whatever" 
     }, 
... 

Cela me surprend vraiment, parce que la documentation sur custom slot types est assez clair sur le fait que la fente ne peut prendre les valeurs qui sont répertoriées dans le modèle d'interaction.

Maintenant, il semble que les valeurs sont aussi analysées dynamiquement! Est-ce une nouvelle fonctionnalité, ou ai-je oublié quelque chose?

+1

J'ai remarqué que l'utilisateur @samiles partage mon observation dans la réponse à cette question: http://stackoverflow.com/a/34078869/1375015 –

Répondre

5

En fait, c'est normal (et bon, IMO). Alexa utilise la liste de mots que vous fournissez comme guide, pas une liste définitive. Si elle n'avait pas cette flexibilité, il n'y aurait aucun moyen de savoir si les utilisateurs utilisaient des mots que vous n'attendiez pas. De cette façon, vous pouvez apprendre et améliorer votre liste et la manipulation.