想要开发订阅通知的功能先要了解订阅通知开发的流程
第一步:发消息给用户
第二步:用户通过消息交互订阅通知
第三步:如果用户同意订阅通知,给用户发送通知消息
前面两步可以回顾前面发的文章
这里要说下,如何给订阅的用户发送消息
上一篇文章已经提到过如何处理用户的订阅信息
var wxSubscribe wx_subscribe.WxSubscribe
mysql.MasterCon().Where("openid = ?", openid).First(&wxSubscribe)
if wxSubscribe.Autokid == 0 {
mysql.MasterCon().Create(&wx_subscribe.WxSubscribe{
Action: action,
Openid: openid,
Scene: scene,
TemplateId: templateId,
Ctime: time.Now().Unix(),
})
} else if wxSubscribe.Autokid > 0 && wxSubscribe.TheStatus == 1 {
wxSubscribe.TheStatus = 0
wxSubscribe.Ctime = time.Now().Unix()
mysql.MasterCon().Save(wxSubscribe)
}
根据状态the_status查到订阅未发送消息的记录,根据记录中的openid,进行用户消息的发送
var wxSubscribe wx_subscribe.WxSubscribe
mysql.MasterCon().Where("the_status = ?", 0).First(&wxSubscribe)
进行下一步操作之前先看下需要什么接口,并且接口需要什么参数
看下参数的说明
先来获取下token
accessToken := getAccessToken()
关于获取token的方法参考这篇文章 Golang之微信【获取接口调用凭据】开发
url := "https://api.weixin.qq.com/cgi-bin/message/template/subscribe"
params := utils.H{
"touser": openid,
"template_id": templateId,
"scene": scene,
"title": "订阅测试",
"data": utils.H{
"content": utils.H{
"value": "VALUE",
"color": "COLOR",
},
},
}
创建请求地址和请求需要传递的参数
jsonEncodeData := utils.JsonEncode(params)
requestBody := strings.NewReader(jsonEncodeData)
参数类型转换
request, err := http.NewRequest("POST", url, requestBody)
if err != nil {
log.ErrorLogger.H(tag, utils.H{"error": err})
return
}
创建请求,同时检测是否有异常
q := request.URL.Query()
q.Add("access_token", accessToken)
request.URL.RawQuery = q.Encode()
添加token的请求参数,我用这个方式,是比较“科学”的方式,也可以在前面创建url参数的时候拼接下
版权声明
由 durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 博客( https://www.xiaorongmao.com ),版权所有,侵权必究。