公众号推送消息功能实现逻辑

以下是大概调用微信接口实现推送消息功能的逻辑思路,未必准确,甚至有的可能是错误的

如有错误,欢迎指出

尽量不引入微信接口,只说看文档自己总结的调用逻辑。

公众号给用户推送消息,一般是图文消息,当然,也有文本,视频,图片,音频等等。

方式大约有两种:

  一种是公众号主动推送,即群发

  另一种是用户给公众号发消息,然后公众号根据关键字给出相应的回复

 

先说第一种,这种有一个数量限制,就是订阅号每天一次(大概是这个数字。。。。)

至于服务号。。。每月四条,也就是每周一条。

当然,这种的好处的是,能够群发。服务号甚至可以指定特定一批用户openId来推送。

而且,如果推送的时候,设定is_to_all参数(好像是这么个参数)为true,那么还会被保留在用户的历史纪录里。

具体使用,参见微信公众平台文档【https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1481187827_i0l21

群发接口的参数中,实际调用推送接口的时候,是把要要推送的内容转换成素材,然后告诉微信要推送的素材的media_id。

还有,不管是客服接口(公众号根据关键字回复)还是主动推送,音频,视频,图片等资源文件都要先转化成media_id

然后才能推送。这里有一点,新建图文素材的主要内容在content属性中,而且,content是支持html标签的,不过,a标签比较特别,

只有开通支付功能的公众号能够使用a标签,其他公众号不能使用a标签。

 

然后是第二种,使用客服消息推送。这里有个情况,当用户在公众号中出现以下动作的时候

 

公众号(48小时内)可以产生不限数量的推送消息。

也就是说,当用户对公众号出现以上某一操作的时候,我们的服务器可以在48小时以内,对该用户推送任意条消息。

这里要说明的是,用户的以上操作,都会给我们在开发者配置里配置的URL上发送xml格式的消息。在这个时候,

微信允许在48小时内,调起客服推送接口,给该用户推送消息。

跟群发消息不同的一点是,图文消息不再需要上传为素材,可以把相关数据传到指定参数中,然后推送给用户。

以上。

暂定未完待续。。。

转载于:https://www.cnblogs.com/nssdeblog/p/8081025.html

### 配置与实现 为了在Spring Boot项目中实现微信公众号推送消息功能,需完成几个关键步骤。首先是项目的依赖设置,在`pom.xml`文件内加入特定的API依赖来支持微信接口调用[^2]。 ```xml <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-mp</artifactId> <version>4.3.0</version> </dependency> ``` 接着是创建`wxMpService` Bean对象以便于后续操作中能够方便地访问微信公众平台的服务能力。 #### 创建 wxMpService Bean 对象 此Bean负责处理与微信服务器之间的通信交互,具体配置如下: ```java @Configuration public class WeChatConfig { @Value("${wechat.mp.app-id}") private String appId; @Value("${wechat.mp.app-secret}") private String appSecret; /** * 初始化WxMpDefaultConfigImpl实例用于存储应用基本信息 */ public WxMpInMemoryConfigStorage configStorage() { final var storage = new WxMpInMemoryConfigStorage(); storage.setAppId(appId); storage.setSecret(appSecret); return storage; } /** * 构造WxMpServiceImpl服务类并注入配置信息 */ @Bean public WxMpService wxMpService(WxMpInMemoryConfigStorage configStorage) { final var service = new WxMpServiceImpl(); service.setWxMpConfigStorage(configStorage); return service; } } ``` 上述代码片段展示了如何利用Spring框架特性简化了对WeChat API的操作流程,并提供了良好的扩展性和维护性。 #### 发送消息的方法示例 下面给出一段简单的发送文本消息至指定用户的例子: ```java @Service public class MessagePusher { private final WxMpService wxMpService; public MessagePusher(WxMpService wxMpService){ this.wxMpService=wxMpService; } /** * 向单个用户发送文本消息 * * @param openId 用户唯一标识符 * @param content 文本内容 */ public void sendTextMessage(String openId, String content) throws WxErrorException { final var message = new WxMpCustomMessage() .toUser(openId) .content(content) .msgType(WxConsts.CUSTOM_MSG_TEXT); wxMpService.getCustomMessageService().send(message); } } ``` 这段代码实现了基本的消息构建逻辑以及通过`wxMpService`执行实际的消息发送动作[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值