首先需要注册微信企业公众号,选团队的可以不使用认证
如图进入公众平台 选择设置.里面有CorpID 和 SecretID 这个发送的时候需要用到.
下面就是使用提供的API 开始发送信息了.具体自己可以看开发者中心里面的文档.
package mainimport ( "bufio" "bytes" "enCoding/Json" "errors" "flag" "io/IoUtil" "net/http" "os")const ( //发送消息使用导的url sendurl = `https://qyAPI.weixin.qq.com/cgi-bin/message/send?access_token=` //获取token使用导的url get_token = `https://qyAPI.weixin.qq.com/cgi-bin/gettoken?corpID=`)var requestError = errors.New("request error,check url or network")type access_token struct { Access_token string `Json:"access_token"` Expires_in int `Json:"expires_in"`}//定义一个简单的文本消息格式type send_msg struct { Touser string `Json:"touser"` toparty string `Json:"toparty"` Totag string `Json:"totag"` Msgtype string `Json:"msgtype"` AgentID int `Json:"agentID"` Text map[string]string `Json:"text"` Safe int `Json:"safe"`}type send_msg_error struct { Errcode int `Json:"errcode` Errmsg string `Json:"errmsg"`}func main() { mfile := flag.String("m","","-m msg.txt 从配置文件读取配置发送消息") touser := flag.String("t","@all","-t user 直接接收消息的用户昵称") agentID := flag.Int("i", 0,"-i 0 指定agentID") content := flag.String("c","Hello world","-c 'Hello world' 指定要发送的内容") corpID := flag.String("p","-p corpID 必须指定") corpsecret := flag.String("s","-s corpsecret 必须指定") flag.Parse() if *corpID == "" || *corpsecret == "" { flag.Usage() return } var m send_msg = send_msg{Touser: *touser,Msgtype: "text",AgentID: *agentID,Text: map[string]string{"content": *content}} if *mfile != "" { buf,err := Parse(*mfile) if err != nil { println(err.Error()) return } err = Json.Unmarshal(buf,&m) if err != nil { println(err) return } } ///-p "wx2468f5838693e123" -s "JbjkM1jYq8g3GaHjOTgj27y4n4_7Dsv4FV94I5BMRSrBsm_aTsMUVJMhGu_DFGDSF" token,err := Get_token(*corpID,*corpsecret) if err != nil { println(err.Error()) return } buf,err := Json.Marshal(m) if err != nil { return } err = Send_msg(token.Access_token,buf) if err != nil { println(err.Error()) }}//发送消息.msgbody 必须是 API支持的类型func Send_msg(Access_token string,msgbody []byte) error { body := bytes.NewBuffer(msgbody) resp,err := http.Post(sendurl+Access_token,"application/Json",body) if resp.StatusCode != 200 { return requestError } buf,_ := IoUtil.ReadAll(resp.Body) resp.Body.Close() var e send_msg_error err = Json.Unmarshal(buf,&e) if err != nil { return err } if e.Errcode != 0 && e.Errmsg != "ok" { return errors.New(string(buf)) } return nil}//通过corpID 和 corpsecret 获取token func Get_token(corpID,corpsecret string) (at access_token,err error) { resp,err := http.Get(get_token + corpID + "&corpsecret=" + corpsecret) if err != nil { return } defer resp.Body.Close() if resp.StatusCode != 200 { err = requestError return } buf,_ := IoUtil.ReadAll(resp.Body) err = Json.Unmarshal(buf,&at) if at.Access_token == "" { err = errors.New("corpID or corpsecret error.") } return}func Parse(Jsonpath string) ([]byte,error) { var zs = []byte("//") file,err := os.Open(Jsonpath) if err != nil { return nil,err } defer file.Close() var buf []byte b := bufio.NewReader(file) for { line,_,err := b.Readline() if err != nil { if err.Error() == "EOF" { break } return nil,err } line = bytes.Trimspace(line) if len(line) <= 0 { continue } index := bytes.Index(line,zs) if index == 0 { continue } if index > 0 { line = line[:index] } buf = append(buf,line...) } return buf,nil}总结
以上是内存溢出为你收集整理的Golang实现通过微信接收告警消息全部内容,希望文章能够帮你解决Golang实现通过微信接收告警消息所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)