这个东西有啥用,好玩?
确实, 好玩归好玩,其实有很多使用场景。
可以自己选择一些业务节点触发这个机器人助手的消息推送;
简单举例:
1. 有人给你的系统留下反馈意见了,推送到运营群去;
2.项目部署成功了,推送到运维群去;
3.有人新增业务资料了,推送到客服群去;
消息类型有四种:
文本消息
图片消息
MarkDown格式文本消息
小卡片消息(小卡片哦~)
效果:
1.企业微信群聊,外部群聊不允许弄机器人。
2.整合机器人的前提是,到相关群聊建机器人。
可以整合多个机器人,每个机器的身份标识是 创建的时候 企微分发的一个key。
触发哪个机器人去推消息,就使用哪个key。
①对着群聊右键,点击进入管理聊天消息
4.创建成功(这个key就是每个机器人的唯一标识,推送消息可以设计成传key推送)
com.dtflys.forest
forest-spring-boot-starter
1.5.14
## 轻量级HTTP客户端框架forest
forest:
# 配置底层API为 okhttp3
backend: okhttp3
# 连接池最大连接数,默认值为500
max-connections: 1000
# 每个路由的最大连接数,默认值为500
max-route-connections: 500
# 请求超时时间,单位为毫秒, 默认值为3000
timeout: 3000
# 连接超时时间,单位为毫秒, 默认值为2000
connect-timeout: 3000
# 请求失败后重试次数,默认为0次不重试
retry-count: 1
# 单向验证的HTTPS的默认SSL协议,默认为SSLv3
ssl-protocol: SSLv3
# 打开或关闭日志,默认为true
logEnabled: true
# 打开/关闭Forest请求日志(默认为 true)
log-request: true
# 打开/关闭Forest响应状态日志(默认为 true)
log-response-status: true
# 打开/关闭Forest响应内容日志(默认为 false)
log-response-content: true
wechat:
notice:
key: 3f66977b-****-4af5-****-59*0c4****3d
server:
port: 8571
用于对接企微机器人推消息接口,因为我们整合了forest ,简单用注解就行(其实自己用http工具也行)
import com.dtflys.forest.annotation.JSONBody;
import com.dtflys.forest.annotation.Post;
import com.dtflys.forest.annotation.Var;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* @Author: JCccc
* @Date: 2022-5-27 14:44
* @Description: 企业微信机器人通知client
*/
@Component
public interface WechatNoticeClient {
@Post(
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={key}",
headers = {
"Accept-Charset: utf-8",
"Content-Type: application/json"
},
dataType = "json")
void sendWechatMsg(@Var("key") String key, @JSONBody Map body);
}
用于封装不同消息类型消息的推送方法,里面调用的WechatNoticeClient.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import sun.misc.BASE64Encoder;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author: JCccc
* @Date: 2022-5-27 14:48
* @Description:
*/
@Component
public class MyNoticeUtil {
@Autowired
private WechatNoticeClient wechatNoticeClient;
@Value("${wechat.notice.key}")
private String NOTICE_KEY;
/**
* 发送文本消息
*/
public void sendTextMsg() {
Map sendMap = new HashMap<>();
//设置消息类型 txt文本
sendMap.put("msgtype", "text");
Map contentMap = new HashMap<>();
contentMap.put("content", "你好,我是JCccc的机器人");
sendMap.put("text", contentMap);
wechatNoticeClient.sendWechatMsg(NOTICE_KEY, sendMap);
}
/**
* 发送markdown文本消息
*/
public void sendMarkDownTextMsg() {
Map sendMap = new HashMap<>();
//设置消息类型 markdown文本
sendMap.put("msgtype", "markdown");
Map contentMap = new HashMap<>();
contentMap.put("content", "JCccc,您的账户余额已到账15000元,开心起来吧。\\\n" +
" >付款方:白日做梦");
sendMap.put("markdown", contentMap);
wechatNoticeClient.sendWechatMsg(NOTICE_KEY, sendMap);
}
/**
* 发送图片消息
*/
public void sendImageMsg() {
String url = "D:\\Program Files\\JcProjects\\dotest\\src\\main\\resources\\static\\test.png";
Map sendMap = new HashMap<>();
sendMap.put("msgtype", "image");
Map contentMap = new HashMap<>();
contentMap.put("md5", getMd5(url));
contentMap.put("base64", getBase64(url).replaceAll("\r|\n", ""));
sendMap.put("image", contentMap);
wechatNoticeClient.sendWechatMsg(NOTICE_KEY, sendMap);
}
/**
* 发送图文消息
*/
public void sendImageAndTxtMsg() {
Map sendMap = new HashMap<>();
sendMap.put("msgtype", "news");
Map contentMap = new HashMap<>();
List
import com.jc.dotest.wechat.MyNoticeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: JCccc
* @Date: 2022-5-27 14:52
* @Description:
*/
@RestController
public class TestController {
@Autowired
MyNoticeUtil myNoticeUtil;
@GetMapping("/doTest")
public String doTest(@RequestParam("testType") String testType){
if (testType.equals("1")){
myNoticeUtil.sendTextMsg();
}
if (testType.equals("2")){
myNoticeUtil.sendMarkDownTextMsg();
}
if (testType.equals("3")){
myNoticeUtil.sendImageMsg();
}
if (testType.equals("4")){
myNoticeUtil.sendImageAndTxtMsg();
}
return "success";
}
}
测试效果:
效果:
其他的效果:
好了该篇就到这吧。