如何在Alexa Skills中进入下一个功能



我是构建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 语句来验证用户的输入,但我不确定如何访问正确的值。我还尝试在刚刚执行密码读回的GetPasswordresponseBuilder内调用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

最新更新