急速上线 Serverless 钉钉机器人“防疫精灵”

新型冠状病毒疫情肆虐的春节,大家都过得人心惶惶,作为被关在家的程序狗,总觉得要做点什么。于是阿里云 IoT 事业部的几个同学就开始了防疫精灵的开发之路。
从点子到防疫宝,只花了一个下午时间;从防疫宝到钉钉全域机器人防疫精灵,只花了 1.5 天时间完成开发,3 天灰度、全量,发布 1 天半就突破 1 万个群添加使用,即插即用,疫情实况、常见问题、健康打卡全都有:

如此紧急,toC海量客户,如何快速开发又不失稳定、安全呢?
快速搭建
天下武功唯快不破,怎么快?靠工具!
IoT Studio是阿里云 IoT 向物联网开发者提供的应用开发工具,包括了可视化、逻辑编排、数据分析三大能力。该工具开发的应用实例运行于阿里云函数计算(FunctionCompute 简称 FC)之上,应用 serverless 化,以达到按量伸缩和免运维的效果。
机器人添加
原理:钉钉全域机器人添加/删除/更新时,会自动推送HTTP事件
搭建:
1.使用HTTP流来提供钉钉事件回调
2.使用路径选择节点,根据事件类型分流到对应的处理逻辑
3.使用 Node 脚本进行数据预处理,包括数据格式、敏感字段脱敏或加签等
4.存入数据库

聊天消息通路
原理:基本同上,at机器人的消息将发送到回调接口,转发 NLP 接口
搭建:
1.使用 HTTP 流来提供钉钉消息回调
2.使用 Node 脚本节点(此处可用 API 请求节点,但因为稳定性要求改用 Node 脚本来,详见下文优化部分)

批量群推送
原理:每天 9 时、17 时定时推送最新疫情实况和打卡、咨询快捷链接
搭建:
// 触发
1.使用定时节点,设置每日触发
2.使用项目内API节点,调用同项目内的批量发送服务

// 发送
3.使用 HTTP 节点搭建发送入口
4.使用 Node.js 脚本节点拼装消息发送的内容
5.使用 Node.js 脚本节点查询数据库的webhook信息并解签(此处后续会优化数据库节点,无需写脚本)
6.使用 Node.js 脚本节点,批量发送消息给钉钉的 OpenAPI 接口(此处是关键点,容量评估、并发、流控、异常处理都在此处)

疫情可视化
原理:使用可视化工具,利用库中的疫情数据,展示实况、趋势图,借助函数计算部署 puppeteer 服务定时截图
搭建:
- 使用文字组件,配置数据源(业务逻辑编排接口,类似上文搭建方式,不赘述),使用过滤器选定展示字段
- 使用折线图组件,配置数据源、数据系列。

- 使用函数计算部署 puppeteer 截图任务,详见:Serverless 实战 —— 快速开发一个分布式 Puppeteer 网页截图服务

架构梳理

小结
- 好用的工具是绝对的生产力。 IoT Studio 拉近了想法和实现的距离,通过快速模板化,1 天搭建原型,1 天完成了 V1 版本。
- Serverless 为后端的高并发、高可用保驾护航。由于疫情的发展,“防疫精灵”的访问量很快就大幅度提升,而且是非常典型的访问量峰谷类业务。Serverless 的按量付费和急速弹性(百毫秒级别)省去了业务量增长而引入的架构升级的工作。此外函数计算的快速部署和低运维特性,也让开发迭代得更快,对系统的监控度感知更容易。
急速上线 Serverless 钉钉机器人“防疫精灵”的更多相关文章
- 0基础搭建基于OpenAI的ChatGPT钉钉聊天机器人
前言:以下文章来源于我去年写的个人公众号.最近chatgpt又开始流行,顺便把原文内容发到博客园上遛一遛. 注意事项和指引: 注册openai账号,需要有梯子进行访问,最好是欧美国家的IP,亚洲国家容 ...
- jenkins 集成钉钉机器人
最早做Jenkins发布完成以后通过邮件发送信息通知相关的联系人,发现邮件会受限于大家接收的设置,导致不能及时的看到相关的发布内容,公司使用钉钉做为公司内部的通讯工具,所以想通过Jenkins发布完成 ...
- 钉钉 机器人接入 自定义webhook
钉钉出了个webhook机器人接入,自定义的机器人支持随时post消息到群里: 昨天就尝试着用C#写了个: 一开始用python写,但是莫名的提示 {"errmsg":" ...
- python 小脚本升级-- 钉钉群聊天机器人
一则小脚本(工作中用) 在这篇文章中写的监控的脚本,发送监控的时候 是利用的邮箱,其实在实际,邮箱查收有着不方便性,于是乎升级, 我们工作中,经常用钉钉,那么如果要是能用到钉钉多好,这样我们的监控成功 ...
- 钉钉自定义机器人配合SVN钩子事件进行消息的推送实践
目前很多公司还是使用SVN(TortoiseSVN)进行版本控制,使用简单,适合管理一般项目.协同办公软件目前钉钉比较成熟,阿里也一直在宣传推广,这两年公司也在使用,主要用于信息的沟通,其它的绩效.考 ...
- 钉钉机器人zabbix报警
首先在钉钉群聊里添加一个自定义的机器人 并复制webhook的内容 https://oapi.dingtalk.com/robot/send?access_token=37e23308d1b84eb4 ...
- Asp.Net Core对接钉钉群机器人
钉钉作为企业办公越来越常用的软件,对于企业内部自研系统提供接口支持,以此来打通多平台下的数据,本次先使用最简单的钉钉群机器人完成多种形式的消息推送,参考钉钉开发文档中自定义机器人环节,此次尝试所花的时 ...
- Sentry快速开始并集成钉钉群机器人
Sentry(直译为:哨兵)是一个开源错误跟踪服务,帮助开发人员实时监控和修复崩溃 Sentry本质上是一种帮助您实时监控和修复崩溃的服务 1. 安装客户端SDK 这里我们安装Java平台的SDK, ...
- 重新拾取:TFS2017钉钉机器人源代码签入通知
http://www.cnblogs.com/79039535/p/9316791.html 现在很多公司办公都使用钉钉打卡签到,于是鉴于公司也使用钉钉就打算用钉钉来做一个源代码签入通知. 首先先去打 ...
- 钉钉自定义机器人 发送文本 换行 \n无效果
今天用php做钉钉自定义机器人 发送文本 换行 \n无效果,原来是我一直用单引号作为定义字符串,换成双引号就ok了.
随机推荐
- Ambiq Micro-AMA3B2KK-KBR芯片可穿戴产品解决方案开发之RTC时钟
一 RTC RTC的英文全称是Real-Time Clock,翻译过来是实时时钟芯片.绝大多数mcu芯片都集成了这个功能.在可穿戴产品中,时间往往是非常重要的因素,怎么让时间保持一直在运行,那就是 ...
- exec函数族使用说明
exec函数不创建新进程,只用磁盘上的程序替换当前进程的正文段.数据段.堆段和栈段.然后从main函数开始运行. exec函数族使用说明 #include <unistd.h> int e ...
- Kotlin 协程基础使用学习
原文: Kotlin 协程基础使用学习-Stars-One的杂货小窝 本篇阅读可能需要以下知识,否则可能阅读会有些困难 客户端开发基础(Android开发或JavaFx开发) Java多线程基础 ko ...
- 记录--对于$off,Exclude 和 Extract的一点理解
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.typescript 高阶类型 Exclude 和 Extract Exclude<T, U> TypeScript 2. ...
- 【已失效】Xcode GUI 添加 SPM 依赖的时候访问不了 github,无视 git config proxy 配置解决方案
此 openradar 中提出者指出了原因:Xcode 调用 libgit2 时传入了 GIT_PROXY_NONE,无视了 git config 中的 proxy 配置.作者说用了自己打的 libg ...
- SpringBoot 常用注解总结
核心注解 1. @SpringBootApplication 主要用于开启自动配置,它也是一个组合注解,主要组合了 @SpringBootConfiguration.@EnableAutoConfig ...
- ZYNQ7000系列学习之TF卡读写实验
TF卡读写实验 1.实验原理 开发板上自动带有TF卡外接接口,这里只需调用封装好的IP核即可实现该功能.当然,你还需要一个TF卡(感觉SD卡也可以,反正这两种卡差不多).实验就是调用一个IP核,不涉及 ...
- C++中std::function常见用法
C++标准库中的std::function是一个通用的函数封装,可以用来存储.复制.调用任何可调用对象(函数.函数指针.成员函数指针.lambda表达式等).以下是std::function的一些常见 ...
- debian12安装arch到chroot环境
纯属瞎玩,可能有风险 1.安装工具 sudo apt install pacman-package-manager arch-install-scripts archlinux-keyring 2.创 ...
- 强!10.6K star,一款开源HTTP测试工具,适合新手,简单、容易上手!
大家好,我是狂师! 今天给大家推荐一款开源的HTTP测试工具:Hurl,相比curl.wget功能更强大,且更容易上手.很适用新手使用. 1.项目介绍 Hurl是一个使用Rust语言开发的命令行工具, ...