2017-08-28 75 views
0

我在lambda函數中使用Node.js構建Alexa技能,並且找不到任何有關確認插槽中數據的最佳方式的教程。我知道所有插槽現在都有數據,但希望Alexa能夠讀回請求並在繼續之前從用戶那裏得到確認。什麼是最好的&正確的方法來做到這一點?Alexa技能有用戶確認插槽值

起初我以爲使用elicitSlot發射,但然後我需要一個新的插槽來做到這一點,它看起來非常黑客。

例如:

if(all slots have a valid value){ 
this.emit(':elicitSlot','confirm',"You're request is .... with data .... is this correct?"); 
} 
if(user confirmed data is valid){ 
// do something 
}else{ 
// the data was not correct get the right data 
} 
+0

對於whoie意向確認,請選中[此處](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/ask-define-the-vui-with-gui#意向確認)。只有確認插槽時,請選中[此處](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/ask-define-the-vui-with-gui#enable-slot-確認) – Sidmeister

+0

謝謝Sidmeister,你可以把你的評論變成答案,我可以批准它。例如,如果其中一個插槽類似於名稱,alexa知道100%我稱之爲可以跳過確認的名稱,那麼技能和插槽的確認也可以進行微調。還是100%的時間確認一次?我想要確認一個灰色區域。 –

回答

2

對於整個意向確認,檢查here。如需確認時間段,請查詢here

此外,爲您的後續問題,

可以確認的技能和插槽進行微調,例如,如果一個插槽是像一個名字和ALEXA知道100%,我說的是什麼名字可以它跳過確認?

簡短的回答 - 當然你可以,如果你不保持對話。但是,依靠這一點強烈不鼓勵。

爲了保持一個對話框,你必須監控的意圖請求dialogState屬性,只要它不與屬性directives[{'type': 'Dialog.Delegate'}]狀態COMPLETED發送響應,以保持它的流動。您可以更好地控制對話框 - 請參閱this doc。此外,強烈建議您在這些回覆中省略outputSpeechreprompt,否則Alexa會感到不安。一旦對話狀態爲COMPLETED,您將獲得confirmationStatus(對於意圖和插槽) - 成功(?)/拒絕/無。如果確認不成功。我看到多個匹配作爲回覆發送。但是,如果成功,則只返回匹配的插槽值。

P.S.我有這個奇怪的問題。當Alexa要求確認一個插槽值時,如果我故意連續兩次拒絕,它會放棄並且什麼也不做!雖然幾乎99%的時間都是Alexa發佈的。

P.P.S. 2次嘗試是來自Alexa的嚴格限制。這應該在下一次迭代中得到改進。