如何向 Amazon Alexa Skills Kit (ASK) 混合字符串和数字输入?

2023-12-02

我正在尝试创建一个 Amazon Alexa 技能套件来进行某种自动化,这需要接受由字符串和数字组成的语音输入(a-test12fish).

当我在 Alexa Skills Kit 中使用自定义插槽时,它不允许我键入带有数字的字符串。当我尝试输入时ask alexa, dangerZone find a-test12fish,我收到以下错误:

错误:文本输入无效。文本应以字母开头,并且只能包含字母、空格、句点或撇号

我怎样才能克服这个错误?


这是一个解决方案。

您可能不想在意图模式中完成此操作。相反,请尝试使用 Node.js 创建自定义模式,将字母、数字和符号编译为单个响应。这是我对字母数字输入模式的演绎。请注意:我只是为了回答您的问题而写下此内容,尚未在更大的技能中对其进行测试。话虽如此,我已经取得了巨大的成功MODES当我有机会时,我一定会用自己的技能来实现这一点。

这段代码背后的想法是,你将用户推入一个单独的模式,忽略除NumberIntent, LetterIntent, SymbolIntent,以及一些帮助功能。用户快速输入他们的字母数字值,完成后激活 CompletedIntent。然后,该字母数字值可以在您的技能中的其他地方使用。如果您还没有使用过Modes请注意,完成或退出后,您将被重定向回LOBBYMODE您可以在其中继续访问您技能中的其他意图。

var lobbyHandlers = Alexa.CreateStateHandler(states.LOBBYMODE, {

    'enterPasswordIntent': function () {
      this.attributes['BUILDPASSWORD'] = '';
      this.handler.state = states.PASSWORDMODE;
      message = ` You will now create a password one letter, number or symbol at a time.  there will be no message after each entry.  simply wait for alexa's ring to become solid blue then stay your next value.  When you are satisfied say complete. Begin now by saying a number, letter, or keyboard symbol. `;
      reprompt = `Please say a number letter or symbol`;
      this.emit(':ask', message, reprompt);
    },

    //Place other useful intents for your Skill here

    'Unhandled': function() {
        console.log("UNHANDLED");
        var reprompt = ` You're kind of in the middle of something.  Say exit to end createing this password.  otherwise say complete if you've stated the whole password.  or repeat to hear the current password you've entered.  `;
        this.emit(':ask', reprompt, reprompt);
    }
});


var buildAlphaNumericPasswordHandlers = Alexa.CreateStateHandler(states.PASSWORDMODE, {
    'numberIntent': function () {// Sample Utterance: ninty nine  AMAZON.NUMBER
      var number = this.event.request.intent.slots.number.value; //I believe this returns a string of digits ex: '999'
      this.attributes['BUILDPASSWORD'] = this.attributes['BUILDPASSWORD'].concat(number);
      message = ``; //No message to make saying the next letter, number or symbol as fluid as possible.
      reprompt = `Please say the next number letter or symbol`;
      this.emit(':ask', message, reprompt);
    },
    'letterIntent': function () {// Sample Utterance: A   -- Custom Slot LETTERS [A, b, c, d, e, ... ]
      var letter = this.event.request.intent.slots.letter.value;
      this.attributes['BUILDPASSWORD'] = this.attributes['BUILDPASSWORD'].concat(letter);
      message = ``; //No message to make saying the next letter, number or symbol as fluid as possible.
      reprompt = `Please say the next number letter or symbol`;
      this.emit(':ask', message, reprompt);
    },
    'symbolIntent': function () {// Sample Utterance: Dash -- Custom Slot SYMBOLS [Pound, Dash, Dollar Sign, At, Exclamation point... ]
      var symbol = this.event.request.intent.slots.symbol.value;

      // Create a dictionary object to map words to symbols ex Dollar Sign => $.  Will need this because you likely cant put $ as a custom slot value. Can also map multiple names to the same value  ex. Dash => Tack = \> "-"
      var singleCharacterSymbol = symbolDict[symbol]; //^^^ Need to create dictionary

      this.attributes['BUILDPASSWORD'] = this.attributes['BUILDPASSWORD'].concat(singleCharacterSymbol);
      message = ``; //No message to make saying the next letter, number or symbol as fluid as possible.
      reprompt = `Please say the next number letter or symbol`;
      this.emit(':ask', message, reprompt);
    },
    'CompleteIntent': function() { //Sample Utterance: Complete
        console.log("COMPLETE");
        this.handler.state = states.LOBBYMODE;
        var reprompt = ` Your entry has been saved, used to execute another function or checked against our database. `;
        this.emit(':ask', reprompt, reprompt);
    },
    'ExitIntent': function() { //Sample Utterance: Exit
        console.log("EXIT");
        this.handler.state = states.LOBBYMODE;
        message = `You have returned to the lobby, continue with the app or say quit to exit.`;
        this.emit(':ask', message, message);
    },
    'RepeatIntent': function() {
        var currentPassword = this.attributes['BUILDPASSWORD'];
        var currentPasswordExploded  =  currentPassword.replace(/(.)(?=.)/g, "$1 "); //insert a space between each character so alexa reads correctly.
        var message = ` Your current entry is as follows. `+currentPasswordExploded;
        var reprompt = `  say complete if you've stated the whole password. Otherwise continue to say numbers letters and symbols. `;
        this.emit(':ask', reprompt, reprompt);
    },
    'Unhandled': function() {
        console.log("UNHANDLED");
        var reprompt = ` You're kind of in the middle of something.  Say exit to end creating this password, say complete if you've stated the whole password, say repeat to hear the current password you've entered, or continue to state letters, numbers and symbols  `;
        this.emit(':ask', reprompt, reprompt);
    }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何向 Amazon Alexa Skills Kit (ASK) 混合字符串和数字输入? 的相关文章

  • Aws Athena - 重命名列名称

    我正在尝试更改 AWS Athena 表中的列名称 从old name to new name 普通的DDL命令不会影响表 它们无法执行 是否可以更改列名而不从头开始删除并重新创建表 我错了 雅典娜使用HIVE DDL语法所以正确的命令是
  • 我可以限制仅从特定子域访问 S3 吗?

    我有几个子域将有自己的 S3 存储桶 有没有办法将 S3 存储桶设置为仅允许来自特定子域的 GET 请求 Use an aws Referer健康 状况 从限制对特定 HTTP Referrer 的访问 https docs aws ama
  • AWS API Gateway 接受内容类型:application/xml

    我有一个关于 AWS API Gateway 的问题 我想将其他公司的 API 处理到我自己的 AWS 中的 dynamoDB 中 他们只能将格式化的 XML 发布到我的 API 我的设置是 API Gateway gt Lambda gt
  • 哪个 AWS Simple Email Service API 是最新的

    我正在使用 AWS SES 构建一个应用程序 但我不清楚应该针对哪个版本的 API 进行开发 AWSSDK SimpleEmail https www nuget org packages AWSSDK SimpleEmail AWSSDK
  • 如何将 IAM 角色分配给用户或组

    我知道如何创造user group and role在 AWS IAM 中 我还可以将策略附加到每个策略上 例如 选择一个组后 您可以转到permissions选项卡 并向其附加一些策略 但是 我不知道如何将角色附加到用户或组 我查看了文档
  • NodeJS 与 DynamoDB 抛出错误“AttributeValue 可能不包含空字符串”

    我遇到了一个问题 因为 DynamoDB 无法接受空字符串作为属性中的值 我总是必须在前端检查是否存在空字符串值 否则 API 调用将由于 Dynamo DB 抛出的错误 An AttributeValue 可能不包含空字符串 而失败 我想
  • 无法理解如何使用 Android AWS SDK

    我正在构建一个将使用 Amazon 的 SimpleDB 服务的应用程序 它使用亚马逊的AWS 安卓 SDK http aws amazon com sdkforandroid 据我了解 不建议我将 Amazon 凭证 访问 ID 和密钥
  • 亚马逊 API 安全与 API 密钥?

    我已经在亚马逊 API 网关上部署了我的 REST API 并且我面前有一个存在安全问题的场景 我正在为所有 api 请求使用 api 密钥 我想知道该 api 密钥是否以某种方式公开 并且我们知道已发布的应用程序正在使用相同的 api 密
  • 将 Docker 与 AWS Elastic Beanstalk 结合使用有哪些优势?

    我在AWS Elastic Beanstalk上部署了几个网站 然后我听说了Docker 所以我想这次我可以尝试一下小型企业电子商务网站 Lumen Angularjs 网上查遍了 由于没有使用Docker的经验 还是很难 深入了解在 AW
  • 如何在部署应用程序 Elastic beanstalk 上修改 NGINX 配置

    我需要向 nginx conf 添加一些位置 以便环境 URL 指向 app php 我已经使用 vi 修改了该文件 重启 NGINX 就可以了 但我需要在使用时自动加载此配置电子部署 我已阅读并尝试过 https docs aws ama
  • 如何在没有终端节点令牌的情况下确认 Amazon SNS 的订阅?

    在我的 JAVA 应用程序中 我使用 Amazon SNS 向客户发送电子邮件 一旦我将一位客户 电子邮件 ID 订阅到我的 SNS 主题 它要求客户确认订阅以接收电子邮件 有什么方法可以在您的应用程序本身中确认订阅 无需客户的帮助 不 这
  • Cloudformation 堆栈在执行所有用户数据之前显示为完整

    在我的 cloudformation 堆栈中 我有一个启动配置 它在用户数据中运行 ansible 脚本 这里的问题是 我的堆栈状态显示CREATE COMPLETE即使 ansible 脚本尚未完成执行 在我 ssh 进入 ec2 实例后
  • aws eb deploy 不加载环境变量

    我正在通过 eb deploy 将 symfony 项目部署到 ec2 实例 aws linux 2 部署后迁移脚本运行良好 但当我尝试使用 ec2 user 运行 symfony 命令时 出现有关数据库凭据错误的错误 这是因为我推送了带有
  • 使用 Terraform 创建/销毁 AWS 帐户?

    我正在尝试创建一个工具来轻松创建和销毁我的 AWS 组织中的 AWS 账户 或者至少将其从组织中删除 如果无法删除 这些帐户将成为沙盒 预算很少 并在几周后被销毁 我发现 Terraform 有一个特定的资源 称为aws 组织 帐户 htt
  • 如何使用 iam-role 启动 ec2-instance?

    我可以在管理控制台中使用 iam role 启动 ec2 instance 但我不知道如何从 aws ruby sdk 中使用 iam role 启动 ec2 instance iam role test s Policy is here
  • 如何使用 PHP SDK 在 AWS SES 发送的电子邮件中实现 List-Unsubscribe 标头

    我尝试使用 AWS PHP SDK 添加自定义标头 以便可以实现 List unsubscribe 标头 问题是我找不到任何地方如何实现它 我已阅读文档但什么也没有 http docs aws amazon com aws sdk php
  • AWS EMR 引导操作为 sudo

    我需要更新 etc hosts适用于我的 EMR 集群 EMR AMI 4 3 中的所有实例 整个脚本无非就是 bin bash echo e ip1 uri1 gt gt etc hosts echo e ip2 uri2 gt gt e
  • Laravel 作业推送至 Amazon SQS 但未处理

    我正在运行 Laravel 5 3 我正在尝试测试队列作业 并且我已将队列配置为使用 Amazon SQS 我的应用程序能够将作业推送到队列中 并且我可以在 SQS 中看到该作业 但它留在那里 从未被处理 我尝试过跑步php artisan
  • 为什么 CloudFront 根据 Accept-Encoding 改变 CORS 标头响应?

    我正在尝试让 CORS 与 Amazon S3 CloudFront 一起正常工作 设置我的 CORS 配置后 它似乎可以正常工作 curl H Origin https app close io I https d4389n07pf8cq
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟

随机推荐

  • 在java中绘制文本,外观和感觉问题

    我重写了扩展 JToggleButton 的paintComponent 方法 以便在切换按钮时可以使用TexturePaint 填充文本 我遇到的问题是 我似乎无法使用与我的外观和感觉默认使用的字体相同的字体来绘制文本 我试过 g2d s
  • 使用 JavaScript 将参数添加到 URL

    在使用 AJAX 调用的 Web 应用程序中 我需要提交请求 但在 URL 末尾添加一个参数 例如 原文网址 http server myapp php id 10 结果网址 http server myapp php id 10 启用 真
  • 如何从 python 中的 stdout 中删除行?

    我有一个程序可以使用 paramiko 通过 ssh 获取一些数据 ssh paramiko SSHClient ssh connect main Server IP username main Username password main
  • 使用递归在 Java 中以正确的格式打印菱形图案

    我的程序从文件中读取值 并使用递归方法根据这些值打印星号模式 我只是在让所有东西正确排列方面遇到问题 输出应该如下所示 关于输出的格式 说明如下 请注意 图案关于中心线对称 垂直 对齐 图案也应在每条线上对称 水平 对齐 提示 使用线值来帮
  • 尝试 CSV 导入时,nil:NilClass 的未定义方法“路径”

    我正在关注导入 CSV Railscast它是直截了当的 I added require csv to my config application rb In my BuildingsController我创建了一个新的import像这样的
  • 如何在 GatsbyJS 项目中显示图像?

    如何显示图像 下面无法正确显示 In the src components Header js file img src images logo png style width 1 将资源直接导入到文件中 import React from
  • 是否可以在非交互模式下运行 WSL Bash?

    人们可能想在任务计划程序中使用 Windows 上的 Bash 或作为版本控制挂钩脚本 可以或者支持吗 如果没有 为什么 这是一个错误还是防止某些问题的措施 使用 3d1t0r的解决方案 但也可以通过管道连接到cat wsl bash c
  • Opencart 中的支付网关集成

    我想将 CitrusPay 印度支付网关 集成到我的 opencart 应用程序中 我收到了 PHP 集成工具包 但不知道在 opencart 中从哪里开始 请告诉我如何添加 Citruspay 作为付款方式 您可以编辑和修改这些文件 va
  • 虚拟主机的路由前缀如下

    我有一个 Symfony 应用程序 它有 2 个包 一个公共包 可通过 URL public blahblah test 调用 和一个 API 包 可通过 URL api getIt 调用 我创建了 2 个带有 2 个虚拟主机的子域 一个用
  • Visual Studio 项目属性中的各种“生成操作”设置是什么以及它们的作用是什么?

    在大多数情况下 您只需将 Visual Studio 设置为默认值即可 我指的是构建动作在解决方案资源管理器中选择的每个文件的属性 有多种选择 很难知道其中每一种会做什么 None 该文件不包含在项目输出组中 并且不会在构建过程中进行编译
  • 根据用户权限隐藏中继器列

    有人可以向我解释如何根据用户权限隐藏转发器列 假设我有
  • StringBuffer equals方法是否比较内容? [复制]

    这个问题在这里已经有答案了 可能的重复 将 StringBuffer 内容与 equals 进行比较 StringBuffer s1 new StringBuffer Test StringBuffer s2 new StringBuffe
  • 帮助将字符串日期转换为日期时间

    我在带有提交按钮的文本框中使用 Ajax 控件工具包日历扩展器 简单的 调试器显示文本已正确传输到调用方法 但是这行转换代码将文本框文本转换为 1 1 0001 12 00 00 AM 文本框日期是这样的 4 15 2011 DateTim
  • 检测 UIWebview 中的滑动手势

    我是新来的iPhone开发商 我制作了 epub 阅读器并将 epub 的每一页加载到我的webview 我想要的是 当用户这样做时right swipe gesture第二次我想导航到新页面 当用户这样做时我不想做任何事情right sw
  • 自动将 LF 和 CR (EOL) 添加到多个 .csv 文件的末尾

    我有一堆 csv外部生成并定期发送给我的文件 它们各自包含一行文本和 31 个 列 然而 他们都没有任何形式的EOL 没有 LF 本身或与 CR 一起使用 因此当我尝试组合这些文件中的任何一个时 我会在同一行上获得更多列 而不是每个文件一行
  • Perforce 到 git 的迁移 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我需要将存储库从 perforce 迁移到 git 以及所有历史记录 我尝试在网络上搜索 但没有找到任何明确的文档详细提及每个步骤 我看到了一个名为 git p4 的实用程序 但
  • Android 版 Google 登录

    我尝试了谷歌开发人员文档并尝试登录我的应用程序 该代码是从 git 复制的 并添加了来自文档 并定义在登录活动 as Public class LoginActivity extends AppCompatActivity implemen
  • 当服务器发送的事件运行时,带有 session_start() 的页面不会加载

    我正在开发一个小项目来制作 1v1 聊天系统 我想做一个项目 我可以把Server Sent Events好好利用 它运行得很好 但最近我对代码进行了一些更改 以便总的来说聊天会更有效 当我运行事件源时 我遇到了一个奇怪的问题 当我尝试访问
  • 使用Glide无法刷新验证码图片

    我尝试使用 Glide 将验证码图像加载到 ImageView 中 第一次加载没问题 但是 当我将验证码图像重新加载到同一个 ImageView 中时 ImageView 不会刷新到新图像 有谁知道如何解决这个问题 String url h
  • 如何向 Amazon Alexa Skills Kit (ASK) 混合字符串和数字输入?

    我正在尝试创建一个 Amazon Alexa 技能套件来进行某种自动化 这需要接受由字符串和数字组成的语音输入 a test12fish 当我在 Alexa Skills Kit 中使用自定义插槽时 它不允许我键入带有数字的字符串 当我尝试