Serverless与IoT:为智能音响赋能

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 众所周知,随着网络技术的不断发展,IoT技术也逐渐走进了千家万户,无论是扫地机器人、智能窗帘等智能家居,还是说智能音箱等娱乐设施,IoT技术都变得可见可及,而众多物联网产品中,智能音箱可以说是近几年最火热的设备之一了,无论是小米的小爱同学、百度的小度还是腾讯的9420、阿里的天猫精灵,它们都在努力走进寻常百姓家。

前言

众所周知,随着网络技术的不断发展,IoT技术也逐渐走进了千家万户,无论是扫地机器人、智能窗帘等智能家居,还是说智能音箱等娱乐设施,IoT技术都变得可见可及,而众多物联网产品中,智能音箱可以说是近几年最火热的设备之一了,无论是小米的小爱同学、百度的小度还是腾讯的9420、阿里的天猫精灵,它们都在努力走进寻常百姓家。

在之前的章节中,我们对Serverless已经有了比较深刻的了解,对Serverless的应用领域也有了比较深刻的接触,本文将会通过与IoT能力进行结合,让Serverless架构在智能音箱中,发挥有趣的作用。本文将会以阿里云函数计算,通过为天猫精灵和小爱同学赋能,制作属于我们自己的应用程序。

无论是天猫精灵还是小爱同学,与函数计算的结合都是相对比较容易的:

通过API网关/HTTP函数来触发函数。实际上和前文中所讲述的Github Issue机器人是类似的原理。

首先明确我们要通过智能音箱要实现的功能,在日常生活中,我们经常会“纠结”,这个时候就会有人想要掷骰子来做一些决定,所以,我们可以通过智能音箱实现一个掷骰子的功能,当我们对音响说“掷骰子”,音响给我们返回扔骰子后的点数。

天猫精灵

以天猫精灵为例,我们需要先在天猫精灵开发者平台注册开发者账号,并且登陆、认证。然后我们新建技能:

这里面我们剋设置好我们的应用调用词为“扔骰子”,即通过扔骰子来触发我们的功能,然后我们保存项目。保存之后,我们可以新建意图,所谓的意图,官方给的描述是:意图(Intent)是自定义技能中提供功能的载体,所以在创建意图时需要明确此意图提供什么样的功能,我们可以将意图设定为掷骰子,并将其设为默认意图

完成之后,我们需要进行接口权限绑定,首先,我们需要找到回复逻辑的WebHook详情:

在这里,我们需要下载认证文件,并将其配置到服务器中,根据官网文档的描述:获取您配置的 Webhook URL,取出URL中域名和端口号(如果有),然后拼接上"aligenie/认证文件名.txt "访问这个路径,以返回的结果(认证文件的内容)作为依据,判断认证是否成功。

例如:

  1. 下载到的认证文件是 13f776873db7e9dfae87121bcec0712a.txt;
  2. 意图内配置的 Webhook URL 为 https://webhook-service.com/**
  3. 那么我们将访问 https://webhook-service.com/aligenie/13f776873db7e9dfae87121bcec0712a.txt
  4. 将获取到的结果做校验,校验通过 Webhook URL 才能配置成功。

结合我们函数计算,以Python Web框架Bottle为例,通过下载认证文件之后,我们可以编写我们的认证代码:

# -*- coding: utf-8 -*-


import bottle


@bottle.route('/aligenie/eaf3f19e4fcac40131ee278cdb0284dd.txt', method='GET')

def token():

   return 'Jfc4Z4Ur15JwUBuvUQD5wg7Nu8+l+HscqYlfofbyJdYyLiBpubYhF9sbUIH/ig6g'


app = bottle.default_app()

并将代码部署到阿里云函数计算,绑定自定义域名,例如此处我绑定了域名:aligenie.iot.serverless.fun,此处可以保存:

保存完成之后,我们可以继续开发我们的掷骰子应用,我们可以根据文档,找到我们需要返回的数据结构:

此时,我们对刚才的函数进行升级,增加掷骰子的方法。增加后的完整代码:

# -*- coding: utf-8 -*-


import bottle

import random



@bottle.route('/', method='POST')

def test():

   return {

       "returnCode": "0",

       "returnErrorSolution": "",

       "returnMessage": "",

       "returnValue": {

           "reply": random.choice(['1', '2', '3', '4', '5', '6']),

           "resultType": "RESULT",

           "executeCode": "SUCCESS",

           "msgInfo": ""

       }

   }


@bottle.route('/aligenie/eaf3f19e4fcac40131ee278cdb0284dd.txt', method='GET')

def token():

   return 'Jfc4Z4Ur15JwUBuvUQD5wg7Nu8+l+HscqYlfofbyJdYyLiBpubYhF9sbUIH/ig6g'


app = bottle.default_app()

更新函数之后,我们可以在线上进行简单的测试:

可以看到,当我们发出掷骰子的指令,系统已经是可以为我们返回掷骰子后的随机数字可。至此,我们完成了天猫精灵版的“Serverless掷骰子”小技能。

小爱同学

和天猫精灵一样,我们需要去小爱同学开发者平台进行账号注册、登陆和认证。然后,我们可以创建一个技能:

完成之后,我们设置唤醒指令,并且需要填写一些数据,例如图标,介绍等:

设置成功之后,我们可以在阿里云函数计算创建一个函数,根据小爱同学规约的服务端返回结构:

代码为:

# -*- coding: utf-8 -*-


import bottle

import random



@bottle.route('/', method='POST')

def test():

   return {

       "is_session_end": True,

       "version": "1.0",

       "response": {

           "open_mic": True,

           "to_speak": {

               "type": 0,

               "text": random.choice(['1', '2', '3', '4', '5', '6'])},

       }

   }



app = bottle.default_app()


完成之后,我们进行设备调试:

可以看到,当我们输入预定的命令“打开掷个骰子”,系统已经可以返回给我们预期的结果,至此小爱同学版的“Serverless掷骰子”开发完成。

总结

至此为止,我们通过Serverless架构,成功地为我们的天猫精灵和小爱同学开发了一项新功能,接下来想要让更多人使用这个新功能就可以去发布,审核,上线了。当然,本节内容仅仅是举了一个例子,除此之外,我们还可以通过Serverless架构,为我们的智能音箱定制更有趣的功能,例如,我们通过爬虫技术来实现一个网站流量监控,或者服务状态监控,当我们问智能音箱某某服务或者网站目前运营状态如何,智能音箱就会告诉我们;或者说当我们可以将要追的电视剧、电子书爬虫与智能音箱整合,当我们问智能音箱剧或者书的更新状况时,通过API网关触发我们的函数服务,获得到结果,再交由智能音箱告知我们,这些功能都算是很有趣的定制化服务或定制化功能。

通过本节内容,希望读者可以对Serverless架构有新的启发,其实随着5G的到来,IoT技术会有更大的契机进行更快速的发展,而此时Serverless架构可以说是与IoT技术非常的般配

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
3月前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
102 1
|
2月前
|
物联网 Linux C#
一键掌控未来!用 Uno Platform 打造跨平台 IoT 应用,轻松连接你的智能设备,让生活更智能!
微软的开源跨平台框架 Uno Platform 支持使用 C# 和 XAML 一次性编写代码并部署至多个平台,如 Windows、macOS、Linux、WebAssembly 及 iOS/Android,这使其成为 IoT 设备开发的理想选择。本文通过创建控制网络 LED 灯的应用,详细介绍了 Uno Platform 的环境搭建及 MQTT 客户端配置过程,实现了 LED 状态订阅与控制指令发送功能。该案例展示了 Uno Platform 在 IoT 领域的潜力及其跨平台优势,未来可扩展至更多设备类型,构建智能家居系统。
229 58
|
8天前
|
存储 JSON 运维
智能物联网平台:Azure IoT Hub在设备管理中的实践
【10月更文挑战第26天】随着物联网技术的发展,Azure IoT Hub成为企业管理和连接数百万台设备的强大平台。本文介绍Azure IoT Hub的设备管理功能,包括设备注册、设备孪生、直接方法和监控诊断,并通过示例代码展示其应用。
16 4
|
22天前
|
存储 消息中间件 人工智能
ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用
本文整理自2024年云栖大会阿里云智能集团高级技术专家金吉祥的演讲《ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用》。
|
2月前
|
消息中间件 运维 安全
云消息队列 ApsaraMQ Serverless 演进:高弹性低成本、更稳定更安全、智能化免运维
在 2024 年云栖大会上,阿里云智能集团产品专家刘尧全面介绍了云消息队列 ApsaraMQ Serverless 的落地成果和产品进展。此外,我们还邀请到杭州优行科技有限公司中间件消息研发负责人王智洋,分享了 ApsaraMQ for Kafka Serverless 助力曹操出行实现成本优化和效率提升的实践经验。
147 11
|
2月前
|
人工智能 运维 Serverless
Serverless + AI 让应用开发更简单,加速应用智能化
2024 云栖大会开幕,在大会第一天,阿里云正式发布全新产品——云应用开发平台 CAP。CAP 拥有丰富的场景化应用模板,可以极速体验,并且具备更低的成本优势以及灵活组装等特点,成为广大开发者与企业必备的一站式应用开发平台,让应用开发更简单。
173 12
|
1月前
|
物联网 Linux Android开发
一键掌控未来!用 Uno Platform 打造跨平台 IoT 应用,轻松连接你的智能设备,让生活更智能!
本文通过具体案例介绍了如何使用微软的开源框架 Uno Platform 实现与 IoT 设备的集成。Uno Platform 支持一次编写、多平台部署,适用于 Windows、macOS、Linux、WebAssembly 及 iOS/Android。本例创建了一个控制网络 LED 灯的应用,详细说明了环境搭建、MQTT 客户端配置、主题订阅及控制指令发送等步骤。该案例展示了 Uno Platform 在 IoT 领域的潜力及其跨平台优势,未来可扩展至更多设备类型,构建智能家居系统。
50 0
|
3月前
|
Serverless 开发者 容器
Serverless 架构问题之Serverless架构在赋能高校方面如何解决
Serverless 架构问题之Serverless架构在赋能高校方面如何解决
28 0
|
4月前
|
传感器 供应链 物联网
ERP系统与物联网(IoT)集成:实现智能化业务管理
【7月更文挑战第29天】 ERP系统与物联网(IoT)集成:实现智能化业务管理
317 0
|
6月前
|
传感器 物联网 大数据
物联网(IoT)技术与应用:塑造未来的智能化生活
【5月更文挑战第1天】物联网(IoT)技术整合传感器、嵌入式系统、云计算与大数据,连接智能设备,重塑生活与工作方式。应用涵盖智能家居、工业自动化、农业、智能城市及医疗健康,提升效率与便利性。然而,数据安全、设备兼容性及网络基础设施仍是挑战。随着5G和AI进步,IoT将在更多领域发挥潜力,驱动社会智能化转型,需关注技术挑战并加强创新。

热门文章

最新文章

相关产品

  • 函数计算