## 微信接口连接和自动回复功能

先创建两个实体,用来接收微信(测试号或公众号)的消息和发送给微信(测试号或公众号)的消息。
接收微信发送消息的实体(InMsgEntity )

import lombok.Data;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
@Data   //使用lombok的@Data注释功能,可以自动生成get,set,toString等方法
@XmlRootElement(name="xml")//使用这个和下面这个注释可以在生成微信识别的xml结尾格式
@XmlAccessorType(XmlAccessType.FIELD)
public class InMsgEntity {// 文本消息private String ToUserName; // 开发者微信号private String FromUserName; // 发送方帐号(一个OpenID)private Long CreateTime; // 消息创建时间 (整型)private String MsgType; // 消息类型,文本为textprivate String Content; // 文本消息内容private Long MsgId; // 消息id,64位整型private String PicUrl; // 图片链接(由系统生成)private String MediaId; // 图片消息媒体id,可以调用获取临时素材接口拉取数据private String Event;//事件类型,subscribe(订阅)、unsubscribe(取消订阅)在这里插入代码片private String EvenKey;//事件菜单值}

发送给微信的实体(OutMsgEntity )

import lombok.Data;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
@Data
@XmlRootElement(name="xml")
@XmlAccessorType(XmlAccessType.FIELD)
public class OutMsgEntity {// 文本消息private String ToUserName; // 用户的openIdprivate String FromUserName; // 测试号帐号(一个OpenID)private Long CreateTime; // 消息创建时间 (整型)private String MsgType; // 消息类型,文本为textprivate String Content; // 文本消息内容@XmlElementWrapper(name="Image")private String[] MediaId; // 图片消息媒体id,可以调用获取临时素材接口拉取数据//图文信息private Integer ArticleCount;//图文列表明细@XmlElementWrapper(name="Articles")private ArticleItem[] item;
}

controller层代码

这个controller是连接微信的,一般都是要通过排序和加密来验证的,这里我就不写了。
正确的验证方式说明如下():
开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:
1)将token、timestamp、nonce三个参数进行字典序排序
2)将三个参数字符串拼接成一个字符串进行sha1加密
3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
详细内容请查看官方微信开发文档

@RequestMapping(value="/WeChat.do", method=RequestMethod.GET)@ResponseBodypublic String wechat(String signature,String timestamp,String nonce,String echostr){log.info("连接成功!");return echostr; }

连接成功之后,就可以进行简单的自动回复功能了。
说明:连接测试走的方式get方式,在微信测试号中输入内容走的是post方式,所以这两种方式就能实现简单的连接和交互。
下面这个controller能说实现的功能说明:
1、当关注测试号的时候,会自动推送欢迎功能;
2、用户在测试号页面输入什么内容,系统就会回复什么内容;
3、用户在测试号页面回复“1”,或“2”关键字,会自动回复已写好的文字内容。

@RequestMapping(value="/WeChat.do", method=RequestMethod.POST)@ResponseBodypublic Object returnMessage(@RequestBody InMsgEntity inMsgEntity){log.info("---进入WeChatController的returnMessage方法");OutMsgEntity outMsgEntity =new OutMsgEntity();//发送方outMsgEntity.setFromUserName(inMsgEntity.getToUserName());log.info("发送方姓名:inMessageByWeChat.getToUserName():{}", inMsgEntity.getToUserName());//接收方outMsgEntity.setToUserName(inMsgEntity.getFromUserName());log.info("接收方姓名:inMessageByWeChat.getFromUserName():{}", inMsgEntity.getFromUserName());//消息创建时间outMsgEntity.setCreateTime(new Date().getTime());//判断传过来的消息类型String type= inMsgEntity.getMsgType();String show=null;if(type.equals("text")){//消息类型outMsgEntity.setMsgType("text");//设置消息内容outMsgEntity.setContent(inMsgEntity.getContent());log.info("---接收到的信息:inMessageByWeChat.getContent():{}", inMsgEntity.getContent());if(inMsgEntity.getContent().contains("2")){show="人生是场表演,它以生活为舞台,以时间为布景,"+ "以情感起伏变化为线索,以我们经历的人与事为情节,以精彩与成功为高潮。"+ "你哭也好,笑也罢,愿意也好,被动也罢,这是一场你无法拒绝的表演。有时,"+ "我们演饰了别人,丢失了自己,成了自己舞台上的配角。去做属于自己的主角吧,"+ "你的表演,谁都无可替代。";}else if(inMsgEntity.getContent().contains("1")){show="你回复1我就给你回复1,哈哈!";}}else if(type.equals("image")){//消息类型outMsgEntity.setMsgType("image");//设置图片性关系outMsgEntity.setMediaId(new String[]{inMsgEntity.getMediaId()});}else if(type.equals("event")){//判断事件的类型if(inMsgEntity.getEvent().equals("subscribe")){//回复普通文本消息//outMessageByWeChat.setContent("欢迎关注!!!{微笑}");//outMessageByWeChat.setMsgType("text");//回复图文消息outMsgEntity.setMsgType("news");//设置图文个数outMsgEntity.setArticleCount(1);//设置图文明细列表ArticleItem item = new ArticleItem();item.setTitle("欢迎关注本微信测试号");item.setPicUrl("http://pic.netbian.com/uploads/allimg/200604/001849-15912011292fcb.jpg");item.setDescription("壁纸欢迎关注本测试号!");item.setUrl("http://pic.netbian.com/tupian/25942.html");outMsgEntity.setItem(new ArticleItem[]{item});}}if(show!=null){outMsgEntity.setContent(show);log.info("---打印回复类型数据,outMessageByWeChat.getContent():{}", outMsgEntity.getContent());}log.info("---退出WeChatController的returnMessage方法---");return outMsgEntity;}

下面是效果测试

代码效果就这样了。

微信接口连接和简单自动回复功能相关推荐

  1. 微信公众号python人工智能回复_python实现微信机器人: 登录微信、消息接收、自动回复功能...

    安装wxpy pip install -u wxpy 登录微信 # 导入模块 from wxpy import * # 初始化机器人,扫码登陆 bot = bot() 运行以上代码,会生成一个二维码, ...

  2. 微信小程序实现简单定位功能

    微信小程序实现简单定位功能,简单易读,获取经纬度信息 在pages下创建一个单页如local local.js如下 var app = getApp() Page({ data:{latitude:' ...

  3. python实现微信机器人: 登录微信、消息接收、自动回复功能

    这篇文章主要介绍了python实现微信机器人: 登录微信.消息接收.自动回复功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 ...

  4. Python包装网页微信API并实现简单自动回复

    wxBot wxBot 为Python包装的网页微信API.可以很容易地实现微信机器人. 具体网页微信的API可以查看 wxBot 的源代码,或者参考文章: 挖掘微信Web版通信的全过程 微信协议简单 ...

  5. php关键词回复源码,PHP对接微信公众号实现简单自动回复

    require_once "defs.php"; function index() { $timestamp = $_GET['timestamp']; $nonce = $_GE ...

  6. 安卓接入微信php处理,PHP对接微信公众号实现简单自动回复

    //  -----可配置区域开始------------- //微信令牌,请与微信公众号后台同步 define("TOKEN", "weixin"); //解析 ...

  7. 微信 SHA1 签名_微信公众号自动回复功能开发

    微信公众号自动回复功能开发 本篇主要讲解 微信公众号自动回复功能开发,让我们自己去托管公众号回复的功能,这样可以更加灵活的根据公众号收到的信息来制定特定的回复信息,一起来了解吧! 1.注册公众号 如果 ...

  8. 6 实现微信公众号 自动回复功能

    一 实先自动回复功能的逻辑步骤 1 处理POST类型的控制逻辑,接收XML的数据包: 2 解析XML数据包(获得数据包的消息类型或者是事件类型): 3 拼装我们定义好的消息: 4 包装成XML格式: ...

  9. 如何用计算机自动回复微信,10分钟教你用Python实现微信自动回复功能

    01 前言&&效果展示 相信大家都有忙碌的时候,不可能一直守在微信上及时回复消息.但微信又不能像QQ一样设置自动回复.无妨,今天,我们就来用Python实现微信的自动回复功能吧,并且把 ...

最新文章

  1. 哭了,现在看来高校4月中旬能开学算是早的了,非毕业生可能会更晚
  2. 通过文件IO控制硬件设备的方法
  3. 文件服务器的配置与管理(3) 共享文件夹的创建与使用
  4. java 枚举内嵌枚举_高度有用的Java ChronoUnit枚举
  5. 山西财大华商学院计算机系,山西财经大学华商学院
  6. ASP.NET中实现MSN通知消息功能
  7. android modem开发(16)---MTK语音测试
  8. Java每日问题汇总-02
  9. 《机器人编程实战》一一1.2 给机器人指令
  10. NetBeans 时事通讯(刊号 # 120 - Oct 14, 2010)
  11. 挑战程序设计竞赛题解目录
  12. 如何绘制逻辑图 — 8.逻辑的表达:数据逻辑
  13. 数学 计算机类论文题目,数学计算机论文题目范文 数学计算机论文标题如何定...
  14. zigbee 协调器与终端通信问题
  15. 如何为长期旅行做准备
  16. xx学院学员评优评奖管理系统
  17. 印度行——印度软件公司的印象
  18. 虚拟滚动实现(Vue)
  19. win10通过Laragon配置Laravel
  20. 用于采集数据的工具——StatsD

热门文章

  1. 单体酒店的中台化运营策略研究
  2. java 媒体_Java多媒体编程应用
  3. Arrhenius 方程的数学表达式背后的物理意义
  4. [html] 点击html界面button,实现http请求发送,原界面不做跳转
  5. 搜狗号码通安卓版 2.3.2.13530软件介绍
  6. 安卓仿手机QQ消息BadgeView气泡跟随手指移动,并实现进出动画效果。
  7. 小学教师计算机一级考试试题及答案,小学《信息技术》考试试题及答案(笔试)...
  8. windows10系统自带杀毒软件Windows Defender防病毒...怎么关闭?
  9. 常用电路设计EDA软件简介
  10. 2022最新最全的Java面试八股文小抄开源!带你摸熟 20+ 互联网公司面试考点