今天突然发现企业微信群聊的时候有个机器人功能,点了点,玩起了企业微信群聊机器人。用企业微信群聊机器人可以实现很多有意思的功能,如果能给自己单独做个机器人就好了,现在必须拉个群才能玩,有点小尴尬!今天带大家玩一下企业微信群聊机器人,看起之后,你应该能够自大实现一个群聊机器人,并能开发出来定时提醒饭点、订餐时间、任务时间 下班时间、任务代办事项等等通知功能,来来,走一波~~
机器人入口
点击新创建机器人
创建完机器人,得到授权接口址址
这是一个非常轻量级的机器人,上手速度非常快,看看官方的入门文档配置,真的是秒入门,秒使用!接口地址自带授权token,完全不需要来回签名验证的,直接关心做自己最喜欢的机器人功能就好。
来瞅瞅官方文档与个人自媒体的差异:
官方文档是这么写,不喜欢看官方文档的可以直接跳过,到下面的实战环节!
如何使用群机器人
在终端某个群组添加机器人之后,可以获取到webhook地址,然后开发者用户按以下说明构造post data向这个地址发起HTTP POST 请求,即可实现给该群组发送消息。下面举个简单的例子.
假设webhook是:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=633a31f6-7f9c-4bc4-97a0-0ec1eefa589
以下是用curl工具往群组推送文本消息的示例(注意要将url替换成你的机器人webhook地址,content必须是utf8编码):
curl 'http://in.qyapi.weixin.qq.com/cgi-bin/webhook/send?key=633a31f6-7f9c-4bc4-97a0-0ec1eefa5898' \
-H 'Content-Type: application/json' \
-d '
{
"msgtype": "text",
"text": {
"content": "hello world"
}
}'
当前自定义机器人支持文本(text)、markdown(markdown)两种消息类型。
消息类型及数据格式
文本类型
{
"msgtype": "text",
"text": {
"content": "广州今日天气:29度,大部分多云,降雨概率:60%",
"mentioned_list":["wangqing","@all"],
"mentioned_mobile_list":["13800001111","@all"]
}
}
参数 必须 说明
msgtype true 消息类型,此时固定为text
content true 文本内容,最长不超过2048个字节,必须是utf8编码
mentioned_list false userid的列表,提醒群中的指定成员(@某个成员),@all表示提醒所有人,如果开发者获取不到userid,可以使用mentioned_mobile_list
mentioned_mobile_list false 手机号列表,提醒手机号对应的群成员(@某个成员),@all表示提醒所有人
markdown类型
{
"msgtype": "markdown",
"markdown": {
"content": "实时新增用户反馈<font color=\"warning\">132例</font>,请相关同事注意。\n
>类型:<font color=\"comment\">用户反馈</font> \n
>普通用户反馈:<font color=\"comment\">117例</font> \n
>VIP用户反馈:<font color=\"comment\">15例</font>"
}
}
参数 必须 说明
msgtype true 消息类型,此时固定为markdown
content true markdown内容,最长不超过2048个字节,必须是utf8编码
目前支持的markdown语法是如下的子集:
标题 (支持1至6级标题,注意#与文字中间要有空格)
# 标题一
## 标题二
### 标题三
#### 标题四
##### 标题五
###### 标题六
加粗
**bold**
链接
[这是一个链接](http://work.weixin.qq.com/api/doc)
行内代码段(暂不支持跨行)
`code`
引用
> 引用文字
字体颜色(只支持3种内置颜色)
<font color="info">绿色</font>
<font color="comment">灰色</font>
<font color="warning">橙红色</font>
图片类型
{
"msgtype": "image",
"image": {
"base64": "DATA",
"md5": "MD5"
}
}
参数 必须 说明
msgtype true 消息类型,此时固定为image
base64 true 图片内容的base64编码
md5 true 图片内容(base64编码前)的md5值
注:图片(base64编码前)最大不能超过2M,支持JPG,PNG格式
图文类型
{
"msgtype": "news",
"news": {
"articles" : [
{
"title" : "中秋节礼品领取",
"description" : "今年中秋节公司有豪礼相送",
"url" : "URL",
"picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"
}
]
}
}
参数 必须 说明
msgtype true 消息类型,此时固定为news
articles 是 图文消息,一个图文消息支持1到8条图文
title 是 标题,不超过128个字节,超过会自动截断
description 否 描述,不超过512个字节,超过会自动截断
url 是 点击后跳转的链接。
picurl 否 图文消息的图片链接,支持JPG、PNG格式,较好的效果为大图 1068*455,小图150*150。
消息发送频率限制
每个机器人发送的消息不能超过20条/分钟。
实战环节
直接复制官方提供的curl命令执行的话,会报错,因为官方提供的是用来查看的,得调整一下,调整成这样子才可以跑起来:
curl "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx" -H "Content-Type: application/json" -d "{\"msgtype\": \"text\",\"text\": {\"content\": \"hello world\" }}"
还有问题是curl发送中文的时候,在群里收到的是乱码,这个很让人揪心哦~。为了实现定时提醒功能,自然想到了windows定时任务!如果使用linux的话,也有类似的机制,今天就不介绍了。有同时使用jinkens做定时构建来玩,我也跳过了。我觉得今天的重点是还是使用一些比较常见的玩法。
如果喜欢使用english发信息的话,直接改改我上面提醒的curl命令,建个bat文件,现在windows任务中心创建一个定时任务就可以了。
玩法一 只能发英文的bot
- 建立一个bot.bat,内容跟截图错不多就可以。对于要提醒吃饭吃药下班做操等等提醒来说,只要将hello world修改成对应的英文内容就可。比如说:It is time for lanch.
- 建立一个windows任务
win10进入任务管理直接输入“任务”,其他操作系统的话,可以在控制面板找找。
任务计划可以建很多,为了方便管理,建议先建一个目录叫做Robot,然后再新建任务计划到这个目录中。任务名字自己取,比如吃饭提醒什么的。
设置好触发时间
这里设置的是很天的上午11点50提醒。如果有些工作需要每周、每月提醒,则依据提示调整即可。
立即执行感受效果
到这里就完成了一个简单的bot机器人的设置,到约定时间,机器人就会执行,发送相应的消息。
玩法二 能发中文的bot
发英文的话,比较晦涩!不好Get到点。中文的bot可以使用其他脚本或开发语言完成,node.js\python都可以,不过,这里提供的方案是html+js+bat文件+winodws任务执行。
b.bat内容
start "C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe" D:\robot\robot.html
QywxRobot.html内容
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="jquery-3.4.1.min.js"></script>
</head>
<body>
<input id="robotUrl" style="width:100%" type="text" value="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx"/>
<textarea id="msg" style="width:100%;height:200px;" value="我是机器人好不"></textarea>
<button style="display:flex;margin:30px auto;" id="btnSend">发送</button>
<script>
//关注微信公众号 技术岛Jishudao 体验最新的技术潮流,获取更多实用小工具
//微信 13439975582
$(function(){
$("#btnSend").click(function(){
var botData = {
"msgtype": "text",
"text": {
"content": $("#msg").val()
}
};
$.ajax({
url: $("#robotUrl").val(),
type: 'post',
dataType: 'json',
data: JSON.stringify(botData),
success: function(res){
console.log(res)
if (res.code === 200) {
}
},
error: function(e) {
}
});
});
});
</script>
</body>
</html>
jquery-3.4.1.min.js可以到网上找一个,也可以直接到我的仓库获取:https://github.com/Lancker/QywxRobot
任务设计可以参考上面的说明。
以上就是今天的玩转企业微信群聊机器人,欢迎加入【技术岛】微信技术交流群,加微信13439975582【注明技术岛】