Serverless与IoT实践:为智能音箱赋能

本文涉及的产品
简介: 本文通过与IoT能力进行结合,让Serverless架构在智能音箱中,发挥有趣的作用。

本文通过与IoT能力进行结合,让Serverless架构在智能音箱中,发挥有趣的作用。

前言

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

本文将会以阿里云函数计算,通过为天猫精灵和小爱同学赋能,制作属于我们自己的应用程序。

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

image.png

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

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

天猫精灵

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

image.png

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

image.png

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

image.png

在这里,我们需要下载认证文件,并将其配置到服务器中,根据官网文档的描述:获取您配置的 Webhook URL,取出URL中域名和端口号(如果有),然后拼接上“ligenie/认证文件名.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,此处可以保存:

image.png

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

image.png

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

# -*- 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()

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

image.png

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

小爱同学

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

image.png

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

image.png

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

代码为:

# -*- 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()

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

image.png

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

总结

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

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

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
自然语言处理 小程序 Ubuntu
|
物联网
《物联网专场-智能生活开放平台 助力消费电子行业“智能+”》电子版地址
物联网专场-智能生活开放平台 助力消费电子行业“智能+”
79 1
《物联网专场-智能生活开放平台 助力消费电子行业“智能+”》电子版地址
|
物联网
《阿里云IoT – 平台赋能生态,加速企业智能升级》电子版地址
阿里云IoT – 平台赋能生态,加速企业智能升级
99 0
《阿里云IoT – 平台赋能生态,加速企业智能升级》电子版地址
|
弹性计算 运维 Kubernetes
serverless 案例 | 制造 SKG未来穿戴
serverless 案例 | 制造 SKG未来穿戴
193 0
serverless 案例 | 制造 SKG未来穿戴
|
数据采集 监控 物联网
Serverless与IoT:为智能音响赋能
众所周知,随着网络技术的不断发展,IoT技术也逐渐走进了千家万户,无论是扫地机器人、智能窗帘等智能家居,还是说智能音箱等娱乐设施,IoT技术都变得可见可及,而众多物联网产品中,智能音箱可以说是近几年最火热的设备之一了,无论是小米的小爱同学、百度的小度还是腾讯的9420、阿里的天猫精灵,它们都在努力走进寻常百姓家。
233 0
|
边缘计算 人工智能 运维
阿里云发布IoT数智底座3.0 提升物联网应用开发效率
IoT数智底座3.0,全面升级了云网边端安全一体化架构,更新了工业、城市、农业和消费四大行业的应用引擎。
759 0
阿里云发布IoT数智底座3.0 提升物联网应用开发效率
|
存储 人工智能 编解码
云栖新品|阿里云IoT发布云芯一体智能视觉解决方案
在2021云栖大会IoT云端一体硬件与应用创新峰会上,阿里云IoT发布了Link Visual 云芯一体化智能视觉解决方案,宣布Link Visual从单一视频云服务平台向芯云一体化智能视觉解决方案升级。
302 0
云栖新品|阿里云IoT发布云芯一体智能视觉解决方案
|
边缘计算 移动开发 运维
阿里云AIoT正式发布IoT安全中心和IoT Studio 3.0,进一步巩固AIoT“云网边端”基础能力
3月10号,阿里云AIoT线上春季产品发布会发布了IoT安全中心和IoT Studio 3.0两大重磅AIoT工具,为用户持续打造稳定可靠、便捷安全的AIoT“云网边端”基础能力。
395 0
阿里云AIoT正式发布IoT安全中心和IoT Studio 3.0,进一步巩固AIoT“云网边端”基础能力
|
存储 边缘计算 运维
万物智联时代的终端智能「管家」 重磅升级:混合云IoT一体机
「混合云IoT一体机」边缘部署、开箱即用、安全稳定、智管易用,通过定制软件和硬件相结合,预先定制、集成、测试和优化,实现快速部署和远程运维,并提升后续系统可用性和运维效率,是万物互联时代企业数字化转型的关键基础设施和云边协同的最佳解决方案。
423 0
万物智联时代的终端智能「管家」 重磅升级:混合云IoT一体机
|
弹性计算 运维 安全
阿里云新品发布会周刊第92期 丨 阿里云AIoT正式发布IoT安全中心和IoT Studio 3.0,进一步巩固AIoT云网边端基础能力
阿里云AIoT致力于让设备智能化更有效率,创新行业解决方案,为合作伙伴提供更高效能的开发工具与平台,进一步夯实云网边端的AIoT基础设施能力。
517 0
阿里云新品发布会周刊第92期 丨 阿里云AIoT正式发布IoT安全中心和IoT Studio 3.0,进一步巩固AIoT云网边端基础能力