【随便看看】十分钟用 FAAS 给天猫精灵增加自定义能力

本文涉及的产品
函数计算FC,每月15万CU 3个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: ## 背景 - 虽然天猫精灵目前功能已很丰富,但还有些定制化高的服务无法满足,比如查询学校课表,考研信息,公交状态,特定网站状态等。不过天猫精灵提供了开放平台能力,使得我们可以轻松给天猫精灵添加这些自定义能力。 - 本文做个简单示例,和天猫精灵说小爱同学,天猫精灵回复"小爱同学,我是天猫精灵" 来展示一下如何通过天猫精灵调用我们的自定义服务。 - 查阅文档,可知要实现这个功能,关键有两步,一

背景

  • 虽然天猫精灵目前功能已很丰富,但还有些定制化高的服务无法满足,比如查询学校课表,考研信息,公交状态,特定网站状态等。不过天猫精灵提供了开放平台能力,使得我们可以轻松给天猫精灵添加这些自定义能力。
  • 本文做个简单示例,和天猫精灵说小爱同学,天猫精灵回复"小爱同学,我是天猫精灵" 来展示一下如何通过天猫精灵调用我们的自定义服务。
  • 查阅文档,可知要实现这个功能,关键有两步,一是让天猫精灵识别,二是搭建自定义服务进行回复

实现

注册技能

  • 天猫精灵接入还是比较简单的,注册完成开发者后,就直接在平台添加自定义技能就可以了。

1. 添加自定义技能『小爱同学』

2. 在侧边栏"意图" tab 中添加意图

  • 因为我们只做一个简单的呼唤,所以就用个简单的默认意图就好了,注意默认意图并不是兜底意图,而是当只说 调用词 时触发的意图
  • 如果有多种功能,可以使用例句来教会天猫精灵怎么区分不同意图,文档链接

3. 在侧边栏"回复逻辑"中配置回调,可以看到此处需要填写 webhook url,也就是我们实际自定义服务的地址.目前还没搭建,下面我们将用 faas 搭建

  • 需要注意的是这边有个校验文件,开放平台为了验证服务的有权性,会要检验服务根目录下有没有这个文件。我们先把文件下载下来,后续使用, 文档链接

服务搭建

  • 服务搭建的方式有很多,此处我们选择采用 aliyun 的 faas 服务, 也就是函数计算进行搭建。函数计算有个好处在于不用关心真实服务器,只需要编写自定义逻辑即可。而且关键每月还有100万次的免费调用额度,约等于不要钱 ? https://fc.console.aliyun.com
  • 函数计算为三层结构 1个服务 -> n个函数-> m个触发器。每个服务可以有多个函数;每个函数为一个工程,里面有一个入口函数;然后由触发器去调用这个函数, 常用的有 http 触发器,定时触发器等
  • 可见我们需要的就是创建一个服务,然后两个函数,一个用于应答天猫精灵,一个用于天猫精灵的验权。
  1. 新建一个服务,名字随意
  2. 新建两个函数,分别叫 xiaoai 和 auth ,对应的触发器名字分别为 xiaoai_http, auth_http,用于应答和校验

应答服务

  • 应答服务很简单,就是返回 "小爱同学,我是天猫精灵"
  • 因此我们只需要收到请求直接返回就好,代码如下, 复制到代码执行的在线编辑器中,点击保存即可
var getJsonBody = require('body/json');

exports.handler = (req, resp, context) => {
    getJsonBody(req, function (err, data) {
        if (!data || !data.utterance) {
            resp.send("post body wrong! " + data);
        }
        resp.setStatusCode(200);
        resp.setHeader('content-type', 'application/json');
        resp.send(JSON.stringify(
            {
                "returnCode": "0",
                "returnErrorSolution": "",
                "returnMessage": "",
                "returnValue": {
                    "reply": `小爱同学,我是天猫精灵`,
                    "resultType": "RESULT",
                    "executeCode": "SUCCESS",
                    "msgInfo": ""
                }
            }));
    });
}
  • 在下方的测试中,便可以输入上面的 body,测试一下结果
  • 至此,应答服务完成

校验服务

  • 校验服务就更简单了,就是模仿一个文件读取,返回文件内容即可.
  • 因此打开上面下载的校验文件,将文件内容替换到下面的 xxx 中, 粘贴到代码执行的编辑框中,点击保存即可。
exports.handler = (req, resp, context) => {
    resp.setHeader('content-type', 'text/plain');
    resp.send("xxx")
}
  • 在下方的测试验证处直接 get 便可看到返回 body 即为上面的 xxx

路径注册

  • 完成了上面两个服务后,虽然可以直接用各个函数的触发器对应的网址直接访问,但是由于验权文件必须要在根目录的 /aligenie/ 下,因此还需通过 自定义域名 来统一域名
  • 打开自定义域名,可以看到有一个默认域名,我们就直接编辑这个域名, 添加两个路径,一个为 /aligenie/aaa.txt, 将 aaa 替换为上面下载的验权文件的文件名, 一个为 /xiaoai/*

大功告成

  • 将天猫精灵 webhook 地址改成我们上面的自定义域名即可
  • 在测试验证便可进行测试了,打开真机测试则可在 taobao 账号绑定的天猫精灵上进行测试

Tips

  • 本文仅演示了简单的 faas 服务,因此采用了直接页面编辑的方式,对于复杂的业务逻辑,比如要安装依赖包,debug 的测试的,建议是用 aliyun 的 funcraft 提供了一种在本地可以测试服务和快速发布的方法。 不过需要注意的是其 template.yml 生成的配置一般不含日志部分,日志部分手工配置比较难写,建议通过导出功能,直接导出在界面上配置好的参数
  • 对于线上运行情况可以通过 函数计算 的日志查询进行查看, 首次配置需要开通下 aliyun 的日志服务。

参考资料

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
Serverless 对象存储
十分钟上线 - 函数计算构建支付宝小程序的后端
阿里云函数计算服务(FunctionCompute,FC)是一个事件驱动的全托管计算服务。通过函数计算与云端各个服务的广泛集成,开发者只需要编写函数代码,就能够快速地开发出弹性高可用的后端系统。接下来我们使用FC,来快速实现一个图片转换服务, 并把这个图片转换服务作为支付宝小程序的后端。
2762 0
|
监控 物联网 机器人
钉钉机器人调用函数计算实现serverless web服务:传统门禁的简单改造,懒惰癌的福音
本文通过钉钉机器人调用函数计算实现的serverless web服务,打通物联网平台,和树莓派实时通讯。实现了将原有传统的磁吸门禁,改造成可以由钉钉来控制开门的简单应用。
2929 0
三分钟教你如何三天上线多端小程序
小程序云(Mini Program Cloud)是阿里云面向小程序场景提供的一站式云服务,帮助开发者实现一云多端的业务战略,提供了有服务器和无服务器两种模式。
5396 0
|
新零售 弹性计算 运维
当 SSR 遇上 Serverless,轻松实现页面瞬间开
最近随着 Rax SSR 完成渲染性能 6x React 的提升,以及工程上 Serverless 发布形式的对接,我想是时候跟大家介绍下 Rax SSR 了。
2483 0
当 SSR 遇上 Serverless,轻松实现页面瞬间开
|
弹性计算 运维 监控
十分钟上线- CodeIgniter 项目迁移到函数计算
阿里云函数计算 Function Compute(FC),旨在帮助用户采用弹性伸缩、动态分配资源的方式,来执行业务函数。让用户无需购买部署服务器,无需考虑业务负载,就能快速搭建可处理高并发的后台服务。
十分钟上线- CodeIgniter 项目迁移到函数计算
|
Serverless 文件存储 PHP
十分钟上线-CodeIgniter项目迁移到函数计算
前言 阿里云函数计算 Function Compute(FC),旨在帮助用户采用弹性伸缩、动态分配资源的方式,来执行业务函数。让用户无需购买部署服务器,无需考虑业务负载,就能快速搭建可处理高并发的后台服务。
1277 0
|
运维 监控 安全
远程研发能有多高效?手淘新版本上线只用了5天!
2020年注定是不平凡的一年,一场突如其来的新型冠状病毒肆虐全球,部分企业还在复工的路上稳阵脚、备粮草、找契机,“静候”复工的指令,而阿里的同学早已吹响了“无接触,云办公”的号角,全面开启远程研发协同办公的模式,利用移动研发平台,在短短一周时间且足不出户的情况下就实现了一个客户端新版本的研发、测试、灰度、发布、监控、运维、运营等一系列工作。
988 0
远程研发能有多高效?手淘新版本上线只用了5天!
|
关系型数据库 Serverless PHP
十分钟上线-函数计算&Laravel的那些事儿
这篇文章是[十分钟上线-函数计算玩转 WordPress](https://yq.aliyun.com/articles/640912)的姊妹篇,本文中我们将github上一个star很高的larvel入门博客教程Learn-Laravel-5项目移植到在函数计算上, 展示函数计算环境驱动laravel的能力,实现 laravel web 项目 serverless 化。
5255 0
十分钟上线-函数计算&Laravel的那些事儿
|
机器学习/深度学习 编解码 并行计算
仅做两项修改,苹果就让StyleGANv2获得了3D生成能力
仅做两项修改,苹果就让StyleGANv2获得了3D生成能力
111 0
众推项目的文档分享流程
文档分享流程 今天在群里与大家讨论,想一个比较合理的分享流程。 我想看到流程应该是挺清楚了,就不再多加文字方面的解释了! 有想参与的可以一起进来讨论 群号 194338168 想深度参与的加,不想参与的就别往里进了,现在需要的主要是开发和文档两类人。群会定期往出清人! (项目会开源出来)
914 0

热门文章

最新文章