• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Go语言实现钉钉发送通知

    具体代码如下所示:

    package main
    import (
      "bufio"
      "io"
      "fmt"
      "io/ioutil"
      "os/exec"
      "net/http"
      "os"
      "strings"
    )
    func GetKey() (timestamp string ,sign string, err error){
      cmd := exec.Command("/bin/python", "/application/scripts/hezhong_host_status/aaa.py")
      stdout , err := cmd.StdoutPipe()
      if err != nil {
       fmt.Println("Error:can not obtain stdout pipe for command:%s \n", err)
       return timestamp , sign, err
      }
      if err := cmd.Start() ; err != nil {
       fmt.Println("Error:The command is err ",err)
       return timestamp, sign,err
      }
      var Key []string
      //读取所有输出
      bytes := bufio.NewReader(stdout)
      for {
       line ,err:= bytes.ReadString('\n')
       if err == io.EOF{
         break
       }
       if err != nil {
         fmt.Println("Read Err:",err)
       }
       Key = append(Key,line)
      }
      if err := cmd.Wait();err!= nil{
       fmt.Println("Wait",err.Error())
       return timestamp, sign ,err
      }
      timestamp = Key[0]
      sign = Key[1]
      return timestamp ,sign ,nil
    }
    func SendDingMsg(msg string) {
      //请求地址模板
      timestamp , sign , err := GetKey()
      if err != nil {
       fmt.Println("Get Key Err:",err)
      }
      timestamp = strings.TrimRight(timestamp, "\n")
      sign = strings.TrimRight(sign, "\n")
      //timestamp := time.Now().UnixNano() / 1e6
      //timestamp := int64(1572870805748)
      //sign := "oJ5SHD3IwCWVIcL78k3pgX0tfQnjDfcDZMPXAI%2BvrFE%3D"
      webHook := "https://oapi.dingtalk.com/robot/send?access_token=628d11124aef5f9efe2a8c8a6b5afa2b67ab01dxxxxxxxxxxxxxxxxxxxxx"+ "timestamp=" + timestamp + "sign=" + sign
      content := `{"msgtype": "text",
       "text": {"content": "`+ msg + `"},
            "at": {
               "atMobiles": [
                 "18301371817"
               ],
               "isAtAll": true
            }
      }`
      //创建一个请求
      req, err := http.NewRequest("POST", webHook, strings.NewReader(content))
      if err != nil {
       fmt.Println(err)
      }
      client := http.Client{}
      //设置请求头
      req.Header.Set("Content-Type", "application/json")
      req.Header.Set("User-agent","firefox")
      //发送请求
      resp, err := client.Do(req)
      //关闭请求
      defer resp.Body.Close()
      fmt.Println(resp.StatusCode)
      body,_ := ioutil.ReadAll(resp.Body)
      fmt.Println(string(body))
      if err != nil {
       fmt.Println("handle error")
      }
    }
    func main(){
      SendDingMsg(os.Args[1])
    }

    辅助Python脚本:

    #!python 2.7
    import time
    import hmac
    import hashlib
    import base64
    import urllib
    timestamp = long(round(time.time() * 1000))
    secret = 'this is secret'
    secret_enc = bytes(secret).encode('utf-8')
    string_to_sign = '{}\n{}'.format(timestamp, secret)
    string_to_sign_enc = bytes(string_to_sign).encode('utf-8')
    hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
    sign = urllib.quote_plus(base64.b64encode(hmac_code))
    print(timestamp)
    print(sign)

    总结

    以上所述是小编给大家介绍的Go语言实现钉钉发送通知,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
    如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

    您可能感兴趣的文章:
    • go开发alertmanger实现钉钉报警
    • Go语言使用钉钉机器人推送消息的实现示例
    上一篇:详解使用Go添加Nginx代理的方法示例
    下一篇:使用Go进行单元测试的实现
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Go语言实现钉钉发送通知 语言,实现,钉钉,发送,通知,