资料介绍
描述
概括
该项目结合使用屏幕抓取和 API 来获取弗吉尼亚北部环城公路内 66 号州际公路的当前行驶速度和当前可变通行费,并通过亚马逊的 Alexa 语音服务向用户提供这些信息。要试用它,请先启用它(只需说“启用 66 个通行费”或访问亚马逊技能商店中的“66 个通行费”)。从此,只要说一句“开通六十六通行费”。
资源
该项目使用 Alexa 的语音服务。代码使用 Python 3 编写,使用Alexa Skills Kit SDK for Python。该代码在 AWS 的 lambda 服务上运行。它还(最少)使用 DynamoDB 来存储特定于用户的信息。行程时间是从弗吉尼亚交通部 (VDOT) 的511 弗吉尼亚交通信息网站上获取的。实时通行费价格是通过 VDOT 的SmarterRoads数据门户的 API 获得的。Web 抓取和 XML 解析是使用 Python 的Beautiful Soup库完成的。
python 代码以及交互模型(JSON 文件)可在https://github.com/ViennaMike/I-66-Tolls获得
背景
我正在寻找一个将使用SmarterRoads门户上的数据集之一的项目,并且我认为能够检查北弗吉尼亚环城公路内 66 号州际公路的动态通行费会很有用。入站交通在早上 5:30 到 9:30 之间收费,而出站交通在下午 3:00 到 7:00 之间收费。
通行费会动态调整以保持高速。虽然通行费可能会在检查家里的费用和司机到达入口的时间之间发生变化,但了解高度可变的通行费仍然很有用,尤其是因为整个 10 英里长度的通行费有时会飙升至 40 美元以上。
我之前用亚马逊的模板写过一个简单的问答技能,但这是我的第一个自定义技能。
描述
Alexa skill 的整体架构如下图所示:
高级架构
当用户与技能交互时,系统会根据开发人员在 Alexa 技能构建器中定义的交互模型处理输入。这是在 JSON 文件中捕获的。技能构建器也是您告诉技能在哪里可以找到用于处理请求的执行代码并为认证和分发准备技能的地方。
在 66 Tolls 的情况下,有八个自定义意图,以及 Alexa 内置意图,例如 HelpIntent、FallbackIntent、StopIntent 等。自定义意图是:
- get_speeds 用于获取两个大致平行的旅行选项(I-66 和 US-50)的速度和旅行时间
- get_toll_hours 获取有关通行费生效时间的静态信息
- get_details 获取有关动态收费系统如何工作的额外静态信息
- list_interchanges 获取进出入口列表
- get_toll 获取指定方向从给定入口到出口的当前通行费
- save_trip 保存每个方向用户最频繁的进出
- get_favs 向用户报告他之前保存的行程。
- get_specific_help 为特定类型的请求提供帮助(获取通行费、获取速度和保存行程)。
当之前保存过行程的用户打开该技能时,如果是早上,该技能会立即返回相应的当前入站通行费,如果是晚上或下午,则返回出站通行费。
Alexa Skills Kit SDK 包含内置功能,可简化与 Amazon 的DynamoDB NoSQL 数据库的交互。这个技能使用一个简单的DynamoDB表来存储user_id(key),最频繁的入站出入口,最频繁的出站出入口。
到目前为止,该项目最简单的部分是从两个 VDOT 源获取旅行时间和通行费的代码。有一个用于收费数据的 API,我不得不做一些简单的网络抓取来获取旅行时间数据。这段代码可以在代码中的 get_travel_times() 和 get_tolls() 函数中找到。
开发语音交互模型需要多次迭代,我发现随着时间的推移,我能够改进对话模型,同时减少意图的数量和与每个意图关联的槽类型的数量。然而,即便如此,我发现我的技能的第一个发布版本并没有像我预期的那样为用户工作。大多数情况下在技术上运行良好(有一个严重错误),但除我以外的用户说的事情与我想象的不同,并以不同的方式寻求帮助。不仅要花时间思考用户将如何与您的技能互动(就像我一开始所做的那样),而且还要让其他人也测试您的技能并获得反馈,这绝对是值得的。
因为这对我来说是新的,所以花了相当多的时间和反复试验来弄清楚如何编写处理程序代码,尤其是如何处理会话和持久属性以及与 DynamoDB 的交互。我使用了大量资源,其中最好的是 Ralu Bolovan 的Skill SDK文档、Color Picker示例应用程序和A Beginner's Guide to the New AWS Python SDK for Alexa 。如文档中所述,python SDK 支持两种编码模型,一种基于带有装饰器的函数,另一种基于类。我选择使用类,但拾色器示例使用修饰函数。
我遇到的一些麻烦来自两个因素:1) Alexa 技能的界面随着时间的推移发生了变化。它一直在改进,但这也意味着网络上的一些示例和教程已经过时了。2) 虽然有详尽的文档,但许多教程和示例都侧重于简单的演示。出于这个原因,退后一步并阅读更多 SDK 而不是总是跳进去可能更好。例如,我需要让我的代码在每次调用意图时都做一些事情,无论意图是什么。事实证明这是由请求拦截器和响应拦截器处理的,大多数简单示例都忽略了它们。这一点,连同对使用 DynamoDB 的全面演练,是我找到适用于 Alexa 的新 AWS Python SDK 初学者指南的原因 如此乐于助人。
我最初希望该技能的调用是“我六十六通行费”,但我发现 Alexa 无法将其识别为调用。出于这个原因,我不得不调用“六十六通行费”而不是“我。六十六通行费。”
我还发现,如果你使用 Alexa 的内置“确认”功能,那么当你的代码第一次被调用时,handler_input.request_envelope.session.new被设置为 False,显然是因为内置的确认请求启动了会议。这是要小心的事情。由于这个和其他原因,我最终检查了我之前是否初始化了会话属性,而不是检查会话是否是新的。
我修复的最后一个技术错误是我没有考虑过服务器的“本地时间”是什么。我一直天真地认为,既然我使用的是AWS的北弗吉尼亚服务器,那么本地时间就是美国东部时区,但是所有Lambda服务器都使用GMT作为本地时间,这更有意义。所以我使用 pytz 库转换为本地时间。
对于语音界面,我发现我必须扩展插槽值的同义词列表(例如用于出口的名称),添加更具体的帮助查询,除了全面的,因此很长,“帮助”意图,并利用用于检查用户提供的插槽值的界面内置功能,我在简单教程中没有读到过。
我希望这个示例对想要编写自己的自定义 Alexa 技能的其他人有所帮助。
- 有源滤波装置在轨道交通行业的应用与选型 0次下载
- YNH-360 人脸识别通行主板规格书
- 基于可拓路径的密集人群环境通行策略综述 12次下载
- allegro学习教程之查看GXL线长 0次下载
- 公交车停靠站的快速路出口通行能力模型 14次下载
- 解决干扰问题的通行做法资料下载
- 温湿度曲线图实时查看终端的PCB原理图及源码 38次下载
- 如何使用Alexa语音控制电视遥控器 11次下载
- 如何使用区域道路实况数据进行交通行为谱分析的方法说明 3次下载
- ADAS技术有什么作用?如何减少道路的安全问题? 8次下载
- Getting Started with RFID 2次下载
- 电话自动催费软件9.3
- 硬件型号查看工具
- 008密码查看器V2.34
- 万能文件查看器下载 0次下载
- DC电源降压芯片型号怎么查看 908次阅读
- 寄存器查看器的功能和使用 1383次阅读
- Linux系统中的10个常用的文本查看命令 1w次阅读
- 路由表的介绍与查看 3026次阅读
- 如何查看模块的诊断信息 1807次阅读
- 如何在Linux中查看隐藏文件 1.5w次阅读
- 如何在IDEA中查看依赖关系 1.8w次阅读
- 计算机端口在哪里查看 2.7w次阅读
- Linux终端中查看图像的方法 4339次阅读
- 关于ETC的使用技巧及遇到问题时的正确措施 2949次阅读
- 微雪电子ROC-RK3308主板CC-Amazon Alexa简介 1282次阅读
- 简述Linux文本查看命令 3435次阅读
- 智能交通行业有哪些值得关注 2159次阅读
- 单相费控智能电表的原理及设计 1.4w次阅读
- 无线设备传输距离的估算与费里斯传输公式 5018次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多