【AIO】使用ORACLE数据库存储过程发送企业微信群机器人消息
前言
为了对标阿里系的钉钉,腾讯于2016年4月18日推出了企业微信
专注企业内部通讯(目前已加入客户管理及客户通讯功能),替代原有的RTX腾讯通
企业微信由于微信的生态及其易用性,已被很多企业使用,甚至个人都可以申请开通一个企业,其中经常会使用到的一个功能为消息推送。
消息推送目前分两大种,一是通过在企业微信新建应用,通过该应用发送给企业微信内指定的成员或群;二是通过企业微信群内的自建机器人,来发送消息到群。两种方式都支持api调用,但由于第一种需要新建应用,还要token和secret支持,在企业内有多个企业微信的应用开发项目时,容易发生token频繁更新导致经常失效,第二种方式不需要token,甚至不需要企业微信管理员的授权,所以第二种更方便使用。
一般像这种api调用都要再另外开发一个程序,比如JAVA/PY等,也有利用.bat/.sh这类的操作系统批处理脚本来发送,但是都依赖于操作系统,而且增加了运维监控的工作量。
本文针对第二种,介绍下如何通过ORACLE数据库存储过程来使用此功能(本文不描述如何申请开通企业微信)。
先了解企业微信官方API文档-群机器人配置说明
https://work.weixin.qq.com/api/doc/90000/90136/91770
看完文档后,可以了解到,使用这个API大致分以下几个步骤
1.创建一个群聊机器人
2.获得群聊机器人的链接(含webhook)
3.向该链接发送消息
下面我们正式开始操作
一、创建群聊机器人及获得webhook
1.打开手机端企业微信客户端,打开一个群(不支持外部群)
2.点击右上角两个人头的图标
3.点击群机器人
4.点击添加机器人(或右上角添加)
5.输入机器人名字,点击添加按钮
6.获得webhook的地址,直接点复制,也可返回查看
该地址格式如下,注意保密不要泄露https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=a******-***-***-***-******
二、在ORACLE数据库中配置ACL授权(可能需要SYS用户),允许ORACLE数据库访问企业微信API的地址
beginsys.dbms_network_acl_admin.create_acl( -- 创建访问控制文件(ACL) acl => 'utl_http.xml', -- 文件名称 description => 'HTTP Access', -- 描述 principal => 'ORACLE_USER', -- 授权或者取消授权账号,大小写敏感 is_grant => TRUE, -- 授权还是取消授权 privilege => 'connect', -- 授权或者取消授权的权限列表 start_date => null, -- 起始日期 end_date => null -- 结束日期 );sys.dbms_network_acl_admin.add_privilege( -- 添加访问权限列表项 acl => 'utl_http.xml', -- 刚才创建的acl名称 principal => 'ORACLE_USER', -- 授权或取消授权用户 is_grant => TRUE, -- 与上同 privilege => 'resolve', -- 权限列表 start_date => null,end_date => null);sys.dbms_network_acl_admin.assign_acl( -- 该段命令意思是允许访问acl名为utl_http.xml下授权的用户,使用oracle网络访问包,所允许访问的目的主机,及其端口范围。 acl => 'utl_http.xml',host => 'qyapi.weixin.qq.com',lower_port => 1, -- 允许访问的起始端口号 upper_port => 9999 -- 允许访问的截止端口号 );commit;
end;
/
三、配置ORACLE数据库的WALLET
该api地址为https开头,表示启用了ssl加密,之前在使用ORACLE数据库存储过程发送加密email(SSL)【ORACLE】简单谈谈ORACLE中WALLET(钱夹)
两文中提到,这种情况需要配置oracle的wallet,我们可以直接用浏览器打开https://qyapi.weixin.qq.com
这个地址,使用浏览器来获得证书文件,已实测这个证书在失效1个月后仍然可以正常发送消息(2021-07-15时测试结果,不代表未来,如果提示证书失效请自行更新wallet)
wallet配置方法请参考之前这篇文章
四、编译数据库包 qyapi_weixin_robot_sql
create or replace package qyapi_weixin_robot_sql is-- Author : DarkAthena-- Created : 2020-06-15 13:33:16-- Purpose : 企业微信群机器人APIg_WALLET_path varchar2(1000):='H:\WINDOWS.X64_193000_db_home\ssl_wallet';--钱夹保存路径g_wallet_pwd varchar2(1000) :='12345678'; --钱夹密码,若设置了自动登录,可为空g_content_type varchar2(1000):='application/json';procedure sendmsg_text(i_webhook varchar2,i_content_text varchar2);--发送文本信息procedure sendmsg_file(i_webhook varchar2,i_dir varchar2,i_file_name varchar2,i_display_file_name varchar2);--发送文件信息procedure sendmsg_image(i_webhook varchar2,i_dir varchar2,i_imagename varchar2);--发送图片信息
end qyapi_weixin_robot_sql;
/
完整源码请访问我的github项目获取https://github.com/Dark-Athena/workweixinrobot-oracle
五、修改数据库包qyapi_weixin_robot_sql中wallet及wallet密码的配置
g_WALLET_path varchar2(1000):='H:\WINDOWS.X64_193000_db_home\ssl_wallet';--钱夹保存路径g_wallet_pwd varchar2(1000) :='12345678'; --钱夹密码,若设置了自动登录,可为空
六、测试发送
由于常用的就是文本、文件、图片三种内容,因此只对这三种进行了封装,markdown/图文暂不支持(要实现其实也很简单,懒得搞了)
1.发送文本信息
beginqyapi_weixin_robot_sql.sendmsg_text(i_webhook => 'a******-***-***-***-******',--这里只要webhook地址后面的keyi_content_text => '亲爱的主人,早安');
end;
/
2.发送文件
beginqyapi_weixin_robot_sql.sendmsg_file(i_webhook => 'a******-***-***-***-******',i_dir =>'SENDFILE_DIR',--这里为数据库中配置的目录,下同, create or replace directory SENDFILE_DIR as 'H:\WINDOWS.X64_193000_db_home\TEMP'i_file_name =>'20210715_456798215648977.xlsx',--实际文件名i_display_file_name =>'昨日账单20210715.xlsx'--聊天窗口中要显示的文件名
);
end;
/
3.发送图片
其实图片也是可以通过文件发送的,但是如果是通过文件的形式发送,用户需要点击这个图片打开才能看到内容,如果是以图片显示发送,则在聊天窗口中可以直接显示图片内容
beginqyapi_weixin_robot_sql.sendmsg_image(i_webhook => 'a******-***-***-***-******',i_dir =>'SENDFILE_DIR' ,i_imagename => '1625668522172.jpg');
end;
/
20210715 更新补充
之前在 oracle 11g上测试的时候,这个api必须有包含对应证书的wallet才能发送,当然也可以把地址中的https的s去掉,只是这样安全度会降低。今天写这篇文章时同步在oracle 19c上测试,发现去掉钱夹的配置,地址为https时一样可以正常发送,原因不明。所以之后可能会在这个包中再多配置一个参数,由用户自行决定是否要启用ssl
【AIO】使用ORACLE数据库存储过程发送企业微信群机器人消息相关推荐
- 运用python实现企业微信群机器人消息推送
使用场景:将BI报表精准推送入(群),精准触达用户 目的:提高管理层对数据的感知度 工具:python+企业微信 步骤: 1.创建企业微信群机器人,提取Webhook地址(群机器人地址) 2.编写代码 ...
- 工作随记-Java利用企业微信群机器人定时发送消息
hi,大家好,我是恰恰 阅读本文需要2分钟~ 最近利用企业微信群机器人做的需求主要有 1.返奖率通知与告警:抽奖箱能抽出垃圾也能抽出大货,每隔5分钟查询一下这个返奖率,如果用户频繁抽出大货,这个抽奖箱 ...
- SAP ABAP 添加企业微信群机器人并调用 API 发送消息
SAP ABAP 添加企业微信群机器人并调用 API 发送消息 引言: 这篇文章以我在个人开源项目"任务管理服务(ZTASK)"中的应用为例,通过讲述使用企业微信机器人实现任务的通 ...
- 如何使用企业微信群机器人定时发送消息
场景描述: 每天早上8点钟通过企业微信群机器人发消息提醒大家打卡.在Aboter中该如何实现呢? 步骤: 首先创建一个IPaaS流程,触发条件组件编辑区选择[定时触发]类型.编辑区进行如下设置: 拖动 ...
- python 企业微信群机器人_企业微信群机器人应用:使用python从网站抓取行业资讯并定时推送...
在企业经营过程中,及时了解行业相关信息(市场动态.竞品策略.行业数据等等)是非常必要的.通常情况下,商品部门.营销部门.市场部门可能都会安排专门的人员定期进行这些信息的搜集.整理,再进行内部的分享. ...
- div区域内容抓取_企业微信群机器人应用:使用python从网站抓取行业资讯并定时推送...
在企业经营过程中,及时了解行业相关信息(市场动态.竞品策略.行业数据等等)是非常必要的.通常情况下,商品部门.营销部门.市场部门可能都会安排专门的人员定期进行这些信息的搜集.整理,再进行内部的分享. ...
- delphi 企业微信消息机器人_GitHub - guoxianlong/insight: Insight是一个可以管理企业微信群机器人的小工具,可以非常方便的往群里发布即时消息和定时消息。...
最科幻的企业微信群机器人管理工具 非常方便的发布群即时消息和定时消息,解放双手,提升沟通效率 部署教程 更新日志(2020.05.31) 修复设置为智能跳过工作日时,周日依然提醒问题. 前端修复定时成 ...
- Python实现企业微信群机器人自动化推送
人工智能(Artificial Intelligence),英文缩写为AI.它是研究.开发用于模拟.延伸和扩展人的智能的理论.方法.技术及应用系统的一门新的技术科学. --<百度百科> 文 ...
- 钉钉群机器人关键词自动回复_企业微信群机器人怎么用?企业微信群机器人有什么功能?...
使用企业微信办公时,我们可以在群聊中添加群机器人,自动推送消息,回答客户提问,那么企业微信群机器人怎么添加呢? 因为企业微信内部群机器人和外部群机器人的添加方式有一点区别,下面我们分开来讲述. 内部群 ...
最新文章
- 三十之惑–面霸的八月(第二部分)
- java的sdk在哪个文件夹_我的计算机中的Java SDK文件夹在哪里? Ubuntu 12.04
- 洛谷 5205 【模板】多项式开根
- Ghost 2.16.3 发布,基于 Markdown 的在线写作平台
- 登陆界面(jsp)客户端验证
- aspnet core 2.1中使用jwt从原理到精通二
- html的数据类型有哪些,数据库数据类型有哪些
- 创建Maven分布式前台系统架构,写出京动态导航,跨域返Json数据
- Spring Data 起步
- Java注解之自定义注解
- java udp发送速率_项目总结22:Java UDP Socket数据的发送和接收
- R-CNN解读+代码梳理
- ZEMAX | 绘图分辨率结果对光线追迹的影响
- 红宝书背诵笔记 — 必考词
- 【EMD和EEMD】EEMD工具箱使用
- CF632E Thief in a Shop 题解
- Apache Spark源码阅读环境搭建
- cv2.error: OpenCV(4.5.2) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-1y7gm6kn\opencv\modul
- hdu 1069 Monkey and Banana 【动态规划】
- Excel表格视图受保护,无法编辑,怎么解除视图保护?
热门文章
- 如何在eclipse中运行jsp
- 手机长曝光是什么意思_实用贴!手把手教你如何实现手机长曝光!
- ansible自动化运维详解(一)ansible的安装部署、参数使用、清单管理、配置文件参数及用户级ansible操作环境构建
- 共享单车数据分析的SQL数据库设计
- 百度网盘一直显示等待下载 不开始
- linux 我的世界 跨平台联机,我的世界跨平台能联机吗 跨操作系统联机方法
- 安卓开发解决ERROR type 3 的问题。
- Android花样loading进度条(二)-简单环形进度条
- 企业百家号蓝V认证,移动端排名展示,提升企业品牌知名度!
- Java 使用HttpURLConnection获取网易云(我喜欢的音乐)歌单内歌曲