微信开发-发送客服消息


参考连接点击打开链接


模板消息不好审核通过,因此有时候我们需要发送客服消息。

客服消息在发送“图文消息”的时候不会夹带客服图标,而是一整块的消息,体验相对比较好。

下边描述一下发送客服消息的大概过程。

1、公众号配置

发送客服消息需要应用的服务响应在线,因此首先在公众平台进行配置(开发->基本配置),如图所示:

需要注意的是:

应用在线,代码如下所示:

        // 微信加密签名
        String st = request.getParameter("signature");
        // 随机字符串
        String ec = request.getParameter("echostr");
        // 时间戳
        String timestamp = request.getParameter("timestamp");
        // 随机数
        String nonce = request.getParameter("nonce");
        Arrays.sort({ token, timestamp, nonce };);
        String bigStr = str[0] + str[1] + str[2];
        // 加密
        String digest = new SHA1().getDigestOfString(bigStr.getBytes()).toLowerCase();
        // 确认请求来至微信
        if (digest.equals(signature)) {
        	response.getWriter().print(echostr);
        }
token是在配置的时候填写的token中的字符串,微信服务器在收到以上响应的时候将会成功配置

2、发送客服消息

a/用户需要是公众号的关注用户;

b/获取accesstoken,在之前的文章中有获取的方法,就不再赘述;

发送代码如下:

public static java.util.Map<String,Object> sendCustomerServiceMessTo(final String openId,
			final String appid,
			final String secret){
		java.util.Map<String,Object> retCode = 
				new java.util.HashMap<String,Object>(3);
		
		
		TicketToken jsApiTicketToken = getToken(appid,secret);
if(jsApiTicketToken.getAccess_token() == null|| "".equals(jsApiTicketToken.getAccess_token()))return null;final java.util.Map<String,String> bussData_First = new java.util.HashMap<String,String>(){private static final long serialVersionUID = 1L;{put("title","Happy Day");put("description","Is Really A Happy Day");put("url","详情地址");put("picurl","图片地址");}};final java.util.ArrayList<java.util.Map<String,String>> bussData_List = new java.util.ArrayList<java.util.Map<String,String>>(1);final java.util.Map<String,java.util.ArrayList<java.util.Map<String,String>>> articleMap= new java.util.HashMap<String,java.util.ArrayList<java.util.Map<String,String>>>(1);bussData_List.add(bussData_First);articleMap.put("articles", bussData_List);java.util.Map<String,Object> postData = new java.util.HashMap<String,Object>(){private static final long serialVersionUID = 1L;{put("touser",openId);put("msgtype","news");put("news",articleMap);}};String postDataJsonString = JSON.toJSONString(postData);HttpUriRequest httpUriRequest = RequestBuilder.post().setUri("https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token="+jsApiTicketToken.getAccess_token()).addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8").setEntity(new StringEntity(postDataJsonString, Charset.forName("utf-8"))).build();Ret messvo = LocalHttpClient.executeJsonResult(httpUriRequest, Ret.class);retCode.put("1", messvo);return retCode;}




public class Ret {
	
	private int errcode;
	private String errmsg;
	private long msgid;
	public int getErrcode() {
		return errcode;
	}
	public void setErrcode(int errcode) {
		this.errcode = errcode;
	}
	public String getErrmsg() {
		return errmsg;
	}
	public void setErrmsg(String errmsg) {
		this.errmsg = errmsg;
	}
	public long getMsgid() {
		return msgid;
	}
	public void setMsgid(long msgid) {
		this.msgid = msgid;
	}
	
	

}


public class TicketToken {
	
	private String access_token;
	
	private int expires_in;
	
	private int errcode;
	
	private String errmsg;

	public String getAccess_token() {
		return access_token;
	}

	public void setAccess_token(String access_token) {
		this.access_token = access_token;
	}

	public int getExpires_in() {
		return expires_in;
	}

	public void setExpires_in(int expires_in) {
		this.expires_in = expires_in;
	}

	public int getErrcode() {
		return errcode;
	}

	public void setErrcode(int errcode) {
		this.errcode = errcode;
	}

	public String getErrmsg() {
		return errmsg;
	}

	public void setErrmsg(String errmsg) {
		this.errmsg = errmsg;
	}
	
	

}

public static JsApiTicketToken getToken (String appid, String secret){
		
		HttpUriRequest httpUriRequest = RequestBuilder.get()
				.setUri("https://api.weixin.qq.com/cgi-bin/token")
				.addParameter("grant_type","client_credential")
				.addParameter("appid",appid)
				.addParameter("secret",secret)
				.build();
		return LocalHttpClient.executeJsonResult(httpUriRequest, JsApiTicketToken.class);
		
	}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值