package main import ( "encoding/json" "fmt" ) func getKfSendURL() (url string) { atk, _ := GetAccessToken() url = fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=%s", atk) return } type sendTxtMsg struct { ToUser string `json:"touser"` MsgType string `json:"msgtype"` Text struct { Content string `json:"content"` } `json:"text"` } func kfSendTxt(user, txt string) { u := getKfSendURL() s := sendTxtMsg{} s.MsgType = "text" s.Text.Content = txt s.ToUser = user j, _ := json.Marshal(s) postJSON(j, u) } type sendPicMsg struct { ToUser string `json:"touser"` MsgType string `json:"msgtype"` Image struct { MediaID string `json:"media_id"` } `json:"image"` } func kfSendPic(user, pic string) { mID := uploadImage(pic) kfSendPicByMediaID(user, mID) } func kfSendPicByMediaID(user, mediaID string) { u := getKfSendURL() s := sendPicMsg{} s.ToUser = user s.MsgType = "image" s.Image.MediaID = mediaID j, _ := json.Marshal(s) postJSON(j, u) } type sendVoiceMsg struct { ToUser string `json:"touser"` MsgType string `json:"msgtype"` Voice struct { MediaID string `json:"media_id"` } `json:"voice"` } func kfSendVoice(user, path string) { mID := uploadVoice(path) kfSendVoiceByMediaID(user, mID) } func kfSendVoiceByMediaID(user, mediaID string) { u := getKfSendURL() s := sendVoiceMsg{} s.ToUser = user s.MsgType = "voice" s.Voice.MediaID = mediaID j, _ := json.Marshal(s) postJSON(j, u) } type sendVideoMsg struct { ToUser string `json:"touser"` MsgType string `json:"msgtype"` Video struct { MediaID string `json:"media_id"` ThumbMediaID string `json:"thumb_media_id"` Title string `json:"title"` Description string `json:"description"` } `json:"video"` } func kfSendVideo(user, path, title, description, thumb string) { mID := uploadVideo(path) tID := uploadThumb(thumb) kfSendVideoByMediaID(user, mID, title, description, tID) } func kfSendVideoByMediaID(user, mediaID, title, description, tID string) { u := getKfSendURL() s := sendVideoMsg{} s.ToUser = user s.MsgType = "video" s.Video.MediaID = mediaID s.Video.Description = description s.Video.Title = title s.Video.ThumbMediaID = tID j, _ := json.Marshal(s) postJSON(j, u) }