首页 > 代码库 > 如何将钉钉集成到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插件中