forked from omigo/weixin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtemplate.go
117 lines (106 loc) · 3.23 KB
/
template.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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package weixin
import "fmt"
// 模板消息接口
const (
TamplateSetIndustryURL = "https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token=%s"
TemplateAddTemplateURL = "https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=%s"
TemplateSendTemplateMsgURL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=%s"
)
// SetIndustry 设置所属行业
/*
行业代码查询
主行业 副行业 代码
IT科技 互联网/电子商务 1
IT科技 IT软件与服务 2
IT科技 IT硬件与设备 3
IT科技 电子技术 4
IT科技 通信与运营商 5
IT科技 网络游戏 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
*/
func SetIndustry(primary, secondary int) error {
url := fmt.Sprintf(TamplateSetIndustryURL, AccessToken())
body := fmt.Sprintf(`{"industry_id1":"%d","industry_id2":"%d"}`, primary, secondary)
return Post(url, []byte(body), nil)
}
// TemplateId 模板ID with Error
type TemplateId struct {
WXError
TemplateId string `json:"template_id"`
}
// AddTemplate 添加模板,获得模板ID
func AddTemplate(shortId string) (templateId string, err error) {
url := fmt.Sprintf(TemplateAddTemplateURL, AccessToken())
js := fmt.Sprintf(`{"template_id_short":"%s"}`, shortId)
t := &TemplateId{}
err = Post(url, []byte(js), t)
return t.TemplateId, err
}
// TemplateMsg 模板消息
type TemplateMsg struct {
ToUser string `json:"touser"`
TemplateId string `json:"template_id"`
URL string `json:"url,omitempty"`
Data TemplateData `json:"data"`
}
// TemplateData 模板消息内容
type TemplateData struct {
First KeywordPair `json:"first"`
Keyword1 KeywordPair `json:"keyword1"`
Keyword2 KeywordPair `json:"keyword2,omitempty"`
Keyword3 KeywordPair `json:"keyword3,omitempty"`
Keyword4 KeywordPair `json:"keyword4,omitempty"`
Keyword5 KeywordPair `json:"keyword5,omitempty"`
Remark KeywordPair `json:"value"`
}
// KeywordPair 模板消息内容值
type KeywordPair struct {
Value string `json:"value"`
Color string `json:"color,omitempty"`
}
// TempplateMsgId 模版消息 Id
type TempplateMsgId struct {
WXError
MsgId int `json:"msgid"`
}
// SendTemplateMsg 发送模板消息,返回消息 Id
func SendTemplateMsg(m *TemplateMsg) (msgId int, err error) {
url := fmt.Sprintf(TemplateSendTemplateMsgURL, AccessToken())
mid := &TempplateMsgId{}
err = Post(url, m, mid)
return mid.MsgId, err
}