Skip to content

这是一个用于处理微信公众号消息和事件的Node.js服务端应用。本服务实现了微信公众平台的服务器配置验证、消息接收与处理等基础功能,并集成了OpenAI接口实现智能聊天回复,为微信公众号提供全面的后端支持。

Notifications You must be signed in to change notification settings

ruiangeStudio/wechat-official

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

微信公众号服务

项目简介

这是一个用于处理微信公众号消息和事件的Node.js服务端应用。本服务实现了微信公众平台的服务器配置验证、消息接收与处理等基础功能,并集成了OpenAI接口实现智能聊天回复,为微信公众号提供全面的后端支持。

线上案例

扫描下方二维码,体验智能聊天机器人:

微信公众号二维码

接口测试地址

https://wechat-official.vercel.app(科学上网访问)

主要功能

  1. 服务器配置验证:实现微信公众平台要求的服务器配置验证流程
  2. 消息接收与解析:接收并解析微信公众号发来的XML格式消息
  3. AI智能回复:集成OpenAI API,为用户提供智能聊天回复功能
  4. 消息格式转换:支持XML和JSON格式的消息转换

技术栈

  • 后端框架:Node.js + Express.js (^4.21.2)
  • AI服务:OpenAI API (^4.87.3)
  • 消息处理:fast-xml-parser (^5.2.2)
  • HTTP请求:axios (^1.8.3)
  • 时间处理:dayjs (^1.11.13)
  • 环境变量:dotenv (^16.5.0)
  • 开发工具:nodemon (热重载)

项目结构

├── src/                        # 源代码目录
│   ├── app.js                  # 应用入口文件
│   ├── config/                 # 配置文件目录
│   │   └── dbConfig.js         # 数据库配置文件
│   ├── controllers/            # 控制器目录
│   │   ├── official.controller.js  # 微信公众号相关控制器
│   │   └── ai.controller.js    # AI相关控制器
│   ├── data/                   # 数据配置目录
│   │   └── command.config.js   # 命令配置文件
│   ├── models/                 # 数据模型目录
│   │   └── message.model.js    # 消息数据模型
│   ├── routes/                 # 路由目录
│   │   ├── main.router.js      # 主路由
│   │   ├── api.router.js       # API路由
│   │   └── modules/            # 功能模块路由
│   │       ├── official.router.js  # 微信公众号路由
│   │       └── ai.router.js    # AI相关路由
│   ├── services/               # 服务层目录
│   │   └── official.service.js # 微信公众号业务逻辑处理
│   ├── utils/                  # 工具函数目录
│   │   ├── aiReply.util.js     # AI回复工具函数
│   │   └── douyin.util.js      # 抖音相关工具函数
│   └── view/                   # 视图目录(暂为空)
├── public/                     # 公共资源目录
│   └── index.html              # 首页文件
├── doc/                        # 文档目录
│   └── images/                 # 图片资源目录
│       └── qrcode_for_gh_81fce9bef0a9_344.jpg  # 公众号二维码
├── .cursorrules                # Cursor编辑器规则配置
├── .gitignore                  # Git忽略文件配置
├── package.json                # 项目依赖配置
├── package-lock.json           # 依赖锁定文件
├── vercel.json                 # Vercel部署配置
└── README.md                   # 项目说明文档

环境要求

  • Node.js >= 18.x
  • 微信公众号账号
  • OpenAI API密钥

环境变量配置

项目使用.env文件管理环境变量,需要创建.env文件并配置以下内容:

# 服务配置
PORT=3001                     # 服务运行端口

# 微信公众号配置
OFFICIAL_TOKEN=your_token     # 微信公众平台配置的Token

# OpenAI配置
AI_API_KEY=your_openai_key    # OpenAI API密钥
AI_API_URL=https://api.openai.com/v1  # OpenAI API URL,可自定义
AI_MODEL=gpt-3.5-turbo        # 使用的AI模型

安装与运行

# 克隆项目
git clone https://your-repository-url/wechat-official.git
cd wechat-official

# 安装依赖
npm install

# 配置环境变量
# 创建.env文件,并填写必要的配置信息 参照.env.example

# 开发模式运行
npm run dev

微信公众号配置

  1. 登录微信公众平台
  2. 进入"设置与开发" -> "基本配置"
  3. 在服务器配置项中填写:
    • URL: http://你的域名/api/official
    • Token: 与环境变量OFFICIAL_TOKEN一致
    • EncodingAESKey: 可选,用于加密模式
  4. 点击"提交"按钮,验证服务器配置

功能说明

AI智能回复

本项目集成了OpenAI API实现智能聊天功能。当用户向公众号发送文本消息时,系统将:

  1. 接收并解析用户消息
  2. 通过OpenAI API获取智能回复
  3. 将回复内容封装为微信公众号支持的XML格式
  4. 发送回复给用户

消息处理流程

用户 -> 微信服务器 -> 本服务 -> AI处理 -> 本服务 -> 微信服务器 -> 用户

二次开发指南

如需扩展功能,可在以下位置进行修改:

  1. 添加新的消息类型处理:修改src/controllers/official.controller.js中的receiveMessages函数
  2. 自定义AI回复逻辑:修改src/services/official.service.js中的textMessageProcessing函数
  3. 添加新的API endpoints:在src/routes/modules/目录下创建新的路由文件
  4. 修改AI提示词:调整src/utils/aiReply.util.js中的AI系统提示词

编写代码时:

- 使用ESM模块语法。
- 新增路由时路由名称为名称加Router后缀,例如:user.router.js,这样便于区分路由和控制器。
- 新增控制器时控制器名称为名称加Controller后缀,例如:user.controller.js。
- 新增模型时模型名称为名称加Model后缀,例如:userModel.js。
- 新增中间件时中间件名称为名称加Middleware后缀,例如:user.middleware.js。
- 新增工具时工具名称为名称加Util后缀,例如:user.util.js。
- 新增服务时服务名称为名称加Service后缀,例如:user.service.js。

常见问题

  1. 验证失败:检查Token配置是否一致,URL是否可以正常访问
  2. 无法收到回复:检查OpenAI API密钥是否有效,网络连接是否正常
  3. 响应超时:考虑优化AI请求逻辑,或增加异步处理机制

许可证

ISC

About

这是一个用于处理微信公众号消息和事件的Node.js服务端应用。本服务实现了微信公众平台的服务器配置验证、消息接收与处理等基础功能,并集成了OpenAI接口实现智能聊天回复,为微信公众号提供全面的后端支持。

Topics

Resources

Stars

Watchers

Forks

Contributors 2

  •  
  •