本仓库实现了最简单的公众号服务创建,以及调用chatgpt回复。API均取自官方文档,由于需求增加,使用wxSDK辅助开发,只用编写业务逻辑
这是一个使用go语言搭建的微信公众号后端,使用gin框架。根路由,get进行验证,post进行回复消息. 主要实现了一个微信公众号后端的基本功能。
完成了微信公众号的后端验证,并调用自建的chatgpt接口,可以实现公众号对用户消息基于chatgpt的回复。
主要任务为问答,均采用http通讯,实现如下:
微信服务器 (WeChat)
|
Get | Post
v
本地后端 (Local Backend) HTTP
|
| Post
v
ChatGPT后端 (ChatGPT Backend)
由于基于http通讯,服务端无法主动向用户端发信息,但是调用微信官方的接口可以实现这一点。首先需要在公众号后台获取开发者id和密码,使用get方法获取access_token
。该token会定时刷新,所以要定时重新获取。
但是需要注意的是,个人微信公众号的接口权限很少,如果想主动发消息给用户一般是使用客服接口,但是个人订阅号没有客服消息的接口权限。
本仓库已经实现了对微信接口的认证操作内容(获取Access_token),并使用post给微信后端,使公众号可以主动发起通讯。
但是微信公众号始终不是以聊天为目的,官方的诸多限制使得调用公众号作为调用chatgpt的媒介不是一个好的选择:
- 微信公众号如果在用户发消息后5秒内没有发送消息,微信将会重新发起,这对于chatgpt的响应时长+网络延迟来说,5秒是不够的,特别是对文本长度有要求。
解决方法: 在后端收到用户消息后必须回复success
或者空字符串,才不会超时重传。避免超时无响应,可以在每次收到消息后回复自定义语句或者直接success
,然后通过客服消息接口,主动将chatgpt的响应发送给用户。
微信公众号的后台设置中填写url会自动进行服务器端验证。希望实现的业务逻辑可以通过自建路由实现,如添加/v1/menu
路由,使用get方式调用时,执行相关handle,实现添加菜单。
注意专注公众号后台的接口权限,个人公众号只有极少量权限,甚至无法自定义菜单,不如直接在后台操作。