Java微信公众平台开发(9) 关键字回复以及客服接口实现

 更新时间:2017年04月21日 11:32:21   作者:dapengniao  
这篇文章主要为大家详细介绍了Java微信公众平台开发第九步,关键字回复以及客服接口实现,以及遇到该公众号暂时无法提供服务的解决方案,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

我们在微信公众号的后台可以发现微信给我们制定了两种模式,一种是开发者模式(也就是我们一直在做的开发),还有一种模式是编辑模式,然而有些功能一旦我们切换到开发者模式下就无法使用了,比较典型的就是关键字回复以及服务器无响应的时候返回的【服务器无法响应】等问题 ,这里我给出的解决方案是:①对关键字给出关键字回复的代码实现;②【服务器5s无响应】解决方案是接入多客服,以方便我们的消息处理!

(一)关键字自动回复

在前面的文章中我们已经完成对消息回复的分类以及实现,这里说的关键字回复只是对消息回复功能的应用化,这里我在【文本类型消息】下实现,其大致思路是:首先获取到消息文本的内容content,然后更具获取content去匹配自己需要设定的关键字,然后根据匹配到的不同结果给出不同的消息回复,简单代码如下:

String openid=map.get("FromUserName"); //用户openid
String mpid=map.get("ToUserName"); //公众号原始ID
 
//普通文本消息
TextMessage txtmsg=new TextMessage();
txtmsg.setToUserName(openid);
txtmsg.setFromUserName(mpid);
txtmsg.setCreateTime(new Date().getTime());
txtmsg.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
 
if (map.get("MsgType").equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) { // 文本消息
 String content=map.get("Content");
 if("1".equals(content)){
  txtmsg.setContent("你好,你发送的内容是1!");
 }else if("2".equals(content)){
  txtmsg.setContent("你好,你发送的内容是2!");
 }else if("3".equals(content)){
  txtmsg.setContent("你好,你发送的内容是3!");
 }else if("4".equals(content)){
  txtmsg.setContent("<a href=\"http://www.cuiyongzhi.com\">崔用志博客</a>");
 }else{
  txtmsg.setContent("你好,欢迎来到崔用志博客!");
 }
 return MessageUtil.textMessageToXml(txtmsg);
}

基本关键字回复的逻辑就是这样,你可以根据自己的需要设置自己的关键字以及实现流程,最终运行结果如下:

(二)该公众号暂时无法提供服务解决方案——多客服接口使用

在我们使用或者开发过程中可能会遇到【该公众号暂时无法提供服务】的回复,出现这个回复的原因是我们的应用服务在5s内没有给到腾讯服务器任何响应,腾讯服务器给用户的自动响应提示,如何解决以及避免这种情况的出现,我们可以有如下解决方案:

①直接给微信服务器回复【空】,注意这里是直接回复空而不是回复内容为空!

所以我们的代码实现为:

//这个是错误代码回复
 if (map.get("MsgType").equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) { // 链接消息
  txtmsg.setContent("");
  return MessageUtil.textMessageToXml(txtmsg);
 }
  
 //这个是正确代码回复
 if (map.get("MsgType").equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)) { // 位置消息
  System.out.println("==============这是位置消息!");
  return "";
 }

②将消息转接到多客服助手,让客服去做消息的处理!
新建客服消息实体类CustomerMessage.java,简单代码如下:

package com.cuiyongzhi.wechat.message.resp;
 
/**
 * ClassName: CustomerMessage
 * @Description: 客服消息接口
 * @author dapengniao
 * @date 2016年3月14日 下午6:28:08
 */
public class CustomerMessage {
 // 接收方帐号(收到的OpenID)
 private String ToUserName;
 // 开发者微信号
 private String FromUserName;
 // 消息创建时间 (整型)
 private long CreateTime;
 // 消息类型(text/music/news)
 private String MsgType;
 
 public String getToUserName() {
  return ToUserName;
 }
 
 public void setToUserName(String toUserName) {
  ToUserName = toUserName;
 }
 
 public String getFromUserName() {
  return FromUserName;
 }
 
 public void setFromUserName(String fromUserName) {
  FromUserName = fromUserName;
 }
 
 public long getCreateTime() {
  return CreateTime;
 }
 
 public void setCreateTime(long createTime) {
  CreateTime = createTime;
 }
 
 public String getMsgType() {
  return MsgType;
 }
 
 public void setMsgType(String msgType) {
  MsgType = msgType;
 }
 
}

然后在我们需要回复的地方加入消息转发代码即可,简单如下:

String openid=map.get("FromUserName"); //用户openid
String mpid=map.get("ToUserName"); //公众号原始ID
   CustomerMessage customer=new CustomerMessage();
   customer.setToUserName(fromUserName);
   customer.setFromUserName(toUserName);
   customer.setCreateTime(new Date().getTime());
   customer.setMsgType("transfer_customer_service");
    
    
   // 文本消息
   if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
     
    return MessageUtil.customerMessageToXml(customer);
   }


这样就把用户发送的消息转发到多客服助手,这样我们的客服人员就可以对应的答复,方便我们消息的处理!多客服的相关使用和下载可以查看 http://mp.weixin.qq.com/wiki/11/f0e34a15cec66fefb28cf1c0388f68ab.html

感谢你的翻阅,如有疑问可以留言讨论,下一篇将讲述【自定义菜单的基本实现】的两种实现方案!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java设计模式之策略模式的使用(Strategy Pattern)

    Java设计模式之策略模式的使用(Strategy Pattern)

    策略模式是一种行为型设计模式,用于定义一系列算法并将每个算法封装起来,使它们可以互相替换,从而实现代码的可维护性和灵活性,策略模式包含策略接口、具体策略类和上下文类,并通过将算法的选择与使用分离,使得算法可以独立变化
    2025-03-03
  • 关于javaWeb中405错误的解决方法

    关于javaWeb中405错误的解决方法

    下面小编就为大家带来一篇关于javaWeb中405错误的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Springboot maven项目配置文件覆盖问题的处理

    Springboot maven项目配置文件覆盖问题的处理

    这篇文章主要介绍了Springboot maven项目配置文件覆盖问题的处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • 从 JVM 中深入探究 Synchronized作用及原理

    从 JVM 中深入探究 Synchronized作用及原理

    这篇文章主要为大家介绍了从 JVM 中深入探究 Synchronized作用及原理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Spring Security LDAP实现身份验证的项目实践

    Spring Security LDAP实现身份验证的项目实践

    在本文中,我们涵盖了“使用 Spring Boot 的 Spring Security LDAP 身份验证示例”的所有理论和示例部分,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • 使用SpringAop动态获取mapper执行的SQL,并保存SQL到Log表中

    使用SpringAop动态获取mapper执行的SQL,并保存SQL到Log表中

    这篇文章主要介绍了使用SpringAop动态获取mapper执行的SQL,并保存SQL到Log表中问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java 中比较对象的用法小结

    Java 中比较对象的用法小结

    在 Java 中,比较对象的方法有多种多样,每种都有其适用的场景,通过深入理解 equals() 方法、Comparable 接口和 Comparator 接口,我们能够更好地处理对象之间的比较,使代码更加灵活、清晰和健壮,本文给大家介绍Java 中比较对象的用法,感兴趣的朋友一起看看吧
    2023-12-12
  • Java设计模式编程中的责任链模式使用示例

    Java设计模式编程中的责任链模式使用示例

    这篇文章主要介绍了Java设计模式编程中的责任链模式使用示例,责任链模式可以避免很多请求的发送者和接收者之间的耦合关系,需要的朋友可以参考下
    2016-05-05
  • springmvc开启异步请求报错Java code using the Servlet API or

    springmvc开启异步请求报错Java code using the Ser

    这篇文章主要为大家介绍了springmvc开启异步请求报错Java code using the Servlet API or解决分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-02-02
  • java开发gui教程之jframe监听窗体大小变化事件和jframe创建窗体

    java开发gui教程之jframe监听窗体大小变化事件和jframe创建窗体

    这篇文章主要介绍了java开发gui教程中jframe监听窗体大小变化事件和jframe创建窗体的示例,需要的朋友可以参考下
    2014-03-03

最新评论