我是构建Alexa技能的新手,我正在尝试构建一种读取您的wifi密码的技能。将来,我想使这种动态化,以便有人可以添加自己的wifi密码并将其读回给他们。现在我的密码是硬编码的。我想提示 alexa 要求用户输入特定的密码(现在我也对此进行了硬编码(。如果密码正确,请读出存储的 wifi 密码。问题是我不确定如何进入第二个功能。这是用户和Alexa之间的对话流程。
用户:"Alexa,我的wifi密码是什么?
Alexa:"你的密码是什么?
用户:"太棒了。
如果密码正确,Alexa:"谢谢。你的wifi密码是P A S S W O R D。
如果密码不正确,Alexa:"密码不正确。你的密码是什么?
这是我的GetPassword
函数。
const GetPassword = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest';
},
handle(handlerInput) {
const speakOutput = "What is the passphrase?"
return handlerInput.responseBuilder
.speak(speakOutput)
.reprompt(speakOutput)
.getResponse();
}
};
这是我的CheckPhrase
函数。
const CheckPhrase = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest';
},
handle(handlerInput) {
const speakOutput = "Your password is, YOUR_WIFI_PASSWORD"
return handlerInput.responseBuilder
.speak(speakOutput)
.reprompt(speakOutput)
.getResponse();
}
};
我的目的是在运行第一个函数后当用户说/键入短语时执行CheckPhrase
。我可以很好地访问第一个功能,并提示我输入密码。但是当我输入密码短语时,它只是重复之前的提示。我尝试使用 if/else 语句来验证用户的输入,但我不确定如何访问正确的值。我还尝试在刚刚执行密码读回的GetPassword
responseBuilder
内调用CheckPhrase
。我也尝试过使用reprompt
但我相信,如果技能在一定时间后没有收到用户输入,那就更合适了。
如果这些是亚马逊技能发展的基本方面,我深表歉意,但我已经阅读了文档,也许我没有使用正确的措辞来搜索我正在寻找的内容,但无济于事。我看过一些关于SO的帖子,但我找不到任何与输入验证或使用辅助函数有关的问题。
我的代码目前托管在 Alexa 控制台而不是 Lambda 中(我不确定这是否相关(。而且我目前没有使用任何插槽。
听起来您需要插槽确认。 从官方文档中查看此页面:https://developer.amazon.com/en-US/docs/alexa/custom-skills/define-the-dialog-to-collect-and-confirm-required-information.html
旁注:一旦代码按预期工作,您可能需要使用一些 SSML 来拼写您的密码:https://forums.developer.amazon.com/questions/190384/how-configure-alexa-to-confirm-numeric-slots-input.html