微信公众号推送多图文消息,直接跳转至外部链接(wxJava)


前言

需求:用户关注公众号后,如何在微信推送的多图文消息中,直接打开第三方链接,而不是站内文章?

事先说明该需求作者已经解决,但只是关注后推送。如果要求主动发送图文消息,该文章无法实现

如果你是运营人员,请联系开发查看该文章,因为单纯通过公众号后台无法实现。

如果你的需求是单图文消息,使用客服消息,或者公众号后台配置都可以实现,该篇文章对你无效

假设你的后台程序并没有 接管公众号消息后台配置那么该篇文章对你无效


一、解决思路

1.公众号后台设置

登录微信公众号后台,打开草稿箱菜单,点击新的创作。设置其图文消息,但是在此处并没有设置外链的位置,只有设置跳转至站内文章,找了一圈也没有找到设置的地方,固然当前思路无效。无法达到效果。此方案不可取 PASS
在这里插入图片描述

2.客服消息

当用户关注后,调用客服消息给用户发送图文消息。客服消息推送相关 微信文档

但是看后续公众号文章说明,客服消息已经不能推送多条图文消息了,
如果你硬要推送多条消息,微信只能给你返回 45008 article size out of limit 相关code 错误提示了。

具体微信描述如下:
从2018-10-12日20时起,微信接口规则调整,除公众号规定的素材群发外,不再支持多图文格式(单图文依然保留,但图文数超过1的多图文格式不再支持)

3.google & baidu 寻找答案

建议大家千千万万不要盲目的去搜索,搜到的东西,全部都是第三方平台的水文,全是在介绍推广自己平台的,实际的作用一点也没有。

举两个栗子:
在这里插入图片描述
还有些文章排版布局,看的头皮发麻,可能是文章太久远了对我一点用处没有起到,类似于: https://blog.csdn.net/qq_29162769/article/details/73432440

但是通过他们发的这些回答,更确定了 一定是有接口实现的,只不过还没有找到,如何实现而已。

4.关注后自动推送(正解)

当用户关注公众号,可以根据事件推送相关的内容,推送的消息内容类型比较多。
详细参考 消息模块微信文档

如果你是 Java 后台开发的话,建议使用 25k Star wxJava 相关代码实现该需求。当然你也可以 微信公众号开发者文档 实现该功能。

可能会有人问,因为一个功能引入一个 pom 包并不恰当,其实当你了解过该项目后,你会了解到 开发微信相关功能会如此简单。

在这里插入图片描述
项目文档:项目文档
项目示例地址: 示例项目地址

假设你已经下载示例项目 并且已经在 yml中 配置好了公众号配置。这个时候可以启动项目了。

启动项目后,你可以去接管公众号服务器配置。如下图:配置好一定要点击 红框中启动配置

配置的服务器地址(URL)应该是 https://本机地址/app/wx/portal/{appid},该地址外网一定是可以访问的,具体映射方式此文章不在介绍。

在这里插入图片描述
配置的服务器地后。打开微信打开你配置的公众号,取消后再次关注,你可以在idea 日志中接收到 关注/取消关注的通知。

接下来打开 builder 目录,新建文件名字为 NewsBuilder.java ,具体内容如下:

import 你的文件地址;

import com.github.binarywang.demo.wx.mp.builder;

import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutNewsMessage;

/**
 * @author Binary Wang(https://github.com/binarywang)
 */
public class NewsBuilder extends AbstractBuilder {

    @Override
    public WxMpXmlOutMessage build(String content, WxMpXmlMessage wxMessage,
                                   WxMpService service) {
        WxMpXmlOutNewsMessage.Item item1 = new WxMpXmlOutNewsMessage.Item();
        item1.setUrl("填写真实跳转地址");
        item1.setPicUrl("填写真实图片地址");
        item1.setDescription("我是介绍,虽然我没有用到");
        item1.setTitle("我是标题");

        WxMpXmlOutNewsMessage.Item item2 = new WxMpXmlOutNewsMessage.Item();
        item2.setUrl("填写真实跳转地址");
        item2.setPicUrl("填写真实图片地址");
        item2.setDescription("我是介绍,虽然我没有用到");
        item2.setTitle("我是标题");

        WxMpXmlOutNewsMessage.Item item3 = new WxMpXmlOutNewsMessage.Item();
        item3.setUrl("填写真实跳转地址");
        item3.setPicUrl("填写真实图片地址");
        item3.setDescription("我是介绍,虽然我没有用到");
        item3.setTitle("我是标题");

        return WxMpXmlOutMessage.NEWS().addArticle(item1, item2, item3).fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser()).build();
    }
}

打开:handler 目录,找到 SubscribeHandler.java 相关类,配置后你要推送的内容即可。
如下图代码所示

@Component
public class SubscribeHandler extends AbstractHandler {

    @Override
    public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
                                    Map<String, Object> context, WxMpService wxMpService,
                                    WxSessionManager sessionManager) throws WxErrorException {

        return new NewsBuilder().build("", wxMessage, wxMpService);
    }
}

重新启动项目,再次点击关注后,尝试下是否可以推送图文信息。

总结

弊端:无法在图文中直接打开小程序,找寻了多种方式并没有找到合适的方式,如果找到会更新此文章。

至此,跳转三方链接的问题,已经解决完毕了。当然实现方法不止当前一种,如果你有好的建议,或者当前文章有什么问题,可以在评论区告知,并提出你的意见。

联系方式:微信 (Base64):eWN3MTQ5OTg=

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值