首页 > 解决方案 > 如何进入 Alexa Skills 中的下一个功能

问题描述

我是建立alexa技能的新手,我正在尝试建立一种读取你的wifi密码的技能。将来我想让这个动态化,以便有人可以添加自己的 wifi 密码并将其读回给他们。现在我的密码是硬编码的。我想提示 alexa 向用户询问特定的密码(现在我也有这个硬编码)。如果密码正确,请读出存储的 wifi 密码。问题是我不确定如何使用第二个功能。这是用户和 Alexa 之间的对话流程。

用户:“Alexa,我的 wifi 密码是什么?”

Alexa:“你的密码是什么?”

用户:“好极了。”

如果密码正确 Alexa:“谢谢。您的 wifi 密码是 PASSWOR 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 语句来验证用户的输入,但我不确定如何访问正确的值。我还尝试CheckPhrase在刚刚执行的密码回读中responseBuilder调用。GetPassword我也尝试过使用reprompt,但我相信如果技能在一定时间后没有收到用户输入,则更多。

如果这些是亚马逊技能发展的基本方面,我深表歉意,但我已经阅读了文档,也许我没有使用正确的措辞来搜索我正在寻找的东西,但它无济于事。我看过一些关于 SO 的帖子,但我找不到任何与输入验证或使用辅助功能相关的问题。

我的代码目前托管在 Alexa 控制台而不是 Lambda 中(我不确定这是否相关)。而且我目前没有使用任何插槽。

标签: node.jsalexaalexa-skills-kitalexa-skill

解决方案


听起来您需要插槽确认。从官方文档中查看此页面: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


推荐阅读