12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package util
- import (
- "bytes"
- "io/ioutil"
- "net/http"
- "os"
- "strings"
- jsoniter "github.com/json-iterator/go"
- )
- var json = jsoniter.ConfigCompatibleWithStandardLibrary
- type JSON struct {
- Access_token string `json:"access_token"`
- }
- type MESSAGES struct {
- Touser string `json:"touser"`
- Toparty string `json:"toparty"`
- Msgtype string `json:"msgtype"`
- Agentid int `json:"agentid"`
- Text struct {
- //Subject string `json:"subject"`
- Content string `json:"content"`
- } `json:"text"`
- Safe int `json:"safe"`
- }
- func Get_AccessToken(corpid, corpsecret string) string {
- gettoken_url := "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + corpid + "&corpsecret=" + corpsecret
- //print(gettoken_url)
- client := &http.Client{}
- req, e := client.Get(gettoken_url)
- if e != nil {
- panic(e)
- }
- defer req.Body.Close()
- body, _ := ioutil.ReadAll(req.Body)
- //fmt.Printf("\n%q",string(body))
- var json_str JSON
- json.Unmarshal([]byte(body), &json_str)
- //fmt.Printf("\n%q",json_str.Access_token)
- return json_str.Access_token
- }
- func Send_Message(access_token, msg string) {
- send_url := "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + access_token
- //print(send_url)
- client := &http.Client{}
- req, _ := http.NewRequest("POST", send_url, bytes.NewBuffer([]byte(msg)))
- req.Header.Set("Content-Type", "application/json")
- req.Header.Set("charset", "UTF-8")
- resp, err := client.Do(req)
- if err != nil {
- panic(err)
- }
- defer resp.Body.Close()
- //fmt.Println("response Status:", resp.Status)
- //body, _ := ioutil.ReadAll(resp.Body)
- //fmt.Println("response Body:", string(body))
- }
- func messages(touser string, toparty string, agentid int, content string) string {
- msg := MESSAGES{
- Touser: touser,
- Toparty: toparty,
- Msgtype: "text",
- Agentid: agentid,
- Safe: 0,
- Text: struct {
- //Subject string `json:"subject"`
- Content string `json:"content"`
- }{Content: content},
- }
- sed_msg, _ := json.Marshal(msg)
- //fmt.Printf("%s",string(sed_msg))
- return string(sed_msg)
- }
- func main() {
- touser := "BigBoss" //企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
- toparty := "2" //企业号中的部门id。
- agentid := 1000002 //企业号中的应用id。
- corpid := "xxxxxxxxxxxxxxxxx" //企业号的标识
- corpsecret := "exxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ///企业号中的应用的Secret
- accessToken := Get_AccessToken(corpid, corpsecret)
- content := os.Args[1]
- // fmt.Println(content)
- // 序列化成json之后,\n会被转义,也就是变成了\\n,使用str替换,替换掉转义
- msg := strings.Replace(messages(touser, toparty, agentid, content), "\\\\", "\\", -1)
- // fmt.Println(strings.Replace(msg,"\\\\","\\",-1))
- Send_Message(accessToken, msg)
- }
|