校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 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語言實現釘釘發送通知的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 棋牌| 新巴尔虎右旗| 灵山县| 资源县| 兴义市| 汉阴县| 云霄县| 东乌| 巫山县| 云安县| 逊克县| 张掖市| 淳安县| 日照市| 彰化市| 广宁县| 保康县| 彭水| 西昌市| 东城区| 苍梧县| 德惠市| 阿合奇县| 迭部县| 龙陵县| 那曲县| 漳州市| 南江县| 陵川县| 石狮市| 麻江县| 翼城县| 长治市| 秭归县| 松原市| 贵港市| 卢湾区| 永仁县| 房山区| 丘北县| 汉中市|