場景
我們在使用maxcompute進行資料處理,我們會需要對上下游的資料質量作一些規則校驗,用以來識別是否有臟資料影響了我們的資料質量,
而校驗后,若是發現了臟資料,就需要第一時間通知到資料負責人,以便于資料質量負責人/資料運維角色的人員可以及時得知問題,讓他們有充分的資料對資料進行處理,盡快修正資料問題;而且告知資訊需要的是準確,有含義,才能讓人更快定位原因,
而監控資料并通知到資料質量負責人/資料運維的方式有很多,常見的有使用外置資料質量工具,但是工具類天生就很重,開發難度,后去運維對于小團隊而言是1個很不理想的方案;或者可以使用阿里云的DQC質量工具,但是該工具無法自定義訊息內容,告知資訊不友好等問題,
上面2種方式都有各自的問題,那么我們就只能自己造1個小而輕的輪子,這個輪子的實作原理是使用 odps SQL + pyodps + 釘釘群 ,其中 ODPS SQL 負責資料質量校驗并生成錯誤訊息,PYODPS 負責把訊息推送到對應的釘釘群中,
應該準備什么
1.打通maxcompute的釘釘白名單
在阿里云maxcompute管理控制臺-maxcompute專案-選中“專案配置”

在作業空間配置中,配置釘釘OPEN API的鏈接(oapi.dingtalk.com)和埠(80/443)

2.配置釘釘機器人
群機器人是釘釘群的高級擴展功能,群機器人可以將第三方服務的資訊聚合到群聊中,實作自動化的資訊同步,目前,大部分機器人在被添加后,還需要進行Webhook配置,才可正常使用,
另外,群機器人支持Webhook協議的自定義接入,例如防疫精靈機器人可以為企業提供新型冠狀病毒疫情實況推送、預防措施自動問答服務,幫助員工在新冠疫情期間獲取最新疫情、最新權威預防措施,群成員可以直接@防疫精靈機器人進行疫情實況和預防措施問答,機器人也會定時推送最新疫情給群成員,
釘釘群機器人致力于把釘釘群聊的訊息輸出到外部,以及接收外部的訊息輸入,
配置方式
1)釘釘群-智能群助手-添加機器人-自定義機器人
,輸入機器人名字并選擇要發送訊息的群,如果需要的話,可以為機器人設定一個頭像,點擊“完成”,完成后會生成Hook地址,為了安全性,可以選擇“加簽”獲取密文
2)復制機器人的webhook地址和簽名
https://oapi.dingtalk.com/robot/send?access_token=c58321ceae9b13cb64a0924636d3d1de1fc409760c2f3a21b9a4bc3c47b12be7

釘釘機器人簡介
(1)獲取到Webhook地址后,用戶可以向這個地址發起HTTP POST 請求,即可實作給該釘釘群發送訊息,注意,發起POST請求時,必須將字符集編碼設定成UTF-8,
(2)當前自定義機器人支持文本 (text)、鏈接 (link)、markdown(markdown)、ActionCard、FeedCard訊息型別,大家可以根據自己的使用場景選擇合適的訊息型別,達到最好的展示樣式,
(3)自定義機器人發送訊息時,可以通過手機號碼指定“被@人串列”,在“被@人串列”里面的人員收到該訊息時,會有@訊息提醒(免打擾會話仍然通知提醒,首屏出現“有人@你”),
(4)當前機器人尚不支持應答機制 (該機制指的是群里成員在聊天@機器人的時候,釘釘回呼指定的服務地址,即Outgoing機器人),
(5)每個機器人每分鐘最多發送20條,訊息發送太頻繁會嚴重影響群成員的使用體驗,大量發訊息的場景 (譬如系統監控報警) 可以將這些資訊進行整合,通過markdown訊息以摘要的形式發送到群里,
好了,到這里基本的提前準備作業已經告一段落,下面進入實作環節,
實作路徑
# -*- coding: utf-8 -*-
import datetime
import sys
import time
import hmac
import hashlib
import base64
import urllib
import urllib2
import json
reload(sys)
sys.setdefaultencoding('utf8')
###webhook地址和簽名
webhook = '''
https://oapi.dingtalk.com/robot/send?access_token=c58321ceae9b13cb64a0924636d3d1de1fc409760c2f3a21b9a4bc3c47b12be7
'''
secretkey = '*******輸入簽名****'
###訊息
msg = '測驗'
###日期時間
now = datetime.datetime.now()
sub = datetime.timedelta(days=-1)
now = now + sub
now_str = now.strftime('%Y-%m-%d')
timestamp = long(round(time.time() * 1000))
secret_enc = bytes(secretkey).encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secretkey)
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))
webhook = webhook.strip()
webhook = '%s×tamp=%d&sign=%s' % (webhook, timestamp, sign)
param = {
"msgtype": "text",
"text": {
"content": msg
}
}
data = https://www.cnblogs.com/chenzl44/archive/2021/04/12/json.dumps(param)
###發送訊息
request = urllib2.Request(webhook, data, {'Content-Type': 'application/json;charset=utf-8'})
response = urllib2.urlopen(request)
result = 'code:%d,msg:%s' % (response.getcode(), json.dumps(response.readlines()[0]))
print result
結果

參考
釘釘機器人官方檔案
PYODPS
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/275329.html
標籤:其他
上一篇:SpringCloudAlibaba—微服務概念及SpringCloudAlibaba介紹
下一篇:SpringCloud學習筆記
