这是一个基于 Next.js 开发的微信公众号对接 ChatGPT 程序,可以通过微信公众号直接向 ChatGPT 提问并获取答案
docker compose up -d
npm test
数据库中创建了两个数据表,分别为 system_log 和 reply_cache。
- `id`:主键,自增长的唯一标识符。
- `level`:日志级别,支持的值包括 'error', 'warn', 'info', 'debug'。
- `message`:日志内容。
- `createdAt`:记录创建时间。
- `updatedAt`:记录更新时间。
- `id`:主键,自增长的唯一标识符。
- `msgId`:消息的唯一标识符,在微信公众号中作为消息的身份标识符。
- `responseId`:关联的回答的随机识符。
- `input`:用户的提问内容。
- `reply`:ChatGPT 的回答内容
- `ask` int(11) NOT NULL 微信公众号请求次数。
- `createdAt`:记录创建时间。
- `updatedAt`:记录更新时间。
- `expireAt`:缓存过期时间,用于控制缓存的有效期。
在应用程序中,我们使用 sequelize 模块来操作缓存,并将缓存保存到了 reply_cache 数据表中。
数据库文件位于db\mysql_init.sql
如果你的服务器不支持外部接入微信公众号,你可以使用 PHP 请求代理程序,将接收到的请求经过处理后转发到支持接口的 Next.js 应用程序中。
使用方法如下:
如果你使用的是 Vercel,需要注意 Vercel 的函数默认超时时间是 10 秒,而 ChatGPT 处理大量文本时可能会需要更长的时间,因此容易出错。因此,建议在自己的服务器上部署应用程序。
由于Vercel 不支持sqlite,Vercel提供了基于云的PostgreSQL数据库服务替代方案。
登录后台点击Storage创建Postgres数据库
设置Environment Variables
Vercel Postgres 的链接配置可以在数据库的.env.local选项卡进行查看
本项目的对应设置
DB_TYPE=postgres
DB_HOST=POSTGRES_HOST
DB_PORT=5432
DB_USER=POSTGRES_USER
DB_PASS=POSTGRES_PASSWORD
DB_NAME=POSTGRES_DATABASE
后台地址:http://localhost:3000/admin
用户名/密码:admin/admin
认证公众号内容主动发送未测试
安全模式加密回复未解决,目前只支持 兼容模式 、 明文模式