Sie möchten also alle Mülleingaben zu einer einzigen Absicht leiten. Du hast Glück. Hier sind ein paar Dinge, die Sie wissen sollten, bevor Sie fortfahren.
In Node.js wird der unbehandelte Handler innerhalb einer MODE
abgefeuert, wenn die vom Alexa-Sprachdienst zurückgegebene Absicht innerhalb der angegebenen MODE
nicht verfügbar ist.
Ein Beispiel MODE
wäre der Bestätigungsmodus. Von den vielen Absichten, die verfügbar sind, sind Ja und Nein die einzigen Absichten, die akzeptiert werden.
var ConfirmationHandlers = Alexa.CreateStateHandler(states.CONFIRMATIONMODE, {
'YesIntent': function() {
this.handler.state = states.CLOSINGCOSTSMODE;
message = ` So you will be buying this house. Great! `;
reprompt = `Please carry on with the other intents found in the house buyer skill. `;
this.emit(':ask', message, reprompt);
},
'NoIntent': function() {
this.handler.state = states.GENERALSEARCHMODE;
message = ` So you won't be buying this house. That's Ok, Continue searching for your dream house in the House buyer skill. !`;
reprompt = `Continue searching for your dream house in the House buyer skill.`;
this.emit(':ask', message, reprompt);
},
'Unhandled': function() {
console.log("UNHANDLED");
var reprompt = ` All other intents are disabled at this moment. Would you like to buy this house Yes or No? `;
this.emit(':ask', reprompt, reprompt);
}
});
Bevor jedoch die Lambda-Funktion die Alexa Sprachdienst erreichen müssen Ihre Äußerung interpretieren und wo es sich auf einem der verfügbaren Absichten. Wenn Ihre Äußerung Müll ist und keiner bestimmten Absicht zugeordnet wird, wird sie derzeit der ersten Absicht zugeordnet.
Lösung: Wenn Sie eine Müllabsicht hinzufügen möchten, ist dies etwas, das durch das Intent-Schema nicht durch die unbehandelte Absicht behandelt werden sollte. Um eine Müllabsicht hinzuzufügen, kannst du den Anweisungen in diesem Amazon-Artikel folgen.
https://developer.amazon.com/blogs/post/Tx3IHSFQSUF3RQP/Why-a-Custom-Slot-is-the-Literal-Solution
Szenario 3: Ich will einfach alles. Die Verwendung von benutzerdefinierten Slot-Typen für Grammatik wie oben beschrieben erfüllt typischerweise diesen Wunsch und ermöglicht Ihnen, die Genauigkeit durch NLP-Training zu verbessern.Wenn Sie nur noch alles wollen, können Sie einen benutzerdefinierten Steckplatz namens so etwas wie "CatchAll" und eine entsprechende Absicht und Äußerung erstellen: CatchAllIntent {CatchAll}. Wenn Sie die gleichen Trainingsdaten verwenden, die Sie für LITERAL verwendet haben, erhalten Sie die gleichen Ergebnisse. Menschen finden in der Regel, dass Hinzufügen von ein wenig mehr Szenario-spezifische Trainingsdaten verbessert Genauigkeit.
Wenn Sie noch nicht die Ergebnisse, und versucht, die CatchAll Werte auf etwa zwanzig 2 bis 8 Wort zufällige Sätze Einstellung (von einem Zufallswort Generator - wirklich zufällig sein). Wenn der Benutzer etwas sagt, dass mit Ihren anderen Äußerungen übereinstimmt, werden diese Absichten trotzdem gesendet. Wenn nicht mit diesen übereinstimmt, wird es in den CatchAll-Slot fallen. Wenn Sie diese Route gehen, werden Sie Genauigkeit verlieren, weil Sie nicht vollen Nutzen von Alexa NLP sind, so dass Sie stark testen müssen.
Jede Eingabe, die auf einer Ihrer spezifischere Absichten nicht abgebildet wird, wie YES
oder NO
, wird sehr wahrscheinlich Karte auf diese CatchAll
Absicht.
Ich kann die Frage nicht beantworten, aber ich habe ähnliche Diskrepanzen bei der Verwendung der Test-Benutzeroberfläche vs tatsächlichen Gerät erlebt. +1 für die Frage. Ich wollte dich zum Alexa Skills Kit Dev-Forum lenken, aber es sieht so aus, als hättest du die Frage bereits dort gepostet. :-) – TimHayes
Ich denke, das ist ein Artefakt der Testschnittstelle. Hast du das auf deinem Gerät getestet? –
@John haben Sie die Lösung dafür gefunden? – Dhawal