微信公众号关键词自动回复

今天主要给大家讲一下如何实现微信公众号关键词的自动回复功能,就如网站的文章而言,进行人机识别,需要关注公众号回复验证码获取到验证码从而展示文章内容,,具体效果如下图。

springboot 2.3.2RELEASE

在这里插入图片描述
在这里插入图片描述

1、微信公众平台创建公众号

首先需要自行前往微信公众平台创建公众号(博主已经有公众号就不在进行讲解这一步了(注册简单,自行百度))

2、微信公众平台基础配置

在公众号平台选择基础配置进行服务器的配置,如下图
在这里插入图片描述
在这里插入图片描述

1.url:填写你后端的接口地址,get请求
2.token:自己随便定义一个
3.EncodingAESKey:可以自己选择也可以随机生成
4.加解密方式:根据自己的实际情况来选择

3、pom引入依赖

    <!--微信公众号关键词自动回复--><dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-mp</artifactId><version>3.4.0</version>
</dependency>

4、application.yml

wechat:app-id: 
# 公众号AppSecretsecret: 
# 公众号Tokentoken: 
# 公众号AES KeyaesKey: 

5、新建WechatProperties类

@Data
@Configuration
@ConfigurationProperties(prefix = "wechat")
public class WechatProperties {private String appId;private String secret;private String token;private String aesKey;
}

6、新建WechatConfiguration类

@Configuration
public class WechatConfiguration {@Resourceprivate WechatProperties wechatMpProperties;@Beanpublic WxMpConfigStorage wxMpConfigStorage() {WxMpInMemoryConfigStorage configStorage = new WxMpInMemoryConfigStorage();configStorage.setAppId(wechatMpProperties.getAppId());configStorage.setSecret(wechatMpProperties.getSecret());configStorage.setToken(wechatMpProperties.getToken());configStorage.setAesKey(wechatMpProperties.getAesKey());return configStorage;}@Beanpublic WxMpService wxMpService(WxMpConfigStorage wxMpConfigStorage) {WxMpService wxMpService = new WxMpServiceImpl();wxMpService.setWxMpConfigStorage(wxMpConfigStorage);return wxMpService;}
}

7.controller层代码

此处需要注意controller接口名,需要与前面公众号接口配置填写的url要一致

/*** 微信接口相关控制器* Created by PeakGao on 2023/8/5.*/@RestController
@RequestMapping("/wechat")
@RequiredArgsConstructor
public class ApiWeChatController extends BaseController {private final WxMpService wxMpService;/*** 微信公众号服务器配置校验token(这个接口是配置在服务器配置中的)** @param signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。* @param timestamp 时间戳* @param nonce     随机数* @param echostr   随机字符串* @return*/@GetMapping(produces = "text/plain;charset=utf-8")public String checkSignature(@RequestParam(name = "signature") String signature,@RequestParam(name = "timestamp") String timestamp,@RequestParam(name = "nonce") String nonce,@RequestParam(name = "echostr") String echostr) {logger.info("接收来自微信服务器得认证消息:[{},{},{},{}]", signature, timestamp, nonce, echostr);if (wxMpService.checkSignature(timestamp, nonce, signature)) {return echostr;}return "Invalid signature";}/*** 关键字回复** @param request* @return*/@PostMapping(produces = "application/xml; charset=UTF-8")public String handleMsg(HttpServletRequest request) {try {WxMpXmlMessage message = WxMpXmlMessage.fromXml(request.getInputStream());String content = message.getContent();logger.info("公众号请求类型:{};内容为:{}", message.getMsgType(), content);if (WxConsts.XmlMsgType.TEXT.equals(message.getMsgType())) {if ("验证码".equals(content)) {String code = RandomUtils.generationNumberChar(6);String msg = MessageFormat.format("您的本次验证码:{0},该验证码30分钟内有效。", code);redisUtil.set(Constant.WECHAT_CODE + code, code, 1800);return returnMsg(msg, message);}}} catch (Exception e) {e.printStackTrace();}return "";}/*** 返回消息** @param msg     消息内容* @param message* @return*/private static String returnMsg(String msg, WxMpXmlMessage message) {WxMpXmlOutTextMessage outMessage = WxMpXmlOutTextMessage.TEXT().content(msg).fromUser(message.getToUser()).toUser(message.getFromUser()).build();return outMessage.toXml();}}

以上只是讲解了自动回复文本类型的功能,其他类型功能以后在进行讲解或可自行百度
最后献上完成的示例图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2812740.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

跨境电商必读:如何选择适合跨境ERP系统?

在当今全球化的商业环境下&#xff0c;跨境电商已经成为许多企业拓展业务的重要途径。而选择适合的ERP系统&#xff0c;对于实现跨境电商的高效运营和持续发展至关重要。本文将为您详细介绍如何选择适合跨境电商的ERP系统&#xff0c;助您在激烈的市场竞争中脱颖而出。 为什么…

2024.2.25 模拟实现 RabbitMQ —— 网络通信设计(服务器)

目录 引言 约定应用层的通信协议 自定义应用层协议 Type Length PayLod 实现 Broker Server 类 属性 与 构造 启动 Broker Server 停止 Broker Server 处理客户端连接 读取请求 与 写回响应 根据请求计算响应 清除 channel 引言 生产者 和 消费者 都是客户端&…

决策支持系统(DSS):一文读懂,同时分清和BI的区别

大家好&#xff0c;我是贝格前端工场&#xff0c;本期继续分享决策支持系统的设计&#xff0c;欢迎大家关注&#xff0c;如有B端系统界面的设计和前端需求&#xff0c;可以联络我们。 一、什么是DSS DSS系统是指决策支持系统&#xff08;Decision Support System&#xff09;…

2024年1月京东洗衣机行业数据分析:TOP10品牌销量销额排行榜

鲸参谋监测的京东平台1月份洗衣机市场销售数据已出炉&#xff01; 根据鲸参谋电商数据分析平台显示&#xff0c;今年1月份&#xff0c;京东平台上洗衣机的销量约160万件&#xff0c;环比上个月增长约42%&#xff0c;同比去年下滑7%&#xff1b;销售额约28亿元&#xff0c;环比…

ETH网络中的账户

ETH网络中的账户 Externally owned accounts (EOA) - 外部账户 由用户控制&#xff0c;我们导入助记词创建的账户就属于此类账户。 Contract accounts (smart contracts) - 合约账户 合约账户由以太坊虚拟机执行的代码控制。它也被称为智能合约。合约帐户有相关的代码和数据存…

Qt介绍以及qt_creater的安装和C++项目工程创建

最近天气严寒&#xff0c;同学们要注意保暖哦&#xff01;学习的同时别忘了照顾好自己呀&#xff01;o(*&#xffe3;▽&#xffe3;*)ブ 目录 一、Qt 1、Qt概念 2、常见的GUI 二、安装qt_creater 方法一&#xff1a; 方法二&#xff1a; 三、Qt_creater 中C项目的创建 …

企业微信主体怎么转让给别人?

企业微信变更主体有什么作用&#xff1f;当我们的企业因为各种原因需要注销或已经注销&#xff0c;或者运营变更等情况&#xff0c;企业微信无法继续使用原主体继续使用时&#xff0c;可以申请企业主体变更&#xff0c;变更为新的主体。企业微信变更主体的条件有哪些&#xff1…

超真诚婚礼邀请函小程序

结婚了&#xff0c;自己写个婚礼邀请函小程序&#xff0c;含泪省下&#xffe5;49.9&#xff1b;程序员的浪漫&#xff01; 1、定位直达 2、背景音乐 3、倒计时 4、CSDN图床 页面代码如下&#xff1a; <cu-custom bgColor"bg-yellow-light" isBack"{{fal…

AxureCloud配置文件详细介绍

AxureCloud配置文件详细介绍 原文地址&#xff1a;https://docs.axure.com/axure-cloud/business/custom-settings-json/ 通过修改 customsettings.json 可以修改AxureCloud私有部署的域名、端口、HTTPS、存储目录、是否开启插件等, 默认安装的路径为: C:\Program Files\Axure…

斯元Z-ONE-China Cybersecurity Tech Landscape·中国网络安全全景图-百度网盘下载

面向全球&#xff0c;斯元Z-ONE正式发布首版「China Cybersecurity Tech Landscape中国网络安全全景图」。 为了提升海外市场对中国网络安全行业的全局认识&#xff0c;方便国际客户及合作伙伴了解中国网络安全科技的赛道分布和国内外厂商对标&#xff0c;助力中国网安厂商出海…

抖音视频评论抓取软件|视频批量下载

抖音视频评论采集软件是一款基于C#开发的高效、便捷的工具&#xff0c;旨在为用户提供全面的数据采集和分析服务。该软件不仅支持通过关键词进行搜索抓取&#xff0c;还能够通过分享链接进行单个视频的抓取和下载&#xff0c;让用户轻松获取抖音视频评论数据。 &#x1f50d; …

文章总结(拉钩教育)

方法论 那对于我们专栏来说&#xff0c;在面对复杂的检索知识的时候&#xff0c;我更建议你通过理解记忆的方式进行学习。具体的方式有啥呢&#xff1f;我比较推荐问答的方式。也就是说&#xff0c;在学习每个知识点的时候&#xff0c;你可以一直问自己几个问题&#xff0c;比…

【Vue】组件通信2

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Vue ⛺️稳中求进&#xff0c;晒太阳 v-model原理 原理&#xff1a; v-model本质是一个语法糖&#xff0c;例如在输入输入框上&#xff0c;就是value属性和input数据的合写&#xff08;注…

如何战胜人性弱点,克服频繁交易?

巴菲特曾说过&#xff0c;如果商学院的学生毕业后&#xff0c;拿一张卡片来打洞&#xff0c;买一只打一孔洞&#xff0c;那么&#xff0c;经过一生&#xff0c;卡片上的洞洞最少的同学最有可能成为巨富。 “钱在这里从活跃的投资者流向有耐心的投资者。许多精力旺盛的有进取心投…

袁庭新ES系列12节 | Elasticsearch高级查询操作

前言 上篇文章讲了关于Elasticsearch的基本查询操作。接下来袁老师为大家带来Elasticsearch高级查询部分相关的内容。Elasticsearch是基于JSON提供完整的查询DSL&#xff08;Domain Specific Language&#xff1a;领域特定语言&#xff09;来定义查询。因此&#xff0c;我们有…

Unity零基础到进阶 | Unity中的 RectTransformUtility 方法整理汇总

Unity零基础到进阶 ☀️| RectTransformUtility 方法整理汇总一、RectTransformUtility 官方文档1.1 RectTransformUtility.CalculateRelativeRectTransformBounds&#xff08;重&#xff09;1.2 RectTransformUtility.FlipLayoutAxes1.3 RectTransformUtility.FlipLayoutOnAxi…

前端-Vue3递归组件自定义Tree

需求 PS&#xff1a;写在前面&#xff0c;需求想要一个Tree 形结构展示当前的组织机构&#xff0c;最末层节点可以选择&#xff0c;层级明确。第一选择网上npm官网或者github 找找成型的东西 element-ui Tree 没有组织结构线js-tree 好看&#xff0c;但是适配Vue3 有点费劲&a…

等时圈API对比

有时候&#xff0c;我们用地图是为了查路线&#xff0c;以及了解到目的地所需要的时间。等时地图可以让你很清楚地了解到路上需要多长时间。 等时地图用不同的颜色表示从固定位置出发需要的时间范围&#xff0c;比如绿色表示10分钟、黄色表示10-20分钟等等。 这种地图一目了然…

卡玛网52. 携带研究材料(第七期模拟笔试)

题目&#xff1a; 代码(首刷看解析&#xff09;&#xff1a; #include<bits/stdc.h> using namespace std;int help(int N, int bagSize, vector<vector<int>>& materals) {vector<int> dp(bagSize 1, 0);for (int i 0; i < N; i) {for (int…

【数据结构】线性表 顺序表(动态、静态分配,插入删除查找基本操作)解析+完整代码

1.线性表的基本概念 定义 线性表&#xff08;Linear List&#xff09;是具有相同数据类型的n个数据元素的有限序列。 n为表长&#xff0c;n0时线性表是个空表 前驱、后继 前驱&#xff1a;其中一个数据元素的前一个元素。第一个元素没有前驱。后继&#xff1a;其中一个数据元素…