Serverless与IoT:为智能音响赋能

本文涉及的产品
简介: 众所周知,随着网络技术的不断发展,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技术非常的般配

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
11天前
|
自然语言处理 Cloud Native Serverless
通义灵码牵手阿里云函数计算 FC ,打造智能编码新体验
近日,通义灵码正式进驻函数计算 FC WebIDE,让使用函数计算产品的开发者在其熟悉的云端集成开发环境中,无需再次登录即可使用通义灵码的智能编程能力,实现开发效率与代码质量的双重提升。
95469 4
|
3月前
|
安全 搜索推荐 大数据
函数计算FC:驱动业务智能化的核心引擎
函数计算FC:驱动业务智能化的核心引擎
|
11月前
|
机器学习/深度学习 人工智能 运维
《Serverless数据库技术研究报告》——三、 Serverless数据库技术趋势——(七)数据库智能自治,提升Serverless易用性
《Serverless数据库技术研究报告》——三、 Serverless数据库技术趋势——(七)数据库智能自治,提升Serverless易用性
155 0
|
11月前
|
人工智能 运维 供应链
【年终特辑】看见科技创新力量 洞见时代创业精神—智能制造—旭孚:“IoT+SaaS”数字化升级解决方案,为制造业降本增效
【年终特辑】看见科技创新力量 洞见时代创业精神—智能制造—旭孚:“IoT+SaaS”数字化升级解决方案,为制造业降本增效
118 0
|
物联网
《阿里云总监课第二期——IoT时代的语音交互智能》电子版地址
阿里云总监课第二期——IoT时代的语音交互智能
|
物联网
《阿里云IoT – 平台赋能生态,加速企业智能升级》电子版地址
阿里云IoT – 平台赋能生态,加速企业智能升级
91 0
《阿里云IoT – 平台赋能生态,加速企业智能升级》电子版地址
|
物联网
《阿里云IoT – 赋能产业,连接无限想象 飞燕平台重磅上线 王勇》电子版地址
阿里云IoT – 赋能产业,连接无限想象 飞燕平台重磅上线 王勇
180 0
《阿里云IoT – 赋能产业,连接无限想象 飞燕平台重磅上线 王勇》电子版地址
|
物联网
《共建行业标准,打造共赢生态——智能物联标准白皮书发布及IoT合作伙伴计划落地介》电子版地址
共建行业标准,打造共赢生态——智能物联标准白皮书发布及IoT合作伙伴计划落地介
96 0
《共建行业标准,打造共赢生态——智能物联标准白皮书发布及IoT合作伙伴计划落地介》电子版地址
|
存储 关系型数据库 MySQL
今日14点开播!打造智能无感、秒级弹性的Serverless数据库
2022年阿里云数据库在云栖大会宣布:All in Serverless。核心产品PolarDB、AnalyticDB、RDS均实现了Serverless能力。
今日14点开播!打造智能无感、秒级弹性的Serverless数据库
|
安全 物联网
更强交互,阿里云IoT发布屏显智能产品
阿里云推出了三大全新产品,帮助设备快速完成智能化升级。
340 0
更强交互,阿里云IoT发布屏显智能产品

热门文章

最新文章

  • 1
    Serverless 应用引擎操作报错合集之在阿里函数计算中,SD Controlnet Depth 运行过程中出现错误“urllib3 v2.0 only supports OpenSSL 1.1.1+”如何解决
    3
  • 2
    Serverless 应用引擎操作报错合集之在阿里云函数计算中,laravel zip包使用示例的start.sh脚本启动时出现错误代码如何解决
    3
  • 3
    Serverless 应用引擎操作报错合集之在阿里云函数计算中,服务器调用FC函数时出现 "[Errno -3] Temporary failure in name resolution)" 错误如何解决
    2
  • 4
    Serverless 应用引擎操作报错合集之在Serverless 应用引擎中,部署过程中遇到错误代码如何解决
    2
  • 5
    Serverless 应用引擎操作报错合集之在 Serverless 应用引擎中,遇到“没法通过 head 传递灰度标识”如何解决
    4
  • 6
    Serverless 应用引擎操作报错合集之在阿里函数计算中,函数执行超时,报错Function time out after如何解决
    10
  • 7
    Serverless 应用引擎操作报错合集之在阿里函数计算中,云函数怎么一直报错Function instance exited unexpectedly(code 1, message:operation not permitted) with start command 'php server.php '.如何解决
    7
  • 8
    Serverless 应用引擎操作报错合集之在Serverless 应用引擎中,FC3.0读取response body的时候出现错误提示"Caused by: java.io.IOException: closed"如何解决
    7
  • 9
    Serverless 应用引擎操作报错合集之在使用阿里云函数计算的过程中遇到“Browser closed unexpectedly”的错误如何解决
    10
  • 10
    Serverless 应用引擎操作报错合集之Nacos中nacos启动正常,访问白页,启动日志显示正常如何解决
    6
  • 相关产品

  • 函数计算