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