node.js - 如何进入 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 中(我不确定这是否相关)。而且我目前没有使用任何插槽。
解决方案
听起来您需要插槽确认。从官方文档中查看此页面: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
推荐阅读
- python - 在 Python 中在一组元组上分配值
- mysql - 从 sql 中的 2 个表中删除,该表在其他表中具有外键
- xamarin.android - 以编程方式滚动列表视图
- google-compute-engine - GCloud 导入 vmdk 磁盘总是失败
- dc.js - 使用嵌套的 json 数据创建多行
- java - 如何在Java中将长度为m的整数数组转换为长度为n的数组[已解决]
- javascript - 尝试将 react-select 导入使用 create-react-app 创建的项目时出错
- sql - Postgres:跨列获取最大长度
- java - findAll() 在 save() 之后直接为所有 OneToMany 集合返回 null
- react-native - 使反应导航抽屉从底部弹出而不是从左/右弹出