前提条件
1 已经注册了自己的企业微信 企业
2 自己的企业微信添加了pushplus 推送应用
func push() {
//获取公网ip
req, err := http.NewRequest(http.MethodGet, "http://ip.me/", nil)
req.Header.Set("User-Agent", "curl/7.58.0")
req.Header.Set("Accept", "*/*")
cli := http.Client{
Timeout: time.Second * 30,
Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment,
TLSHandshakeTimeout: time.Second * 10,
},
}
resp, err := cli.Do(req)
if err != nil {
fmt.Printf("get access_token err[%v]", err)
return
}
if resp.StatusCode != http.StatusOK {
return
}
bIp, err := ioutil.ReadAll(resp.Body)
if err != nil {
return
}
bIp = bytes.TrimSpace(bIp)
fmt.Printf("ip=[%s]\n", bIp)
//获取企业微信应用access_token
res, err := http.Get("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=你自己的企业Id&corpsecret=你自己的企业应用sec")
if err != nil {
fmt.Printf("get access_token err[%v]", err)
return
}
if res.StatusCode != http.StatusOK {
return
}
bRes, err := ioutil.ReadAll(res.Body)
if err != nil {
return
}
o := struct {
ErrCode int `json:"errcode"`
ErrMsg string `json:"errmsg"`
AccessToken string `json:"access_token"`
ExpiresIn int `json:"expires_in"`
}{}
err = json.Unmarshal(bRes, &o)
if err != nil {
return
}
tmpl := `{
"touser" : "@all",
"msgtype" : "mpnews",
"agentid" : 1000002,
"mpnews" : {
"articles":[
{
"title": "公司IP地址",
"thumb_media_id": "企业微信上传图片素材后,点击另存为可以获取到这个图片id,推送图文消息的缩略图",
"author": "作者",
"content": "%s<br/><br/><a>http://%s:5556/</a>",
"digest": "%s"
}
]
},
"safe":0,
"enable_id_trans": 0,
"enable_duplicate_check": 0,
"duplicate_check_interval": 1800
}`
content := fmt.Sprintf(tmpl, bIp, bIp, bIp)
fmt.Printf("content=[%s]\n", content)
uri := fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s", o.AccessToken)
res, err = http.Post(uri, "application/json", bytes.NewReader([]byte(content)))
if err != nil {
fmt.Println(err)
return
}
if res.StatusCode != http.StatusOK {
return
}
bRes, err = ioutil.ReadAll(res.Body)
fmt.Printf("res=[%s]\n", bRes)
}