婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Go語言實現釘釘發送通知

Go語言實現釘釘發送通知

熱門標簽:南通如皋申請開通400電話 浙江高速公路地圖標注 中國地圖標注省會高清 學海導航地圖標注 江西轉化率高的羿智云外呼系統 廣州呼叫中心外呼系統 高德地圖標注口訣 西部云谷一期地圖標注 地圖標注的汽車標

具體代碼如下所示:

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語言實現釘釘發送通知》,本文關鍵詞  語言,實現,釘釘,發送,通知,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Go語言實現釘釘發送通知》相關的同類信息!
  • 本頁收集關于Go語言實現釘釘發送通知的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 黄山市| 隆化县| 临夏县| 信阳市| 科技| 奉节县| 曲阳县| 娄烦县| 安仁县| 固镇县| 汝城县| 固安县| 永登县| 神池县| 西贡区| 江华| 濮阳县| 景泰县| 额敏县| 呼玛县| 蓬莱市| 灌南县| 青州市| 义乌市| 铜川市| 南溪县| 柳河县| 广西| 屯门区| 葵青区| 许昌县| 区。| 莱阳市| 象州县| 义乌市| 鄂州市| 弥勒县| 富民县| 沐川县| 洮南市| 明溪县|