所以你想將所有的垃圾輸入管道到一個單一的意圖。你很幸運。在繼續之前,您應該瞭解以下幾件事。
在Node.js中,如果由Alexa語音服務返回的意圖在給定的MODE
中不可用,則未處理的處理程序在MODE
內被觸發。
示例MODE
將是確認模式。在許多可用的意圖中,是和否是唯一被接受的意圖。
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);
}
});
但是,在到達lambda函數之前,Alexa語音服務必須解釋您的話語並將其映射到其中一個可用意圖。如果你的話語是垃圾,並沒有映射到任何特定的意圖,它目前被映射到第一個意圖。
解決方案:如果您想添加垃圾意圖,應該由意向模式來處理,而不是由未處理的意圖處理。要添加垃圾意圖,您可以按照這篇亞馬遜文章中的說明操作。
https://developer.amazon.com/blogs/post/Tx3IHSFQSUF3RQP/Why-a-Custom-Slot-is-the-Literal-Solution
方案3:我只是想要的一切。如上所述使用 語法的自定義插槽類型通常可滿足此願望,並使您能夠通過NLP培訓提高準確性。如果你仍然只想要 的一切,你可以創建一個自定義的插槽,稱爲「CatchAll」和相應的意圖和話語:CatchAllIntent {CatchAll}。如果您使用的訓練數據與LITERAL使用的 相同,則會得到相同的結果。人們通常會發現,添加更多特定場景的訓練數據可提高準確性。
如果你還沒有得到結果,試圖設置包羅萬象 值約二十2〜8字隨機短語(從隨機字 發電機 - 是真正隨機的)。當用戶說出與您的其他話語相匹配的內容時,這些意圖仍將被髮送。當 與其中任何一個不匹配時,它將落入CatchAll插槽。如果你走這條路線,你將失去準確性,因爲你不是 充分利用Alexa的NLP,所以你需要大量測試。
未映射到你的更具體的意圖之一,像YES
或NO
任何投入,很可能會映射到這個CatchAll
意圖。
我無法回答這個問題,但在使用測試用戶界面和實際設備時,我遇到過類似的差異。 +1提問。我打算引導你走向Alexa技能工具包開發論壇,但看起來你已經在那裏發佈了這個問題。 :-) – TimHayes
我在想這是測試界面的工件。你有沒有嘗試過在你的設備上進行測試? –
@John你有沒有找到解決方案? – Dhawal