一、钉钉应用开发平台是什么?
钉钉应用开发平台是开发在钉钉容器内运营的应用。钉钉应用是业务数字化的高价值载体,云钉一体能力底座全面普惠,释放数字化生产力量,加速组织业务数字化转型,打造企业数字化统一办公门户。
钉钉应用开发平台全貌
在下图中可以看到,钉钉应用开发平台包含钉钉开放底座以及在钉钉上使用的四类应用、两大部分内容:
- 钉钉底座:提供丰富的开放能力
- 2000+钉钉API
- 如:IM/日程/OA审批/订盘等;
- 45+场景化能力包
- 如:行政/财务/人事/IT管理等;
- 10+钉钉开放场域
- 如:工作台/会话/日历/文档等;
- 80+硬件产品开放
- 如:考勤/门禁/会议等;
- 在钉钉上使用的四类应用
- 原生应用
- 如:考勤打卡、签到、审批、邮箱、公告,等等,实现一些标准化的流程。
- 钉钉市场应用
- 专注于一些领域开发的专业应用,如财务、OA、客户管理等。
- 低代码应用
- 钉钉搭,低代码或者零代码的方式开发应用,让企业的业务人员也可以低门槛的开发应用,集成了宜搭,氚云,简道云等主流厂商。
- 全代码应用
- 基于钉钉开放底座2000+API,集成企业业务流程,实现企业数字化流程,开发运行于钉钉容器内运行的应用。
钉钉应用开发平台现状
钉钉应用开发平台是一个成熟的开发平台,拥有2000+API、50+场景能力包、10+开放场域,企业自建应用数达到百万级。
二、5分钟开发应用演示
钉钉开发平台提供应用开发源代码,供开发者在开发者后台迅速跑通并创建应用或关联应用。
开发步骤
- 登录开发者后台:https://open-dev.dingtalk.com
- “从示例代码创建应用”中点击“更多示例代码”。
- 进入代码广场选择并开发应用。
- 选择“向个人或群发送消息”。
- 进入详情页,包括应用使用的语言、支持应用类型、关联接口、推荐能力包等。
- 创建应用。
- 调试运行,首先下载示例代码。
- 使用IntelliJ IDEA打开下载好示例代码(能力包)。
- 生成启动命令并复制,在本地启动。
- 发布应用。
- 应用使用演示,创建群并向群内发送消息。
打开钉钉应用,填写表格中的相关内容,群名称、消息标题、消息内容,消息链接、选择发送人等,提交后即会收到消息,点击消息可以跳转到配置中的消息链接。
至此完成了一个应用在钉钉上的开发和本地部署,以及在钉钉上的访问。
应用的代码结构
应用的代码结构包括两个目录:
- backend:服务端代码
backend的核心是发送消息的controller,包括发送群消息、发送工作通知、查询已读列表,等功能。 - frontend:前端代码
frontend的核心是App.js,在这里实现了免登功能、发送群消息按钮,等基础功能;
三、钉钉应用开发过程
钉钉应用开发过程可以分为开发前和开发中。
开发前:
- 需求匹配:了解自己的需求,查看钉钉提供了哪些能力。
- 可行性分析:体验感受钉钉提供的能力,分析是否满足诉求。
开发中:
- 创建应用,管理权限,编写代码,调试测试,发布上线。
开发前
能力中心门户
能力中心是钉钉开放主阵地,一键体验,让开放能力接入更便捷。
应用开发五部曲
只需简单几步实现把企业系统快速搬上钉钉,方便员工管理与使用,更能集成钉钉开放能力,融合钉钉产品形态,加速组织业务数字化。
- 把企业应用添加到工作台
- 应用一键免登
- 内网应用上钉钉
- 集成钉钉能力
- 与钉钉产品融合
场景化集成方案
- 基于钉钉丰富的开放能力,支持复杂的业务场景需求,提供多场景、多行业、多角色的能力融合解决方案,大大提升数字化生产力。
- “场景化能力融合方案包”
钉钉应用开放平台根据企业常见场景,对钉钉能力进行最优编排,并提供应用开发示例源码,全面助力开发者开发高价值应用,加速企业数字化转型。
- 业务场景
- 钉钉开放能力和企业常见的业务结合,场景化包装使用说明。
- 标杆案例
- 最佳实践标杆案例,展示应用开发前后使用变化。
- 开发流程
- 针对钉钉能力进行了能力使用编排,并提供完整的开放文档、SDK。
- 示例源码
- 提供开发源代码,可开发者后台跑通源码,并直接复用代码。
云IDE在线体验
场景化能力融合方案包也提供了云IDE体验功能,可以帮助开发者在没有开发环境的时候,预先体验钉钉应用的开发流程,同时可以在云IDE中进行断点调试、修改代码测试、可行性调研时代码的功能实现效果等。
下面是以第三方的一个“公司/园区数字食堂”应用为例的在线体验步骤。
- 体验示例代码
- 按照右侧任务栏中的步骤执行,完成后用手机端扫描二维码。
- 体验应用功能
钉钉文档中心
点击前往开发者文档
- 学习路径
钉钉文档中心新上线了学习路径,以企业内部应用开发为例,学习路径会详细介绍应用开发的具体流程,用简洁易读的方式让开发者一目了然,有的放矢的学习。 - API文档
包括服务端、客户端,以及各产品模块API的完整介绍。
应用开发实战案例
DingTalk“开发者说”展示各行业在钉钉开发的实战案例,帮助你开阔思维,快速开始在钉钉开发。
开发中
开发流程
- 应用创建
- 应用类型:小程序、H5微应用、机器人
- 应用名称
- 应用描述
- 开发方式:企业自主开发或委托服务商开发
- 应用配置
- 如服务器出口IP:用于调用服务端接口
- H5微应用:应用首页地址和PC端首页地址
- 小程序:开发人员和小程序域名
- 机器人:消息接收地址
- 应用开发与部署
- 获取API调用凭证
- 接入钉钉免登
- 其它接口接入例如通讯录、审批等
- 前端开发
- 应用测试
- 小程序:上传开发版本并设置体验组织
- H5微应用:添加测试用户名单
- 应用发布
- 直接发布,发布后可调整应用的使用范围,如财务应用只限财务人员可见
创建应用
钉钉上的应用,本质代表着钉钉平台上的一个真实可靠的身份,所以创建应用之后,代表可以使用这个身份,安全可信的调用API,接收事件,处理业务逻辑。
所以创建应用之后,可以得到应用的ID,AppKey和AppSecret,这是做接下来开发最重要的东西。
钉钉全代码应用,基于应用的开发者身份、应用使用方、运行模式分为不同的类型:
- 基于开发者和使用方分类
- 分为企业自建应用、第三方企业应用和第三方个人应用
- token鉴权方式不同,企业自建应用企业可使用自己的信息鉴权,而第三方企业应用则需要第三方开发者身份和使用方(企业)身份鉴权
- 可用API范围不同,企业自建应用可调用API范围比较广,而第三方企业/个人应用有专有API及权限范围
- 基于开发形式分类
- 分为小程序、H5微应用
- 小程序的优势在于用户体验度比较高,H5微应用的优势在于灵活、可实现功能更丰富
- 前端API和研发代码不同
- 基于运行场域分类
- 分为工作台、群应用、消息菜单等
- 需要适配开发对应场域的代码,比如群应用需要开发机器人,卡片功能等
开发者和使用方 | 企业自建应用,第三方企业应用,第三方个人应用 | token鉴权方式不同可用api范围不同 |
开发形式 | 小程序、H5微应用 | 前端api不同 前端研发代码不同 |
运行场域 | 工作台、群应用、消息菜单等 | 需要适配开发对应场域的代码,比如机器人,卡片功能等 |
应用配置
- 调用钉钉服务端接口前,需要先添加所需接口的调用权限。
- 接口权限是以应用为维度授予的,每个应用的接口权限都是独立存在的,如果多个应用都需要调用同一个接口,那么每个应用都要添加相对应的接口调用权限。
- 不是所有接口都可以直接开通使用,具体参照接口的使用范围和适用类型,部分接口需要付费或满足特定条件后才可使用。
开发代码
- H5应用本质是开发一个站点,把站点首页配置的应用中,就可以访问了。
- 免登是基本上必须接入的能力,可以获取到当前访问用户的身份。
- 调用任何服务端API需要生成token,token管理也是必备的能力。
- 所有的示例代码都已经实现了这两部分功能,开发者可以基于Demo进行二次开发,节省开发时间。
测试发布
- 内网穿透(前文的应用开发演示)只是用来本地测试,不可以用于生产环境。
- 测试阶段可以配置仅自己可见。
- 发布完成之后,在工作台找到对应应用,可以点击查看。
贡献Demo,繁荣社区
- 贡献完整demo
https://github.com/open-dingtalk/h5app-demo.git - 参与demo仓库的代码贡献
- Demo示例,重点关注以下部分:
- backend:后端SpringBoot项目
- dingboot-common:Demo模板包,基础逻辑封装
- taobao-sdk-java-auto:钉钉SDK,用来调用API
- UrlConstant:接口URL,自行添加
- BizController:Controller,实现自己的业务代码
- BizManager:Service,具体实现业务逻辑代码
- Application:填写应用配置信息
- frontend:前端React项目
- App.js:页面逻辑代码
四、钉钉应用平台发展规划
钉钉应用开发平台的使命,是让应用开发更简单。
- 加大开放:让钉钉内部更开放
- API开放
建立开放评估体系,实现更高质量的开放。 - 钉钉酷应用
支持更多开放场域,目前群应用在灰度中,未来会有更新形式的应用形态。 - 应用融合度
融合度越高的应用,用户使用的频率也越高,因此这一指标可以指引应用开发的方向。
- 目前正在进行的工作
- 提升开放能力平台的易用性,包括能力中心、场景化能力包、云IDE体验、代码广场等。
- 指引更清晰,包括应用配置指引、文档学习路径、开发者小助手等。
- 工具更丰富,包括API统计/诊断/调试/管理、内网传统、微应用调试工具、D-Design组件库等。
五、Q&A
Q:目前没有直接获取企业全部员工的接口,如何获取企业全部员工的信息?后续是否有计划开放类似接口?
A:是可以获取到的,目前在通讯录下有部门、人员获取接口,根据获取组织的部门及部门下属人员来获取组织人员信息。
Q:开发中的报错信息“参数不合法”,但没有提示哪个参数,针对这类报错如何解决?
A:可以运用新的API诊断工具,其中会有更详细的报错信息,如果还是不能显示具体问题,可以求助技术支持人员进行排查。
Q:员工的档案接口字段是否没有全量开发?例如userID和手机号?
A:因为手机号属于敏感信息,需要申请手机号接口权限,然后唤起个人信息授权,授权后才可以拿到相应信息。可在文档中搜索个人手机号和个人授权组件,将两个功能结合即可。
Q:API接口调用有时候失败,提示系统繁忙是什么原因?
A:导致系统繁忙有多种原因,可能是网关不稳定,或者是一些内部错误,错误码包装的不是很清晰,可以提交工单或找在线的答疑机器人询问,并提供相关接口的requestID。