-
Notifications
You must be signed in to change notification settings - Fork 136
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
不花钱就可以给企业微信做个提醒机器人 #32
Comments
hahahahahah free ride at after 9. |
我用ifttt 配置了一下,更简单了些,自己不用写代码,哈哈。 |
我在公司搞得是QQ机器人。CoolQ/DingTalk 实现CI/CD消息推送到群 |
厉害,写的很好可以用,好像不支持外部群管理【创建群,踢人、自动加好友什么的】,一般用PC企微模拟的 rotdogmes.cn ,可以看看 |
您好: 我已收到邮件,将会尽快回复您。
|
这是来自QQ邮箱的自动回复邮件。
您好,您的邮件我已收到,谢谢!
|
1 similar comment
这是来自QQ邮箱的自动回复邮件。
您好,您的邮件我已收到,谢谢!
|
您好: 我已收到邮件,将会尽快回复您。
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
到了新公司之后,发现居然也是用企业微信。但可惜的是,外部的企业微信居然没有机器人。这对以前在鹅厂里习惯用企业微信做提醒的我觉得很不方便。终于,7月一开始企业微信终于上线机器人功能。
右击群聊天卡片,可以添加群机器人。
悬浮在机器人的头像上,会显示出 Webhook 地址。点击这个地址,会跳到机器人的开发文档。
提醒机器人的开发其实很简单,其实就是向这个webhook地址,按文档提供的格式发送请求,就可以实现消息推送了。最简单的示例,可以用
Node.js
的axios
类库:以上是最简单的例子。除了普通文本内容,还可以发送
markdown
,图文等内容,大家可以自行去看文档。但问题来了:一般来说提醒,都是需要定时的,比如说每早提醒大家写计划,每周五傍晚提醒大家写周报,怎么可以让机器人在这些时间点出现提醒大家呢?你可能会想到买一台服务器,然后在上面部署
cronjob
服务,定时去调度服务。没错,这固然是最通俗的做法。但是买一台服务器要花钱呀,便宜的也得几十块钱一台虚拟机,而且只在上面跑一个这么简单的服务显然是不值的。有没有性价比高的做法呢?有,用云函数!我个人的理解,云函数跟传统的服务主要的区别有几点,一个是它是一种事件型的服务,由不同的事件触发(HTTP、数据更改、对象存储的变更等),第二个它是非长驻的,运行一定时间后会冷却或者销毁,第三个由于以上两种特性,对于一些负载不是很高的服务,用云函数比较省钱。而对于这种提醒机器人,正正是一种负载不是很高的服务,非常合适。对小型团队的这种提醒服务,在最近各大厂商都在推广的时期,真的可以做到不要钱。
这里我对腾讯云的云函数最为熟悉,因此就用它来做实践。
首先为了方便,我们可以用腾讯云提供的 SCF CLI 来初始化我们的云函数和配置文件。我用的电脑是 Macbook,可以直接安装以下的命令进行安装:
如果不是Macbook可以先自行安装
python
和pip
然后就是进行配置:
appid
,secret-id
和secret-key
可以在访问密钥页面里拿到。至于region
,则是你想部署云函数的区域,比方说在云函数的控制台首页,就能看到顶部的区域。选广州就是ap-guangzhou
,选香港的就是ap-hongkong
。基本上是ap-
加上国内市场的拼音或国外城市的英文。然后咱们初始化好项目(用node.js 8.9版本写云函数):
然后就能得到该云函数:
这次要用到 axios,那我们就安装这个依赖:
打开
index.js
是如下一段代码,async
表示该函数可以用Node.js
的新特性async/await
。我进行一些删减后,成这样。将函数名字改为
main
,而且由于用async/await
就可以不用callback
处理异步了。但改了名字也要改template.yaml
,将main_handler
改为main
好了。是时候来写提醒逻辑了。逻辑并不难,但主要注意的一点是时间。经过试验,云函数这里的时间统一使用了标准的国际时间,也就是北京时间要比它晚8小时,详细逻辑可以看以下代码的注释:
逻辑都写好了,但是,我们需要让它定时执行,比如每30分钟执行一次。这个时候,我们就需要添加“定时触发器” 了。定时触发我们可以在
template.yaml
里面添加,可以把注释去掉,然后修改得到:CronExpression
具体可以参考这个文档:https://cloud.tencent.com/document/product/583/9708请使用推荐的写法:
这里有些参考的示例,直接套用即可:
我这里写的:
0 */30 * * * MON-FRI *
,表示每周一到周五,每30分钟会触发一次云函数的调用。当然,我们还想开启一下 HTTP 触发器,来用地址直接访问该云函数进行一些逻辑的调试,看看是否真的能成功发消息。
我们可以再到
template.yaml
里添加这样的HTTP
触发器:好了,万事俱备,我们只需要再用
SCF CLI
发布即可。发布完成后,我们可以到腾讯云的控制台看下,已经存在了:
点进去看看触发方式,发现分别有一个定时触发器,一个API网关触发器(HTTP触发)
如此,便大功告成了!看看效果:
The text was updated successfully, but these errors were encountered: