kettle与钉钉结合的企业内部应用扩展01
晨枫0215 2019-09-23 16:46
Kettle作为了一个开源的工具,尤其现在大数据应用环境下,企业内部的数据清理应用就更多。
另外一方面,钉钉作为企业内部沟通平台,相比2年前,发展的更快,应用场景在扩大。企业也愿意在钉钉上花费多的时间和精力打包,企业内部的移动办公平台。
ETL与邮件服务器交互
早期,ETL应用会跟邮件服务器做更多交互,处理结束或者异常都会邮件告知,或者输出指定的excel报告发送给指定用户。
打通ETL与钉钉应用数据交互
现在,我们需要通过钉钉的消息推送等便捷渠道,把消息更加快捷推送给指定的用户。目前公司邮件用的更多是业务部门,而其他非业务类部门,邮件应用频率是相对比较低,在消息获取的时效性来说与钉钉消息推送,还是差距蛮大的。
ETL应用钉钉消息推送原理
其主要的工具是向钉钉推送消息,主要使用的组件是REST Client
操作步骤如下:
1、打开kettle,新建新的转换,并把【生成记录】组件拉入
双击打开【生成记录】配置框,配置些我们需要的基本信息。例如钉钉项目中需要的appkey,appsecret
如何提取appkey,appsecret,需要登录钉钉开发平台,进行提取,看截图
2、封装url请求,获取重要的access_token
找到javascript组件,拖入,双击打开,输入关键语句
var url="https://oapi.dingtalk.com/gettoken?appkey="+appkey+"&appsecret="+appsecret+""
定义url,但需要把这个变量类型进行转化,转化成string
3、找到rest client组件,拖入后,双击进行配置
URL:用户可以自己设置
【Accept URL From Field?】勾选后,用户可以在[URL Field Name]从上一级流程节点选择对应的字段名。
【Http method】:发送请求的方式,钉钉文档说明里是指GET
【Result field name】:最后输出的json信息保存到到对应的字段名,这个后续提取access_token需要。
4、提取access_token数据测试
测试结果看图,最后输出下列信息
{"errcode":0,"access_token":"c5a6f60226b334d39ee9541a21ba8d4d","errmsg":"ok","expires_in":7200}
表明获取了正确的access_token,剩下就可以跟钉钉开始做消息推送步骤
5、从返回信息中提取正确的access_token
选择json input组件,拖入并且双击进行配置
【源定义在一个字段里】,上一节点里已经用[result],选择result
最后在字段一栏,设置一个字段名【access_token】用来记录提取后的信息
6、封装向钉钉发送消息的url
拖入一个javascript组件进去,双击进行配置
var url1="https://oapi.dingtalk.com/message/send?access_token="+access_token+""
配置发送语句。其中access_token变量来自上一步骤配置的字段名
另外也需要把url1强制变更为String类型
7.最后步骤,发送url请求
发送请求,我们需要重新加入一个新的rest client组件,拖入并且双击进行配置
按照钉钉文档中发送消息是post方式,【body field】对应的是msg信息,【Application type】对应的是json
到此为止,发送执行消息,最后钉钉接收到相关消息
关于钉钉消息发送几个坑说明
1.推送消息url,如果用其他测试网页没有问题,但kettle似乎不支持。
https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=ACCESS_TOKEN
这个是官方文档给出的请求url,最后我测试2天都没测试成功,一直提示msg信息未提交
2.发送消息的时候 ,需要把你所在网络环境的ip加入授权范围,否则发送不了
http://mp.toutiao.com/preview_article/?pgc_id=6739784643165291011