Alexa是亚马逊开发的智能语音服务, 用户可以通过Echo音箱来指挥Alexa做一些事情.
项目相关代码: https://github.com/shijian-ws/alexa
Alexa官网: https://developer.amazon.com/alexa
新建Skill: Skill可以被理解一个应用, 可以在Alexa应用商店中被用户使用
Alexa应用商店:https://www.amazon.com/gp/help/customer/display.html?nodeId=201602060
Alexa应用商店 App Store 需要美国账户, Android没有使用过
创建亚马逊Lambda服务 https://console.aws.amazon.com/console/home
# 因为以前注册的账号, 有点记不清了AWS好像似乎需填写一些个人信息, 绑定银行卡之类的
选择弗吉尼亚北部服务器
进入Lambda服务. 选择创建函数
我已经了解一些格式配置 所以选择空模板自己写
继续配置Alexa, Lambda服务运行代码最后配置
保存 下一步
之后的两步骤和发布应用相关, 测试可以跳过这样之后可以在Alexa应用you skills中看见, 其他人不可见
可以看出Alexa已经进行access_token请求, 说明获取code步骤成功, 在6月份时候出现过一次获取code步骤都不执行,检查到最后是因为使用Let's Encrypt开源项目签发的免费https证书导致授信问题, 浏览器对Let's Encrypt支持的很好, 但猜测估计Alexa使用的是Apache-HttpClient框架导致授信CA有问题, 从日志截图的相关请起头也能出看一些信息
从日志来看是缺少请求参数, 而且请求头携带了authorization, base64解密之后就是client_id:client_secret, 忽然想起来Alexa配置的问题
修改一下配置 保存
关于Alexa用户授权方面API文档
到这一步基本上Alexa配置就完成了, 设备检索就是向AWS的Lambda服务发送请求获取Alexa可以控制的设备
Alexa与Lambda交互API文档
GitHub的请求与相应例子
为了更好的了解Alexa与Lambda交互请求信息, 所以准备对Lambda服务添加请求日志记录功能
进入AWS服务开启DynameDB, 一个动态数据存储服务
点击创建会等待一会
选择创建Lambda使用的角色
点击验证一下策略, 然后保存
进入Lambda服务可以看见已经可以控制DynameDB
开始编写Lambda服务代码 然后保存
在保存按钮旁边有个测试, 选择配置测试, 创建一个测试
点击一下测试, 看看Lambda服务运行结果
查看日志服务
这样开始操作Alexa应用里面的Skill进行设备发现
说一下分组、设备、情景的关系
分组就是讲多个情景或设备绑定到一个分组中, 在使用Alexa时会循环发送操作每个情景或设备, 不推荐, 可以在自己服务端进行业务绑定
设备、情景的区别就是一个设备类型字段值不同, 可以在服务端进行具体的划分
给Alexa应用绑定Echo智能音箱, Echo智能音箱可以在亚马逊代购, 万能的淘宝也有
等待一会Echo即有提示连接信息, 因为Echo访问美国亚马逊服务器可能存在超时延迟, 被墙问题
可以看到Alexa触发的发现设备日志了
网友评论