首页 > 代码库 > 如何将钉钉集成到FineReport插件中

如何将钉钉集成到FineReport插件中

报表服务器

安装钉钉管理插件后,打开报表管理平台,管理系统下会增加钉钉管理节点,钉钉相关的配置管理都将会放在这个节点中去配置:

技术分享

 

同时,设置定时任务的最后一步输出设置中,会增加推送钉钉消息:

技术分享

 

钉钉企业应用

管理员登录钉钉企业号,进入微应用设置,需要关注的信息有:

CorpID:是企业在钉钉中的标识,每个企业拥有一个唯一的CorpID;

CorpSecret:是企业每个应用的凭证密钥

技术分享

 

  •  钉钉管理

登录FineReport管理平台,点击管理系统>钉钉管理节点:将钉钉中的CorpID和CorpSecret分别填到钉钉企业号ID和管理组凭证密码中,设置Token获取路径,可以自定义获取的url,如果不写则采用内置的方式获取,保存,如下图:

技术分享

 

  • 钉钉插件自定义token获取

钉钉提供的获取token接口本身有缺陷:

1)钉钉提供的接口,使用corpid和secret获取token,默认不会缓存,但是钉钉提倡做token缓存,2小时内可以重复使用,这样减少对钉钉服务器的访问,以免出现问题;

2)钉钉中集成多个应用的话,如果多个应用都会用到corpid和secret获取token,如果某个应用缓存了token,就会冲突

例如:应用a,做了缓存,第一次访问后获取到token1,应用b使用会重新取token2,此时应用a还是用的token就无法访问了。

针对这种情况,处理方式是所有应用统一到一个地方去取token,此时需要设置自定义token的获取地址

在钉钉插件中,钉钉管理>基本信息>设置Token获取路径,可以自定义获取的url,如果不写则采用内置的方式获取

技术分享

 

Token获取接口规则:返回json类型的数据,{access_token:"xxxxx", jsapi_ticket:"xxxxx"} 

钉钉管理后台创建FineReport报表微应用时,例如http://www.finereporthelp.com:8181/app2/ReportServer?op=fs&corpid=$CORPID$,后面要加上参数&corpid=$CORPID$,这样后台会获取到cropid,然后取到钉钉userid,做单点登录;

技术分享

 

  • 钉钉用户与报表用户关联

按照钉钉提供的方法,读取钉钉通讯录的成员,需要的字段有uesrid,name,department进入FineReport报表管理平台fs,点击钉钉管理节点,除了基本信息外,增加了钉钉成员管理,点击效果如下:

技术分享 

表格中会自动读取钉钉企业号通讯录中的所有成员,并且在每次打开该页面时刷新为最新的;默认钉钉成员与报表用户相同,因为大部分情况下,钉钉成员名和报表用户名是统一的;

如果您的钉钉成员名与报表用户名是不一样的,此时,可以取消勾选钉钉成员与报表用户相同设置,此时报表用户名,可以将钉钉成员与报表用户进行关联,如下图:

技术分享

  • 单点登录

钉钉提供免登服务,与微信类似,通过code可以获取当前取号的userid,获取到userid后,通过关联关系自动登录报表后台

  • 消息推送

开发服务器可以主动的发送消息给企业成员,比如使用FineReport定时器生成报表后,发送消息给相应的人员进行查看。进入FineReport管理平台,添加定时任务:

技术分享

 

技术分享 

到输出设置这步,比如我们将定时生成的结果挂在其他这个目录下面,并且命名为钉钉文档测试:

技术分享

 

通知与存档选择推送钉钉消息,企业应用(AgentID)需要根据钉钉管理里的进行填写,例如下设置,这样定时任务结束后,这个钉钉成员可以收到消息

技术分享

 

定时生成结果的文件名:对应发送消息的标题名

企业应用AgentID:发消息至哪个应用

钉钉用户:发消息给哪些成员,下拉框中会自动读取钉钉通讯录中的所有成员,多个成员之间用|分割,比如Jane|Saber

部门ID:发消息给某个部门的所有成员,该属性与钉钉用户是并的关系,不同部门之间也用|分割

消息内容:定义消息的正文内容

定时结果访问连接:勾选的话会在消息正文最后加上定时生成的结果连接,点击后就可以直接打开定时结果;不选的话则只发送纯文本消息。

定时任务设置好后,比如任务每天都会执行,每次执行后就会推送消息给对应的成员,效果如下:

技术分享

 

点击连接,就可以看到定时生成的结果。


如何将钉钉集成到FineReport插件中