2016-10-09 1 views
7

Ich bemerkte etwas Seltsames beim Testen meines Interaktionsmodells mit dem Alexa-Skills-Kit.Mein benutzerdefinierter Slot-Typ nimmt unerwartete Werte an

I definiert einen Typ Kundengobo, etwa so:

CAR_MAKERS Mercedes | BMW | Volkswagen 

Und meine Absicht Plan war so etwas wie:

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

mit Beispiel Äußerungen wie:

CountCarsIntent Add {Amount} cars to {CarMaker} 

Jetzt Beim Testen in der Entwicklerkonsole habe ich bemerkt, dass ich Sachen schreiben kann wie:

"Add three cars to Ford" 

Und es wird tatsächlich dies korrekt analysieren! Auch wenn "Ford" im Interaktionsmodell nie erwähnt wurde! Die Lambda-Anfrage:

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

Das ist mir wirklich überrascht, weil die Dokumentation auf custom slot types ist ziemlich klar darüber, dass der Schlitz nur die Werte annehmen kann, die in dem Interaktionsmodell aufgelistet sind.

Nun scheint es, dass Werte auch dynamisch geparst werden! Ist das ein neues Feature, oder fehlt mir etwas?

+1

Ich bemerkte, dass Benutzer @samiles meine Beobachtung in der Antwort auf diese Frage teilt: http://Stackoverflow.com/a/34078869/1375015 –

Antwort

5

Eigentlich ist das normal (und gut, IMO). Alexa verwendet die von Ihnen zur Verfügung gestellte Wortliste als Richtlinie und nicht als endgültige Liste.

Wenn diese Flexibilität nicht gegeben wäre, gäbe es keine Möglichkeit zu wissen, ob Benutzer Wörter verwenden, die Sie nicht erwartet haben. Auf diese Weise können Sie Ihre Liste und Handhabung lernen und verbessern.

Verwandte Themen