当前位置: 首页 > news >正文

盐城网站建设厂商网站建设明细报价表仅供参考

盐城网站建设厂商,网站建设明细报价表仅供参考,格尔木网站建设公司,网站备案成功后怎么弄作者 | sqlboy-yuzhenc 背景介绍 在实际应用中,我们经常需要将特定的任务通知给特定的人,虽然 Apache DolphinScheduler 在安全中心提供了告警组和告警实例,但是配置起来相对复杂,并且还需要在定时调度时指定告警组。通过这篇文…

file

作者 | sqlboy-yuzhenc

背景介绍

在实际应用中,我们经常需要将特定的任务通知给特定的人,虽然 Apache DolphinScheduler 在安全中心提供了告警组和告警实例,但是配置起来相对复杂,并且还需要在定时调度时指定告警组。通过这篇文章,你将学到一个简单的方法,无需任何配置,只需要在用户表(t_ds_user)表中增加字段钉钉名称(dignding_name),创建用户时指定用户的手机号码和维护对应的钉钉名称,就能轻松实现 Apache DolphinScheduler 任务失败时钉钉告警到指定的人。

安装插件plpython3u

psql etl -U postgres
create extension plpython3u

pip安装requests

cd /opt && wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
pip install requests

创建发送钉钉的存储过程

  • plpython3u为不受信语言,所以只能被超级用户使用
sql
create or replace function tool.sp_send(message json,webhook varchar ,secret varchar 
)returns textlanguage plpython3usecurity definer 
as $function$
import requests
import json
import time
import hmac
import hashlib
import base64
import urllib.parse
"""
/** 作者 : v-yuzhenc* 功能 : 给钉钉发送一条消息* message : 需要发送的消息,json格式,详情参考https://open.dingtalk.com/document/robots/custom-robot-access* webhook : 钉钉机器人的webhook* secret : 钉钉机器人的secret* */
"""
v_timestamp = str(round(time.time() * 1000))
p_secret = secret
secret_enc = p_secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(v_timestamp, p_secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
v_sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))# 钉钉自定义机器人的webhook地址
p_webhook = webhook
webhook_url = p_webhook+"&timestamp="+v_timestamp+"&sign="+v_sign
# 要发送的消息内容
p_message = json.loads(message)
# 发送POST请求
response = requests.post(webhook_url, data=json.dumps(p_message), headers={"Content-Type": "application/json"})# 打印响应结果
return response.text
$function$;alter function tool.sp_send(json,varchar,varchar) owner to tool;
grant execute on function tool.sp_send(json,varchar,varchar) to public;

测试发送钉钉的存储过程

select sp_send('{"msgtype": "actionCard","actionCard": {"title": "我 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身", "text": "![screenshot](https://img-blog.csdnimg.cn/9911ab6c84fb43ad97667e2ae61e56fc.png) \n\n #### 乔布斯 20 年前想打造的苹果咖啡厅 \n\n Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划", "btnOrientation": "0", "btns": [{"title": "内容不错", "actionURL": "https://www.dingtalk.com/"}, {"title": "不感兴趣", "actionURL": "https://www.dingtalk.com/"}]}
}'::json);

file

参考

自定义机器人安全设置 - 钉钉开放平台

自定义机器人接入 - 钉钉开放平台

t_ds_user增加字段

alter table t_ds_user add column dingding_name varchar(100);
--人为将海豚账号对应的钉钉用户名更新上去

编写触发器

CREATE OR REPLACE FUNCTION dp.tg_ds_udef_alert_ding()RETURNS triggerLANGUAGE plpgsql
AS $function$
/** 作者:v-yuzhenc* 功能:海豚调度工作流失败自动告警* */
declarei record;v_user varchar;v_mobile varchar;v_content text;v_message varchar;
beginif new.state in (4,5,6) then for i in (select d.user_name,d.phone ,d.dingding_name,g.name project_name,e.name process_name,string_agg(distinct b.name||' '||to_char(b.end_time,'yyyy-mm-dd hh24:mi:ss'),'\r\n') task_namefrom t_ds_process_instance a inner join t_ds_task_instance b on (a.id = b.process_instance_id)inner join t_ds_task_definition c on (b.task_code = c.code and b.task_definition_version = c."version")inner join t_ds_user d on (c.user_id = d.id)inner join t_ds_process_definition e on (a.process_definition_code = e.code and a.process_definition_version = e."version")inner join t_ds_project g on (e.project_code = g.code)where c.task_type <> 'SUB_PROCESS'and a.state = 6and b.state = 6and a.id = new.idgroup by d.user_name,d.phone ,d.dingding_name,g.name,e.name) loop v_mobile := i.phone;v_user := i.dingding_name;v_content := '海豚工作流执行失败,请尽快处理!\r\n项目名称:\r\n'||i.project_name||'\r\n工作流名称:\r\n'||i.process_name||'\r\n任务名称:\r\n'||i.task_name;v_message := $v_message${"at": {"atMobiles":["$v_message$||v_mobile||$v_message$"],"atUserIds":["$v_message$||v_user||$v_message$"],"isAtAll": false},"text": {"content":"$v_message$||v_content||$v_message$"},"msgtype":"text"
}$v_message$;--告警perform tool.sp_send(v_message::json);end loop;end if;return new;
end;
$function$
;create trigger tg_state_ds_process_instance after update on t_ds_process_instance for each row execute procedure tg_ds_udef_alert_ding();

测试

file

本文转载自CSDN博主sqlboy-yuzhenc文章:https://blog.csdn.net/qq_33445829/article/details/131073349

本文由 白鲸开源科技 提供发布支持!

http://www.yayakq.cn/news/266279/

相关文章:

  • 临汾网站建设公司深圳网站建设网站排名优化
  • 公司建设网站需要固定ip吗pageadmin仿站教程
  • ps做分享类网站效果图wordpress简介企业
  • 网站改版提示无需改版wordpress 博客实例
  • 新洲建设局网站wordpress 后台 获取分类id
  • 无锡网站建设多少钱seo外链北京seo公司
  • 免费网站建设找云狄wordpress速度慢图片
  • 茂易网站建设wordpress 手册 插件
  • 四川建站模板网站公司搜狗权重查询
  • 做网站如何做视频wordpress 粘贴
  • 什么是网站交互性乐清网站改版公司
  • 旅游网网站建设广州软件开发培训哪个好
  • 预付网站制作费怎么做凭证wordpress 协同
  • 峨眉山网站建设网站备案查询流程
  • 做网站发布创可贴网站怎么做图片大全
  • 该网站使用的安全设置网页设计公司宣传
  • 梧州网站建设贝尔利购物网站模板代码下载
  • 山东省建设教育集团网站企业建设网站的策划流程
  • 网站开发高级工程师专业wordpress模板怎么改成织梦模板
  • 做网站80端口extjs做的网站
  • 做网站需要学编程吗主流搜索引擎有哪些
  • 商丘网站建设方案中小企业网站建设济南兴田德润o厉害吗
  • 企业网站建设中企动力苏州网络营销及网站推广
  • 海南 网站开发wordpress 二栏
  • 工程建设标准最新查询网站南昌做网站开发的公司有哪些
  • 手机网站建设域名空间如何建立淘宝客网站
  • 学院网站建设与管理办法网站上上传图片 怎么做
  • 个人建网站允许吗php网站开发环境一
  • 成品网站代理移动互联网开发是什么
  • 湛江建站免费模板平面广告设计好学吗