使用第三方账号认证(番外):向钉钉用户推送通知

cybozu发表于:2022年04月15日 14:45:49更新于:2023年03月10日 16:41:08

Index

说明

本篇严格来说和第三方账号无关,但它却是使用第三方账号认证(二):钉钉小程序免登的功能拓展。

因此本篇将作为番外,单独叙述。


功能

这次我们将会为钉钉H5微应用添加通知功能。

在kintone上提交流程时,我们希望执行者能尽快进行处理。

如果该执行者绑定了钉钉的账号,那么我们希望钉钉能尽快弹出通知,来提醒对方。


设计

确定了功能需求后,接下就要进入设计阶段。

在通知提醒方面,钉钉已经给出了相关文档

那么这个API最好是在IDP 服务端调用还是利用kintone.proxy调用?

这里直接给出答案,在IDP 服务端中调用。这样就能回避钉钉的白名单权限问题。

最后的问题,kintone上能在提交流程时取得相关的执行者信息吗?

回答是,通过组合  app.record.detail.process.proceed 和  app.record.detail.show 来间接获取。


代码

IDP端代码已更新,大家可以从以下链接获取:

https://github.com/kintone-samples/SAMPLE-kintone-dingtalk-idp-cn

同时,这次还需要kintone自定义js,这部分代码存放在:

https://github.com/kintone-samples/SAMPLE-kintone-dingtalk-notice-cn


配置

本次配置以使用第三方账号认证(二):钉钉小程序免登为基础,给出相应改进:

IdP端配置

  • 这次在项目中集成了钉钉内网穿透工具,更新后请重新运行 npm install

  • 修改package.json中的traversal下的${your_subdomain}。

  • 最后运行npm run traversal 来实现穿透。

数据库

在钉钉管理app中添加以下字段:

字段名
类型
字段代码 
描述
AgentId
单行文本框agentId钉钉微应用的AgentId

钉钉端配置

  1. 进入钉钉H5微应用的权限管理,添加以下权限:

          根据手机号姓名获取成员信息的接口访问权限

kintone系统管理

  1. 修改Process2Ding项目src目录下的index.js中的第一行,在${your_domain}中填入服务端域名。

  2. 运行 npm install 和 npm run build,生成编译后的js。

  3. 进入cybozu共通管理->系统管理->安全性->登录

  4. 将 dist/js/app.js 上传到 kintone系统管理->自定义->通过JavaScript / CSS自定义


运行效果

001625911258135865b99230e260242