Golang实现通过微信接收告警消息

Golang实现通过微信接收告警消息,第1张

概述首先需要注册微信企业公众号,选团队的可以不使用认证 如图进入公众平台 选择设置.里面有CorpID 和 SecretID 这个发送的时候需要用到. 下面就是使用提供的API 开始发送信息了.具体自己可以看开发者中心里面的文档. package mainimport ( "bufio" "bytes" "encoding/json" "errors" "f

首先需要注册微信企业公众号,选团队的可以不使用认证

如图进入公众平台 选择设置.里面有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实现通过微信接收告警消息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1282811.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存