-
Notifications
You must be signed in to change notification settings - Fork 279
/
uniform_message.go
78 lines (64 loc) · 2.14 KB
/
uniform_message.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package weapp
import "github.com/medivhzhan/weapp/v3/request"
const (
apiSendUniformMessage = "/cgi-bin/message/wxopen/template/uniform_send"
)
// UniformMsgData 模板消息内容
type UniformMsgData map[string]UniformMsgKeyword
// UniformMsgKeyword 关键字
type UniformMsgKeyword struct {
Value string `json:"value"`
Color string `json:"color,omitempty"`
}
// UniformWeappTmpMsg 小程序模板消息
type UniformWeappTmpMsg struct {
TemplateID string `json:"template_id"`
Page string `json:"page"`
FormID string `json:"form_id"`
Data UniformMsgData `json:"data"`
EmphasisKeyword string `json:"emphasis_keyword,omitempty"`
}
// UniformMsgMiniprogram 小程序
type UniformMsgMiniprogram struct {
AppID string `json:"appid"`
PagePath string `json:"pagepath"`
}
// UniformMpTmpMsg 公众号模板消息
type UniformMpTmpMsg struct {
AppID string `json:"appid"`
TemplateID string `json:"template_id"`
URL string `json:"url"`
Miniprogram UniformMsgMiniprogram `json:"miniprogram"`
Data UniformMsgData `json:"data"`
}
// Miniprogram 小程序
type Miniprogram struct {
AppID string `json:"appid"`
PagePath string `json:"pagepath"`
}
// UniformMsgSender 统一服务消息
type UniformMsgSender struct {
ToUser string `json:"touser"` // 用户 openid
UniformWeappTmpMsg UniformWeappTmpMsg `json:"weapp_template_msg,omitempty"`
UniformMpTmpMsg UniformMpTmpMsg `json:"mp_template_msg,omitempty"`
}
// Send 统一服务消息
func (cli *Client) SendUniformMsg(msg *UniformMsgSender) (*request.CommonError, error) {
api := baseURL + apiSendUniformMessage
token, err := cli.AccessToken()
if err != nil {
return nil, err
}
return cli.sendUniformMsg(api, token, msg)
}
func (cli *Client) sendUniformMsg(api, token string, msg *UniformMsgSender) (*request.CommonError, error) {
api, err := tokenAPI(api, token)
if err != nil {
return nil, err
}
res := new(request.CommonError)
if err := cli.request.Post(api, msg, res); err != nil {
return nil, err
}
return res, nil
}