博主也是一个刚接触amazon alexa skill开发的小白,从零开始。下面我说下我在开发我的alexash时所遇到的坑。

1、创建AWS lambda函数时没有 alexa skill kit这个触发器

通常我们创建lambda函数服务都需要添加对应触发器。如图:

可是我开始弄这个是是没有alexa skill kit 相关的触发器的。

原因就是你必须把你的aws 地址改成 美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、亚太区域(东京)、欧洲(爱尔兰) 不然会出现Dseigner里面找不到alexa skill kit的情况。推荐用第一个美国东部(弗吉尼亚北部)

                    

2、创建的skill怎样持续对话

第一次唤醒技能后,能与你持续对话,直到你说出stop等退出之类的话语。

这个问题真的困扰了我很久,我也在是经过1、2天的时间后才弄出来的,期间加上大佬的提醒,才弄清楚是怎么回事。alexa他默认的设置就是当他回复用户完后,自动会关闭对话,想要在次对话必须重新唤醒。  这里面就是一个关键的返回值的问题:ShouldEndsession的返回值,它的返回值默认是turn,也就是为什么对话一次后就会结束的原因,你需要把他设置成false。

我们看一下默认的ShouldEndsession返回值样式类型

         唤醒时返回值

         

用户对话时返回值

         

由此可见,我们创建的技能的返回值没有发现ShouldEndSession,我们就需要自己去设置。

如果你是自定义aws lambda编写的skill服务,你需要在你的返回值里面设置ShouldEndSession的值为false

如果你是使用蓝图或者无服务储存库创建的函数,你只需要加上一个.withShouldEndSession(false)或者你在node_modules-->lib-->response-->ResponseFactory.js里面的ResponseFactory函数里面的return的speak的return this前面加上下面一段代码

 if (!isVideoAppLaunchDirectivePresent()) {response.shouldEndSession = false;}

或者在你的服务代码时加上.withShouldEndSession(false)  如下

3、skill对话框模型

对话框模型这个里是一个困扰了我很久的难题,主要是要实现uers与alexa在一个Intent里面的多轮对话。(我本人的理解)

我们开始创建的自定义skill是这样的:

我在开始弄对话框模型时  创建的skill都是这样的。   而我们创建包含对话框模型的skill必须有下面这些东西:

dialog是对话框模型最重要的东西

你要创建对话框模型 必须开启你的槽填充

也就是  slot folling这个东西。其他的按照要求填写就行,当然你skill创建对话框模型,你对应的lambda也应该要创建对应的服务(参考的github上的代码)

对话框模型的skill的每一个Intent都写了两个函数来服务他。这里最重要的就是判断 request.dialogState的状态,也就是我上面框出来的内容。

也可以参考alexa官方文档(我给几个当时我看的,不完全是,你可以在里面找到你要的):https://developer.amazon.com/docs/custom-skills/define-the-dialog-to-collect-and-confirm-required-information.html

https://developer.amazon.com/docs/custom-skills/dialog-interface-reference.html#confirmslot

https://developer.amazon.com/docs/custom-skills/define-the-dialog-to-collect-and-confirm-required-information.html

https://developer.amazon.com/docs/custom-skills/include-a-card-in-your-skills-response.html

同时npm上的文档可能也对你有帮助:https://www.npmjs.com/package/alexa-sdk#dialog-interface

4、skill再提醒与skill出错结束对话

再提醒功能主要是用做用户唤醒技能后,在接下来5秒内用户未发出命令或者意图,Echo会再次提醒用户需要做什么吗。提醒内容由你自定义,用到的是一个amazon写好的方法:. reprompt()  括号里面定义Echo再次提醒用户的话。

技能出错结束对话使我们在前面就已经已经介绍过,使用:.withShouldEndSession()  方法,只是说对应括号里面的值改为ture 就行。 当然需要你定义什么时候是出错的情况,我这里做的是让服务端给我返回一个状态码,判断状态码,从而确定技能是否出错。

5、Echo未识别用户意图

我们构建好技能后,一定会测试技能的kekao可靠性。在测试过程中你一定会发现Echo未能识别你的意图的情况。默认的Echo会返回一个技能有问题之内的话。我们有两种可以处理未识别用户意图的方法,一种是获取到用户的话,上传到你的cloud处理,再返回给你,第二种就是使用amazon的默认意图: amazon.fallback。 你只需要在你的skill里面添加它就可以在lambda中使用。

在你启用这个内置意图后,在Echo未识别用户意图时,Echo返回你自定义的话。

6、发布技能

子我们配置完技能,在发布时,需要注意两个地方。第一:你必须添加你的隐私政策url,不然在后面步骤会出错。第二:如果你的技能需要授权token,授权网站你必须使用https协议,不然会出现以下错误。

隐私政策网站你可以自己写一个静态的,可以参考:https://meater.com/privacy-policy/。

授权token必须使用https协议 不然会报如上错误。     可以使用:https://myssl.com/ssl.html   查看网站协议。

创建skill  与aws 服务可以查看我另外两篇博客

lambda中创建你skill里Intent服务函数时千万看清楚,不然会出现一些莫名其妙的错误。

注:前面说的httos协议你可以选择腾讯云的或者阿里的   只需要购买一个域名就行,他有免费一年的SSL,还有你必须有自己的服务器。购买一个域名很便宜 也就40来块

alexa 项目告一段落了。接下来会搞国内的智能音响。天猫精灵和小爱同学,在开发过程中遇到的心得或者坑,我依旧会写在博客中。

不好意思啊   不能在继续开发智能音箱了,如果后续有机会,会继续更新博客。

Amazon alexa skill开发中遇到的坑相关推荐

  1. celery开发中踩的坑

    celery开发中踩的坑 celery连接redis 当使用redis做broker,redis连接需要密码时: BROKER_URL='redis://:xxxxx@127.0.0.1:6379/0 ...

  2. Widget开发中遇到的坑

    1.在Manifest文件中声明 <receiver android:name=".receiver.GoldWidgetProvider"><intent-fi ...

  3. 前端项目开发中碰到的坑、移动端兼容性问题

    前端开发中碰到的坑.移动端兼容性问题 1.ios兼容input光标高度 问题:input输入光标,在安卓手机上显示没有问题,但是在苹果手机上当点击输入的时候,光标的高度和父盒子的高度一样. **出现问 ...

  4. 记一次ios内购开发中踩的坑

    记一次ios内购开发中踩的坑 前段时间好不容易把APP中的非续期内购上架成功了,过程也是一波三折,各种问题,但最终还是内购审核通过了 通过后我以为就没问题了,但第二天打开xcode运行应用后,准备验证 ...

  5. javaweb开发中的那些坑

    最近电脑有点问题,没办法就重装系统了,花了一个晚上重装IDE.,配置环境,好不容易把eclipse的环境弄好,加载之前的项目时却又到各种问题,一怒之下,写一篇记录下在javaweb开发中遇到的各种坑 ...

  6. 细数移动IM开发中的那些坑

    移动互联网时代的来临促使我们所有的开发者都要从用户视角出发,基于某一特定场景来创建应用,满足用户需求.通常,在这些应用中,沟通环节都是必不可少的.这就要求创业者不仅要花时间和精力来琢磨用户在某一特定场 ...

  7. 微信小程序开发中遇到的坑

    博主也是一个新入坑的萌新,从上个月20多号开始开发微信小程序,总体感觉入手快,门槛低. 开发中使用的办法比较老土. 下面一一介绍下我在开发中遇到的问题与解决方法 1.下拉刷新与上拉加载 下拉刷新微信提 ...

  8. 你踩过几个?盘点微信H5小游戏开发中的那些坑

    眼下小游戏特别火,不少团队也陆续启动了微信小游戏的项目,并于立项前期进行技术预研究.但从微信官方文档看 , 却能发现不少坑. 一.运行环境的坑 首先微信小游戏是一个不同于浏览器的 JavaScript ...

  9. 由安卓开发中的一个坑引发的问题解决之道浅析

    博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 扯扯 最近发生了好多事情,两会,google AI alphaGo 大战李世石,俘获无数少男少女心的韩国电视剧<太 ...

  10. 你踩过几个?微信H5小游戏开发中的那些坑

    眼下小游戏特别火,不少团队也陆续启动了微信小游戏的项目,并于立项前期进行技术预研究.但从微信官方文档看 , 却能发现不少坑. 一.运行环境的坑 1.API兼容性 1.1.网络API BOM的核心是wi ...

最新文章

  1. 机器学习Top10算法,教你选择最合适的那一个!
  2. 成为更优秀的开发人员:第一步-“制造”粉丝
  3. Stack(栈)和Heap(堆)的区别
  4. vue前端怎么导出图片_vue前端实现导出表格
  5. 【排序】算法(python实现)
  6. tms tck_在雅加达EE TCK中使用Arquillian的可能方法
  7. 关于统计时间切片标签的一些sql
  8. itext 7 设置页面大小_indesign页面设置技巧教程【indesign页面大小设置教程】
  9. CentOS7.2安装Oracle12.1.0.2
  10. VB取得TextBox、RichTextBox光标所在的行和列(支持汉字)
  11. 《IS-IS网络设计解决方案》一导读
  12. d3学习day3 --y轴添加文本标签
  13. U盘被写保护怎么解除?
  14. 互联网晚报 | 11月10日 星期三 | 华为捐赠欧拉开源操作系统;微信支持导出个人信息;12306上线铁水联运服务...
  15. 让Win7做DHCP服务器
  16. 练习题(困难) 百慕大三角 POJ1069
  17. Kubernetes高可用性监控:Thanos的部署
  18. 附近商家位置java开发附近定位
  19. 分享生活美好,三星Lifestyle系列电视和你一起拉满新年氛围
  20. (转)三款免费Win7系统摄像头录制工具

热门文章

  1. Mac截图很大很怎么变小?
  2. 粉丝福利,抽5本《新程序员》004期免费送
  3. linux里关于Tab/Ctrl/Shift/Insert的快捷键
  4. 【腾讯优测干货分享】微信小程序之自动化亲密接触
  5. Unity输入控制物体旋转和延迟缩放-课程作业
  6. 想成为挣钱的游戏程序员要经历多少阶段?
  7. BOC保护的色氨酸卟啉化合物(TAPP-Trp-BOC)桃红色固体162.8mg供应-齐岳供应
  8. 电脑能正常上网,但是显示无Internet
  9. 【学习摘记】马士兵HTML CSS_课时4-5_表格和表单
  10. 德国电信超90万用户遭遇网络中断 起因是一次失败的路由器劫持