JAVA微信公众号开发第3篇客服图文消息


客服消息

当用户和公众号产生特定动作的交互时(具体动作列表请见下方说明),微信将会把消息数据推送给开发者,开发者可以在一段时间内(目前修改为48小时)调用客服接口,通过POST一个JSON数据包来发送消息给普通用户。此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务。

目前允许的动作列表如下(公众平台会根据运营情况更新该列表,不同动作触发后,允许的客服接口下发消息条数不同,下发条数达到上限后,会遇到错误返回码,具体请见返回码说明页):

  • 用户发送信息
  • 点击自定义菜单(仅有点击推事件、扫码推事件、扫码推事件且弹出“消息接收中”提示框这3种菜单类型是会触发客服接口的)
  • 关注公众号
  • 扫描二维码
  • 支付成功
  • 用户维权
    为了帮助公众号使用不同的客服身份服务不同的用户群体,客服接口进行了升级,开发者可以管理客服账号,并设置客服账号的头像和昵称。该能力针对所有拥有客服接口权限的公众号开放。

另外,请开发者注意,本接口中所有使用到media_id的地方,现在都可以使用素材管理中的永久素材media_id了。

开发步骤

说明

本文笔者主要介绍客服图文消息发送,其它消息类型笔者可以参阅微信公众平台开发文档

微信客服图文数据模型

  • SenderContent.java
package com.bigbigbu.wx.tools.bean;

import java.util.List;

/**
* <p>Title: SenderContent</p>
* <p>Description: 消息内容</p>
* <p>Company: 卜凡起的博客</p>
* @author  FANQIBU修改
* @date       2018年1月4日
*/
public class SenderContent {
    /** 
    * @Fields mpnews : TODO 通过media_id发送图文消息
    */ 
    private Media mpnews;
    /** 
    * @Fields news : TODO 修改 增加 通过Article发送图文消息
    */ 
    private News news;

    public Media getMpnews() {
        return mpnews;
    }
    public void setMpnews(Media mpnews) {
        this.mpnews = mpnews;
    }

    public News getNews() {
        return news;
    }
    public void setNews(News news) {
        this.news = news;
    }

    /**
     * 媒体包括图文语音视频图片
     * @author antgan
     *
     */
    public static class Media{
        private String media_id;
        public Media() {
            // TODO Auto-generated constructor stub
        }
        public Media(String media_id) {
            this.media_id = media_id;
        }
        public String getMedia_id() {
            return media_id;
        }

        public void setMedia_id(String media_id) {
            this.media_id = media_id;
        }


    }
    public static class News{
        private List<Article> articles;
        public News() {
            // TODO Auto-generated constructor stub
        }
        public News(List<Article> articles) {
            this.articles = articles;
        }
        public List<Article> getArticles() {
            return articles;
        }
        public void setArticles(List<Article> articles) {
            this.articles = articles;
        }
    }
    public static class Article{
        private String description;
        private String title;
        private String url;
        private String picurl;  
        public Article() {
            // TODO Auto-generated constructor stub
        }
        public String getDescription() {
            return description;
        }
        public void setDescription(String description) {
            this.description = description;
        }
        public String getTitle() {
            return title;
        }
        public void setTitle(String title) {
            this.title = title;
        }
        public String getUrl() {
            return url;
        }
        public void setUrl(String url) {
            this.url = url;
        }
        public String getPicurl() {
            return picurl;
        }
        public void setPicurl(String picurl) {
            this.picurl = picurl;
        }
    }
}
  • WxOpenidKfSender.java
package com.bigbigbu.wx.tools.bean;
import java.io.IOException;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

/**
* <p>Title: WxOpenidKfSender</p>
* <p>Description: 客服消息模型</p>
* <p>Company: 卜凡起的博客</p>
* @author    FANQIBU
* @date       2018年1月4日
*/
public class WxOpenidKfSender extends SenderContent {
    private String touser;
    private String msgtype;

    public String getTouser() {
        return touser;
    }
    public void setTouser(String touser) {
        this.touser = touser;
    }
    public String getMsgtype() {
        return msgtype;
    }
    public void setMsgtype(String msgtype) {
        this.msgtype = msgtype;
    }

    public String toJson() throws JsonGenerationException, JsonMappingException, IOException{
        ObjectMapper mapper = new ObjectMapper();
        return mapper.writeValueAsString(this);
    }
}

接口地址

public static final String URL_GET_OPENID_KF_SEND =”https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN”;

接口调用

WxOpenidKfSender sender=new WxOpenidKfSender();
        sender.setMsgtype("news");
        Article article=new Article();
        article.setDescription("哈哈!哈哈!这是二期犯二青年的头像!");
        article.setTitle("二期犯二青年的头像");
        article.setUrl("http://www.baidu.com");
        article.setPicurl("http://avatar.csdn.net/1/6/6/1_bufanqi_info.jpg");
        List<Article> articles=new ArrayList<>();
        articles.add(article);
        News news=new News(articles);
        sender.setNews(news);
        sender.setTouser("ozkl61qYK3ZLaqOTCKBb5depMoZ8");
wxService.post(URL_GET_OPENID_KF_SEND, kfsender.toJson())

效果展示

这里写图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值