Go调用企业微信API发送自定义信息

  • 使用方法
  • # 编译成可执行文件之后,直接用命令调用传递内容即可
    
    编译:go build send_message.go
    
    使用:
    
    ./send_message "这是一条测试消息\n测试回车"
    
    • 代码

    package main
    
    import (
        "bytes"
        "github.com/json-iterator/go"
        "io/ioutil"
        "net/http"
        "os"
        "strings"
    )
    
    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, _ := client.Get(gettoken_url)
        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)
    
    }
    

    原文地址:http://blog.51cto.com/bigboss/2337937

    时间: 2024-08-01 01:07:12

    Go调用企业微信API发送自定义信息的相关文章

    python调用企业微信接口发送报警信息

    在运维的日常工作中常常需要同监控打交道,而监控中最常用的功能介绍报警,最简单的方式就是使用邮件进行报警,但是邮件报警不是特别及时(像我这种一天都不怎么看邮件的估计得等服务挂了才知道),所以我们需要一种及时通信工具进行报警,常见的有短信,微信公众号,QQ公众号等,但是这三种方式在报警及时的同时也会在一定程度上打扰到我们的生活,那么有没有一种既能及时传递信息又能不打扰到我们日常的生活的那??  腾讯在微信之外还推出了一款类似于微信的应用,即使企业微信.企业微信一般只用于办公所有不同可能会影响我们的日

    python调用企业微信API

    #!/usr/bin/env python # -*- coding:utf-8 -*- # 2017-07-25 编写 import json import sys import urllib, urllib2 """ CorpID 企业ID Secret 应用密钥 """ CorpID  = '' Secret  = '' touser  = '@all' content = '' #获取access_token def getToken(C

    Python3 使用企业微信 API 发送消息

    #coding=utf-8 import requests import json Secret = "TUbfeW8nFQakwOS4czm13SCnxSUPOqY2K0XHtM8XLT34" corpid = 'wwfe776a5bc7b90190a' url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={}&corpsecret={}' getr = requests.get(url=url.format(

    python调用企业微信接口发送群聊消息代码参考

    # Author: sea 2019 import requestsimport jsonimport time class WebchatUtil: corpid = '必须填写你自己申请的' secret = '固定填写你自己申请的' access_token = '' @staticmethod def init_access_token(): # 获取token,必须最长两个小时换一次7200秒 url = 'https://qyapi.weixin.qq.com/cgi-bin/get

    python利用企业微信api来进行发送自定义报警的类实现

    python利用企业微信api来进行发送自定义报警的类实现 企业微信注册 打开http://work.weixin.qq.com/企业微信主页: 点击企业注册: 填写相关信息,营业执照和注册号可以不用填,直接下一步,按照提示操作即可: 注册完成后,登陆,就显示如下界面: 点击我的企业标签: 看到如上界面,复制CorpID对应的值: 点击企业应用: 点击 创建应用: 填写对应内容,点击创建应用即可: 然后再点击企业应用,就可以在自建应用里看到自己创建的应用: 点击应用图标,看到如下图 复制Agen

    面向对象的全套“企业微信”api接口的代码实现,网上太多“面向过程”微信api接口的代码,这个开源给需要的人用

    有段时间没有写文章了. 一直以来,微信的热门是看得到的,很多人都需要与微信的api对接. 今天我这里就分享全套的企业微信api接口的代码. 关于微信api,网上已经有很多实现的了. 但是我今天之所以还写这个,是因为网上基本上找不到面向对象的api接口实现的编程,几乎都是“面向过程”的. 本文章的代码,也许能带给你极大的方便,以及非常方便的扩展和应用. 1.如下图,在你的业务逻辑层中,将本文章附件的Weixin代码文件夹整套放进去 2.在你的页面中,类似于下图,插入下面的代码即可实现调用. 下图例

    01: 企业微信API学习

    1.1 术语介绍 参考文档:http://work.weixin.qq.com/api/doc#10013 1.corpid:ww2f9a1a85f1806981 每个企业都拥有唯一的corpid,获取此信息可在管理后台"我的企业"-"企业信息"下查看 2.userid:XiaoNaiQiang 每个成员都有唯一的userid,即所谓"帐号".在管理后台->"通讯录"->点进某个成员的详情页 3.部门id:1  

    企业微信应用发送消息接口调用次数超过限制

    2019年12月19日应用发消息接口失败提醒: 应用:监控系统报警 调用接口:/cgi-bin/message/send(影响人数:17) 错误码: 45009:接口调用超过限制(错误次数:5164) 为避免影响正常使用,请你或相关的IT负责人尽快排查修复.如有疑问,可咨询企业微信客服团队. 垃圾告警信息多,导致接口调用次数耗光,需要修改触发器的阈值,或者修改表达式, 当前微信的应用发送告警数量的限制是 企业微信人数上限*30 原文地址:https://www.cnblogs.com/0916m

    Java企业微信开发_04_自定义菜单

    一.本节要点 1.菜单相关实体类的封装 参考官方文档中的请求包的内容,对菜单相关实体类进行封装. 这里需要格外注意的是,企业微信中请求包的数据是Json字符串格式的,而不是xml格式.关于json序列化的问题请参考上一节   Java企业微信开发_03_通讯录同步 2.创建菜单的接口 public static String create_menu_url = "https://qyapi.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS