分享
  1. 首页
  2. 文章

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

三和梁朝伟 · · 5385 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

  • 使用方法
# 编译成可执行文件之后,直接用命令调用传递内容即可
编译: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)
}

有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:三和梁朝伟

查看原文:Go调用企业微信API发送自定义信息

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
5385 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏