企业微信消息推送

昨天学习了下企业微信的API,瞬间发现世界明朗了许多,思路清晰了很多。先不说有没有抄袭,至少是给人的感觉是好的。用户体验是留住用户开发者的第一要素。

 

需求:开发的车辆管理系统需要给用户发送消息,目前的思路是对接钉钉和微信。

  • 钉钉

需要用户注册登录钉钉,然后在钉钉后台自建应用,目的作为给用户发送消息的主体。

消息整合到企业消息组。

 

  • 企业微信

需要微信登录企业微信,自建应用用于消息发送的主体。

消息单独发送

 

  • 比较

API文档 

企业微信 API,菜单清晰导航栏齐全,上手快,查询简单。

文档有规有矩,很条例,很人性化。符合常规人的思路

 

钉钉菜单乱,存在老版本文档和新版本文档,菜单三级菜单较少,查询API文档较困难。

不按正常人的思路来写文档,需要的文档乱七八糟,杂乱无章。查找麻烦

 

 

是否限流

钉钉会限流,出现 forbiddenUserId 表示发送消息接口被限流了(限流规则包括:1、给同一用户发相同内容消息一天仅允许一次;2、给同一用户发消息一天不超过100次)

此人為釘釘開發工程師,但是從最新的文檔裏面看,竟然沒有這句說明。有点扯淡

https://open-doc.dingtalk.com/microapp/serverapi2/ri1z4p

 

 

企业微信会限流,但是不会存在 ”给同一用户发相同内容消息一天仅允许一次“ 这种扯dan的限流要求,你说调度的时候,相同的发车信息推给同一个用户只能发一次?这限制有点不符合逻辑。

https://work.weixin.qq.com/api/doc#10785

 

 

 

 

 

发送消息格式文档

发送消息二者大同小异,该有的类型都有,差别不是很大。但是从文档看来,企业微信的文档更人性化,请求体字段解释比较全面,就是每个问题出现的时机很合适,上手快,相反钉钉就,不认同的自己去查阅对比。

 

接口调试工具

企业微信有接口调试工具。

 

### 使用 Spring Boot 实现企业微信消息推送 #### 准备工作 为了实现基于Spring Boot的企业微信消息推送,需先完成必要的前期准备。这包括但不限于注册并配置好企业微信应用的相关参数,如CorpID、Secret等信息[^2]。 #### 获取 Access Token Access Token 是调用企业微信接口时必需的凭证之一。可以通过向特定URL发起GET请求来获得该令牌: ```java public String getAccessToken(String corpId, String secret){ RestTemplate restTemplate = new RestTemplate(); String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="+corpId+"&corpsecret="+secret; ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class); JSONObject jsonObject = JSON.parseObject(responseEntity.getBody()); return jsonObject.getString("access_token"); } ``` 此方法利用`RestTemplate`对象执行HTTP GET操作,并解析返回JSON响应中的`access_token`字段值作为最终结果返回。 #### 组装消息体 对于不同类型的消息(例如文本卡片),需要按照企业微信API规定的数据结构构建相应的消息负载。这里给出一个简单的例子用于创建文本卡片形式的通知: ```json { "touser": "@all", "msgtype": "textcard", "agentid": YOUR_AGENT_ID, "textcard": { "title": "Title of the card message", "description": "Description content here...", "url": "http://www.example.com" } } ``` 请注意替换其中的关键变量,比如代理ID(`YOUR_AGENT_ID`)以及链接地址等内容以适应实际应用场景的需求。 #### 发送消息请求 最后一步就是通过POST方式提交已构造好的消息实体至指定的目标URL。同样可以借助于`RestTemplate`来进行网络通信处理: ```java public void sendMessage(String accessToken, String jsonMessageBody){ HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON_UTF8); HttpEntity<String> entity = new HttpEntity<>(jsonMessageBody,headers); RestTemplate restTemplate = new RestTemplate(); String postUrl="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token="+accessToken; ResponseEntity<String> responseEntity=restTemplate.postForEntity(postUrl,entity,String.class); System.out.println(responseEntity.getBody()); } ``` 上述代码片段展示了如何设置HTTP头信息、封装待发送的内容主体,并最终发出带有认证信息的POST请求给定目标服务器端点。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿姨不可以嘛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值