No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

408 líneas
16KB

  1. package main
  2. import (
  3. "encoding/json"
  4. "log"
  5. )
  6. type templatesIDInfo struct {
  7. EnglishID string `json:"english_id"` //never change
  8. ChineseID string `json:"chinese_id"` //can recreate new template from wechat library
  9. TemplateID string `json:"template_id"` //dynamically assigned by wechat
  10. }
  11. type sendTemplateMsg struct {
  12. ToUser string `json:"touser"`
  13. TemplateID string `json:"template_id"`
  14. URL string `json:"url"`
  15. Data map[string]templateMsgKeyword `json:"data"`
  16. }
  17. type templateMsgKeyword struct {
  18. Value string `json:"value"`
  19. Color string `json:"color"`
  20. }
  21. //WechatTemplates Message templates and their ID
  22. var WechatTemplates = map[string]templatesIDInfo{
  23. "account_balance": {"01", "账户余额提醒", "-ahcu4myuJyf2FKW-eq7jdgwEyOeXA8wP4VzixRnUtQ"},
  24. "join_volunteer": {"02", "成功加入志愿者通知", "1xgZoxZgnebXAddQ_MXSThpZt3bJ_e4XonCf2F4EETY"},
  25. "join_team": {"03", "团队加入成功通知", "3Jw3jdlbDOK9ggWFcDfmi2QkytSJP4YjYWrBByWT-0M"},
  26. "checkin_success": {"04", "签到成功提醒", "8KZLIQnB5e0QJWTtEeSOxGKHoxMaB5T1_GA8iDSLiI4"},
  27. "meeting_reminder": {"05", "会议通知", "8goDRUgmfxGWZgZQQCmveXqSnnqeqymIf6Rm1Ywfxsk"},
  28. "checking_reminder": {"06", "签到提醒", "RQ9hQLoz8DkVRowPg-RmUD3zw9pi9QsEuzDtgfHm8sc"},
  29. "enroll_success": {"07", "活动报名成功提醒", "S1tLShojLb9hpofSdaUAF9HNADo9gcwuWkYqkLzWPP4"},
  30. "form_fillup_done": {"08", "录入完整提醒", "X82K3kvOhbOLmMjtKJzAhKnLUi1C0xQFab2mqs30H1k"},
  31. "memberfee_reminder": {"09", "会员缴费提醒", "i40L7lXUsUK_hSs8quTwDelbXAigOGAPxkSe23Fg8Hk"},
  32. "payment_successful": {"10", "缴费成功通知", "ubMQT9db4HgUCZrYiei20lr25Be3oOYT3YziOFG_PdI"},
  33. "checkin_failure": {"11", "签到失败提醒", "x0oZxM05A7DKKxQOt6x1AvgbKC0W1G7l2nwMy65rD0w"},
  34. "inform_collection": {"12", "物品领取通知", "y4SUrN75QwWCmQfw2gLwgLzeTbhqrSxTm-GkxR16Pro"},
  35. "join_community": {"13", "成功加入社群提醒", "yNKEqc7n-h1Y1DytmjUT5-H4s1zBK4nBIrYb8_jc2gM"},
  36. "application_result": {"14", "申请结果通知", "Cquuz_AFxdCb1hpZo_UN1S6-dCv_axLJI6osLU2quBE"},
  37. }
  38. func kfSendTemplateMsg(touser, templateid, url string, data map[string]templateMsgKeyword) (resp string, err error) {
  39. s := sendTemplateMsg{}
  40. s.ToUser = touser
  41. s.TemplateID = templateid
  42. s.Data = data
  43. s.URL = url
  44. //marshal
  45. j, _ := json.Marshal(s)
  46. log.Println(string(j))
  47. //send
  48. u := getTemplatePOSTURL()
  49. return postJSON(j, u)
  50. }
  51. func getTemplatePOSTURL() string {
  52. atk, _ := GetAccessToken()
  53. return "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + atk
  54. }
  55. //中文,英文,匹配一个就行
  56. func getTemplateIDByName(name string) string {
  57. for k, v := range WechatTemplates {
  58. if v.ChineseID == name {
  59. return v.TemplateID
  60. }
  61. if k == name {
  62. return v.TemplateID
  63. }
  64. }
  65. return ""
  66. }
  67. //模板编号 01 成功加入志愿者通知
  68. func templateSendJoinVolunteer(toUser, url, first, remark, name, staffID, joinDate, totalCount, totalTime string) (resp string, err error) {
  69. // {{first.DATA}}
  70. // 姓名:{{keyword1.DATA}}
  71. // 工号:{{keyword2.DATA}}
  72. // 加入时间:{{keyword3.DATA}}
  73. // 参与次数:{{keyword4.DATA}}
  74. // 累计时间:{{keyword5.DATA}}
  75. // {{remark.DATA}}
  76. // 您已成功加入志愿者
  77. // 姓名:黄竹
  78. // 工号:317500267
  79. // 加入时间:2008年8月
  80. // 参与次数:168次
  81. // 累计时间:564小时
  82. // 感谢您对XX公益事业的支持,欢迎您再次参加我们活动!
  83. tid := getTemplateIDByName("join_volunteer")
  84. data := map[string]templateMsgKeyword{}
  85. data["first"] = templateMsgKeyword{first, "#173177"}
  86. data["keyword1"] = templateMsgKeyword{name, "#173177"}
  87. data["keyword2"] = templateMsgKeyword{staffID, "#173177"}
  88. data["keyword3"] = templateMsgKeyword{joinDate, "#173177"}
  89. data["keyword4"] = templateMsgKeyword{totalCount, "#173177"}
  90. data["keyword5"] = templateMsgKeyword{totalTime, "#173177"}
  91. data["remark"] = templateMsgKeyword{remark, "#FF0000"}
  92. return kfSendTemplateMsg(toUser, tid, url, data)
  93. }
  94. //模板编号 02 团队加入成功通知
  95. func templateSendJoinTeam(toUser, url, first, remark, teamname, joinDate string) (resp string, err error) {
  96. // {{first.DATA}}
  97. // 团队名称:{{keyword1.DATA}}
  98. // 加入时间:{{keyword2.DATA}}
  99. // {{remark.DATA}}
  100. // 您已成功加入团队!
  101. // 团队名称:爱心志愿者团队
  102. // 加入时间:2017-1-11 8:18:18
  103. // 可进入我的团队查看详情
  104. tid := getTemplateIDByName("join_team")
  105. data := map[string]templateMsgKeyword{}
  106. data["first"] = templateMsgKeyword{first, "#173177"}
  107. data["keyword1"] = templateMsgKeyword{teamname, "#173177"}
  108. data["keyword2"] = templateMsgKeyword{joinDate, "#173177"}
  109. data["remark"] = templateMsgKeyword{remark, "#FF0000"}
  110. return kfSendTemplateMsg(toUser, tid, url, data)
  111. }
  112. //模板编号 03 签到成功提醒
  113. func templateSendCheckinSuccess(toUser, url, first, remark, activity, date, venue string) (resp string, err error) {
  114. // {{first.DATA}}
  115. // 活动:{{keyword1.DATA}}
  116. // 时间:{{keyword2.DATA}}
  117. // 地点:{{keyword3.DATA}}
  118. // {{remark.DATA}}
  119. // 您好,您已签到成功。
  120. // 活动:李大钊青年干校第2期
  121. // 时间:2016.5.28
  122. // 地点:多功能报告厅
  123. // 请服从工作人员安排,有序就坐。成功加入社群提醒
  124. tid := getTemplateIDByName("checkin_success")
  125. data := map[string]templateMsgKeyword{}
  126. data["first"] = templateMsgKeyword{first, "#173177"}
  127. data["keyword1"] = templateMsgKeyword{activity, "#173177"}
  128. data["keyword2"] = templateMsgKeyword{date, "#173177"}
  129. data["keyword3"] = templateMsgKeyword{venue, "#173177"}
  130. data["remark"] = templateMsgKeyword{remark, "#FF0000"}
  131. return kfSendTemplateMsg(toUser, tid, url, data)
  132. }
  133. //模板编号 04 会议通知
  134. func templateSendMeetingReminder(toUser, url, first, remark, date, subject, venue string) (resp string, err error) {
  135. // {{first.DATA}}
  136. // 会议时间:{{keyword1.DATA}}
  137. // 会议主题:{{keyword2.DATA}}
  138. // 会议地点:{{keyword3.DATA}}
  139. // {{remark.DATA}}
  140. // 你好
  141. // 会议时间:2015年7月10日
  142. // 会议主题:户籍相关会议
  143. // 会议地点:丰产路派出所5楼501
  144. // 请按时参加会议
  145. tid := getTemplateIDByName("meeting_reminder")
  146. data := map[string]templateMsgKeyword{}
  147. data["first"] = templateMsgKeyword{first, "#173177"}
  148. data["keyword1"] = templateMsgKeyword{date, "#173177"}
  149. data["keyword2"] = templateMsgKeyword{subject, "#173177"}
  150. data["keyword3"] = templateMsgKeyword{venue, "#173177"}
  151. data["remark"] = templateMsgKeyword{remark, "#FF0000"}
  152. return kfSendTemplateMsg(toUser, tid, url, data)
  153. }
  154. //模板编号 05 签到提醒
  155. func templateSendCheckinReminder(toUser, url, first, remark, name, subject, time string) (resp string, err error) {
  156. // {{first.DATA}}
  157. // 签到姓名:{{keyword1.DATA}}
  158. // 签到内容:{{keyword2.DATA}}
  159. // 签到时间:{{keyword3.DATA}}
  160. // {{remark.DATA}}
  161. // 阅读任务提醒
  162. // 签到姓名:张三
  163. // 签到内容:阅读行动第1天,别忘了打卡签到。
  164. // 签到时间:2016年6月12日 9:00
  165. // 女子之道,乃是独立,半途折返,是为耻辱。——苏枕书《京都第五年》 回复书名了解更多 回复‘取消阅读提醒’,停止推送
  166. tid := getTemplateIDByName("checking_reminder")
  167. data := map[string]templateMsgKeyword{}
  168. data["first"] = templateMsgKeyword{first, "#173177"}
  169. data["keyword1"] = templateMsgKeyword{name, "#173177"}
  170. data["keyword2"] = templateMsgKeyword{subject, "#173177"}
  171. data["keyword3"] = templateMsgKeyword{time, "#173177"}
  172. data["remark"] = templateMsgKeyword{remark, "#FF0000"}
  173. return kfSendTemplateMsg(toUser, tid, url, data)
  174. }
  175. //模板编号 06 活动报名成功提醒成功加入社群提醒
  176. func templateSendEnrollSuccess(toUser, url, first, remark, activity, host, venue, date string) (resp string, err error) {
  177. // {{first.DATA}}
  178. // 活动名称:{{keyword1.DATA}}
  179. // 主办方:{{keyword2.DATA}}
  180. // 活动地点:{{keyword3.DATA}}
  181. // 活动时间:{{keyword4.DATA}}
  182. // {{remark.DATA}}TestSendTemplateMsgFormFillupDone
  183. // XXX,您已经报名成功
  184. // 活动名称:公益啦网络平台培训
  185. // 主办方:苏州联益信息
  186. // 活动地点:烽火路80号
  187. // 活动时间:2016年3月8日 09:30 ~ 16:30
  188. // 感谢您的参与,点击查看活动详情
  189. tid := getTemplateIDByName("enroll_success")
  190. data := map[string]templateMsgKeyword{}
  191. data["first"] = templateMsgKeyword{first, "#173177"}
  192. data["keyword1"] = templateMsgKeyword{activity, "#173177"}
  193. data["keyword2"] = templateMsgKeyword{host, "#173177"}
  194. data["keyword3"] = templateMsgKeyword{venue, "#173177"}
  195. data["keyword4"] = templateMsgKeyword{date, "#173177"}
  196. data["remark"] = templateMsgKeyword{remark, "#FF0000"}
  197. return kfSendTemplateMsg(toUser, tid, url, data)
  198. }
  199. //模板编号 07 录入完整提醒
  200. func templateSendFormFillupDone(toUser, url, first, remark, description, verificationDate string) (resp string, err error) {
  201. // {{first.DATA}}
  202. // 录入情况:{{keyword1.DATA}}
  203. // 审核时间:{{keyword2.DATA}}
  204. // {{remark.DATA}}
  205. // 您好,类克项目办公室通知您:
  206. // 录入情况:录入完整
  207. // 审核时间:2016-11-29
  208. // 您的援助申请材料录入完整,进入审核环节。
  209. tid := getTemplateIDByName("form_fillup_done")
  210. data := map[string]templateMsgKeyword{}
  211. data["first"] = templateMsgKeyword{first, "#173177"}
  212. data["keyword1"] = templateMsgKeyword{description, "#173177"}
  213. data["keyword2"] = templateMsgKeyword{verificationDate, "#173177"}
  214. data["remark"] = templateMsgKeyword{remark, "#FF0000"}
  215. return kfSendTemplateMsg(toUser, tid, url, data)
  216. }
  217. //模板编号 08 会员缴费提醒
  218. func templateSendMemberFeeReminder(toUser, url, first, remark, name, paymentDeadline, paymentValidDate, paymentAmount string) (resp string, err error) {
  219. // {{first.DATA}}
  220. // 姓名:{{keyword1.DATA}}
  221. // 缴费时间:{{keyword2.DATA}}
  222. // 有效日期:{{keyword3.DATA}}
  223. // 缴费金额:{{keyword4.DATA}}
  224. // {{remark.DATA}}
  225. // 您好,你已经成为会员
  226. // 姓名:郑成功
  227. // 缴费时间:2016年7月21日 18:36
  228. // 有效日期:2019年7月21日 18:36
  229. // 缴费金额:60元
  230. // 感谢您的使用。
  231. tid := getTemplateIDByName("memberfee_reminder")
  232. data := map[string]templateMsgKeyword{}
  233. data["first"] = templateMsgKeyword{first, "#173177"}
  234. data["keyword1"] = templateMsgKeyword{name, "#173177"}
  235. data["keyword2"] = templateMsgKeyword{paymentDeadline, "#173177"}
  236. data["keyword3"] = templateMsgKeyword{paymentValidDate, "#173177"}
  237. data["keyword4"] = templateMsgKeyword{paymentAmount, "#173177"}
  238. data["remark"] = templateMsgKeyword{remark, "#FF0000"}
  239. return kfSendTemplateMsg(toUser, tid, url, data)
  240. }
  241. //模板编号 09 缴费成功通知
  242. func templateSendPaymentAck(toUser, url, first, remark, account, addr, amountPaid, balance, paidTo string) (resp string, err error) {
  243. // {{first.DATA}}
  244. // 户号:{{keyword1.DATA}}
  245. // 地址:{{keyword2.DATA}}
  246. // 支付金额:{{keyword3.DATA}}
  247. // 当前余额:{{keyword4.DATA}}
  248. // 收款单位:{{keyword5.DATA}}
  249. // {{remark.DATA}}
  250. // 您好,您已缴费成功
  251. // 户号:13000008
  252. // 地址:通园新村1栋1单元101
  253. // 支付金额:50.00元
  254. // 当前余额:51.88元
  255. // 收款单位:吴江港华燃气
  256. // 如有疑问,详询吴江港华燃气,服务热线0512-63405795
  257. tid := getTemplateIDByName("payment_successful")
  258. data := map[string]templateMsgKeyword{}
  259. data["first"] = templateMsgKeyword{first, "#173177"}
  260. data["keyword1"] = templateMsgKeyword{account, "#173177"}
  261. data["keyword2"] = templateMsgKeyword{addr, "#173177"}
  262. data["keyword3"] = templateMsgKeyword{amountPaid, "#173177"}
  263. data["keyword4"] = templateMsgKeyword{balance, "#173177"}
  264. data["keyword5"] = templateMsgKeyword{paidTo, "#173177"}
  265. data["remark"] = templateMsgKeyword{remark, "#FF0000"}
  266. return kfSendTemplateMsg(toUser, tid, url, data)
  267. }
  268. //模板编号 10 签到失败提醒
  269. func templateSendCheckinFail(toUser, url, first, remark, activity, date string) (resp string, err error) {
  270. // {{first.DATA}}
  271. // 活动名称:{{keyword1.DATA}}
  272. // 签到时间:{{keyword2.DATA}}
  273. // {{remark.DATA}}
  274. // 亲爱的川大校友,没有找到您的电子签到信息
  275. // 活动名称:川大川创联新春团拜会
  276. // 签到时间:2014年7月21日 18:36
  277. // 点击详情完成签到
  278. tid := getTemplateIDByName("checkin_failure")
  279. data := map[string]templateMsgKeyword{}
  280. data["first"] = templateMsgKeyword{first, "#173177"}
  281. data["keyword1"] = templateMsgKeyword{activity, "#173177"}
  282. data["keyword2"] = templateMsgKeyword{date, "#173177"}
  283. data["remark"] = templateMsgKeyword{remark, "#FF0000"}
  284. return kfSendTemplateMsg(toUser, tid, url, data)
  285. }
  286. //模板编号 11 物品领取通知
  287. func templateSendInformCollection(toUser, url, first, remark, date, details string) (resp string, err error) {
  288. // {{first.DATA}}
  289. // 领取时间:{{keyword1.DATA}}
  290. // 领取明细:{{keyword2.DATA}}
  291. // {{remark.DATA}}
  292. // 您获得的物品可至网店领取
  293. // 领取时间:3月12日-3月17日
  294. // 领取内容:新市民卡
  295. // 如无法至网店领取,可致电预约上门
  296. tid := getTemplateIDByName("inform_collection")
  297. data := map[string]templateMsgKeyword{}
  298. data["first"] = templateMsgKeyword{first, "#173177"}
  299. data["keyword1"] = templateMsgKeyword{date, "#173177"}
  300. data["keyword2"] = templateMsgKeyword{details, "#173177"}
  301. data["remark"] = templateMsgKeyword{remark, "#FF0000"}
  302. return kfSendTemplateMsg(toUser, tid, url, data)
  303. }
  304. //模板编号 12 成功加入社群提醒
  305. func templateSendJoinCommunity(toUser, url, first, remark, communityName, joinDate string) (resp string, err error) {
  306. // {{first.DATA}}
  307. // 社群名称:{{keyword1.DATA}}
  308. // 加入时间:{{keyword2.DATA}}
  309. // {{remark.DATA}}
  310. // 恭喜您已加入社群,欢迎访问主页参加最新活动
  311. // 社群名称:天天开心读书会
  312. // 加入时间:2014年7月21日 18:36
  313. // 感谢您的加入,祝您工作和生活愉快!
  314. tid := getTemplateIDByName("join_community")
  315. data := map[string]templateMsgKeyword{}
  316. data["first"] = templateMsgKeyword{first, "#173177"}
  317. data["keyword1"] = templateMsgKeyword{communityName, "#173177"}
  318. data["keyword2"] = templateMsgKeyword{joinDate, "#173177"}
  319. data["remark"] = templateMsgKeyword{remark, "#FF0000"}
  320. return kfSendTemplateMsg(toUser, tid, url, data)
  321. }
  322. func templateSendAccountBalance(toUser, url, first, remark, name, addr, card, balance string) (resp string, err error) {
  323. // {{first.DATA}}
  324. // 户名:{{keyword1.DATA}}
  325. // 地址:{{keyword2.DATA}}
  326. // 卡号:{{keyword3.DATA}}
  327. // 余额:{{keyword4.DATA}}
  328. // {{remark.DATA}}
  329. // 您好,截止上月底您的便民卡余额信息如下
  330. // 户名:王一二
  331. // 地址:市南区宁夏路288号
  332. // 卡号:10000009
  333. // 余额:13.00元
  334. // 感谢您的使用。
  335. tid := getTemplateIDByName("account_balance")
  336. data := map[string]templateMsgKeyword{}
  337. data["first"] = templateMsgKeyword{first, "#173177"}
  338. data["keyword1"] = templateMsgKeyword{name, "#173177"}
  339. data["keyword2"] = templateMsgKeyword{addr, "#173177"}
  340. data["keyword3"] = templateMsgKeyword{card, "#173177"}
  341. data["keyword4"] = templateMsgKeyword{balance, "#173177"}
  342. data["remark"] = templateMsgKeyword{remark, "#FF0000"}
  343. return kfSendTemplateMsg(toUser, tid, url, data)
  344. }
  345. func templateSendApplicationResult(toUser, url, first, remark, name, application string) (resp string, err error) {
  346. // {{first.DATA}}
  347. // 申请人:{{keyword1.DATA}}
  348. // 申请类型:{{keyword2.DATA}}
  349. // {{remark.DATA}}
  350. // 李先生,您好!
  351. // 申请人:张三
  352. // 申请类型:预约会见法官
  353. // 您的申请已通过!请到个人中心查看详情。
  354. tid := getTemplateIDByName("application_result")
  355. data := map[string]templateMsgKeyword{}
  356. data["first"] = templateMsgKeyword{first, "#173177"}
  357. data["keyword1"] = templateMsgKeyword{name, "#173177"}
  358. data["keyword2"] = templateMsgKeyword{application, "#173177"}
  359. data["remark"] = templateMsgKeyword{remark, "#FF0000"}
  360. return kfSendTemplateMsg(toUser, tid, url, data)
  361. }