2023-02-22 09:57:10 星期三
目的
微信公众号后台管理,实现简单的文本接收与信息回复。
前提
- 配置好微信服务器,并正常启动
- 安装了
golang
- 安装了
wechat
包
示例代码
演示一个接收用户向公众号发送的消息,如果消息类型是文本格式的话,就回复用户 “收到你的消息: ” 加上用户发的内容。如果用户发的是非文本消息,如图片,表情包等,则回复用户 “仅支持文本消息哦~”。
点击查看代码
package main
import (
"fmt"
"log"
"net/http"
wechat "github.com/silenceper/wechat/v2"
"github.com/silenceper/wechat/v2/cache"
offConfig "github.com/silenceper/wechat/v2/officialaccount/config"
"github.com/silenceper/wechat/v2/officialaccount/message"
)
// 一个分词函数,输入字符串,输出
func serveWechat(rw http.ResponseWriter, req *http.Request) {
wc := wechat.NewWechat()
//这里本地内存保存access_token,也可选择redis,memcache或者自定cache
memory := cache.NewMemory()
cfg := &offConfig.Config{
AppID: "XXXXXXX",
AppSecret: "XXXXXXXXX",
Token: "tokenhere",
EncodingAESKey: "QfG7Xd2utub6P1aIc276jFXiYvCPuTcrn6vv0bshe0T",
Cache: memory,
}
// 微信公众号后台接口校验
officialAccount := wc.GetOfficialAccount(cfg)
// 传入request和responseWriter
server := officialAccount.GetServer(req, rw)
//设置接收消息的处理方法
server.SetMessageHandler(func(msg *message.MixMessage) *message.Reply {
var info string
log.Print(msg.MsgType)
if msg.MsgType == "text" {
//回复消息:演示回复用户发送的消息
log.Print("获得用户消息:", msg.Content)
fmt.Printf("%T\n", msg.Content)
info = "收到你的消息: " + msg.Content
} else {
log.Print("仅支持文本消息哦~")
info = "仅支持文本消息哦~"
}
text := message.NewText(info)
return &message.Reply{MsgType: message.MsgTypeText, MsgData: text}
})
//处理消息接收以及回复
err := server.Serve()
if err != nil {
log.Print(err)
return
}
//发送回复的消息
server.Send()
}
func main() {
http.HandleFunc("/", serveWechat)
log.Print("wechat server listener at", ":8001")
err := http.ListenAndServe(":8001", nil)
if err != nil {
log.Print("start server error , err=%v", err)
}
}
其中的配置项分别对应微信公众号管理页面内的配置项,如下图:
设想
消息接收与被动回复功能不需要微信认证即可实现。
后续可根据文本提供聊天、翻译,查图片、找段子等功能的公众号功能。