DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发

分享人:石周,钉钉应用开发技术负责人



一键回看视频地址:一键回看

正文:


一、钉钉应用开发平台是什么?


钉钉应用开发平台是开发在钉钉容器内运营的应用。钉钉应用是业务数字化的高价值载体,云钉一体能力底座全面普惠,释放数字化生产力量,加速组织业务数字化转型,打造企业数字化统一办公门户。


1. 钉钉应用开发平台全貌


在下图中可以看到,钉钉应用开发平台包含钉钉开放底座以及在钉钉上使用的四类应用、两大部分内容:


DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发

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

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


b. “从示例代码创建应用”中点击“更多示例代码”;

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


c. 进入代码广场选择并开发应用;

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


d. 选择“向个人或群发送消息”;

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


e. 进入详情页,包括应用使用的语言、支持应用类型、关联接口、推荐能力包等;右边的“快速体验”,列出了开发的三个步骤:创建应用、调试运行和开发应用;

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


f. 创建应用;

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发

g. 调试运行,首先下载示例代码;

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


h. 使用IntelliJ IDEA打开下载好示例代码(能力包);

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


i. 生成启动命令并复制,在本地启动;

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


j. 发布应用;

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


系统会自动化完成一系列工作,包括:接口权限设置、应用访问地址配置、应用可用范围配置,同时会生成一个二维码,使用钉钉手机端扫描即可访问使用,PC端可用点击“直接访问应用”进入。


k. 应用使用演示:创建群并向群内发送消息


打开钉钉应用,填写表格中的相关内容,群名称、消息标题、消息内容,消息链接、选择发送人等,提交后即会收到消息,点击消息可以跳转到配置中的消息链接。


DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


至此完成了一个应用在钉钉上的开发和本地部署,以及在钉钉上的访问。


2、应用的代码结构


应用的代码结构包括两个目录:backend服务端代码,frontend前端代码;

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发

a. frontend

frontend的核心是App.js,在这里实现了免登功能、发送群消息按钮,等基础功能;

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


b. backend

backend的核心是发送消息的controller,包括发送群消息、发送工作通知、查询已读列表,等功能;

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


一、钉钉应用开发过程


钉钉应用开发过程可以分为开发前和开发中。


  • 开发前:
    • 需求匹配:了解自己的需求,查看钉钉提供了哪些能力;
  • 可行性分析:体验感受钉钉提供的能力,分析是否满足诉求;

开发中:

    • 创建应用,管理权限,编写代码,调试测试,发布上线;


1. 开发前


a. 能力中心门户

能力中心是钉钉开放主阵地,一键体验让开放能力接入更便捷。


能力中心网址,https://open.dingtalk.com/developer

开发者文档,开放能力详解,API官方手册,https://open.dingtalk.com/document


b. 应用开发五部曲

  • 把企业应用添加到工作台;
  • 应用一键免登;
  • 内网应用上钉钉;
  • 集成钉钉能力;
  • 与钉钉产品融合;

只需简单几步实现把企业系统快速搬上钉钉,方便员工管理与使用,更能集成钉钉开放能力,融合钉钉产品形态,加速组织业务数字化;


c. 场景化集成方案

基于钉钉丰富的开放能力,支持复杂的业务场景需求,提供多场景、多行业、多角色的能力融合解决方案,大大提升数字化生产力;

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


d. “场景化能力融合方案包”

钉钉应用开放平台根据企业常见场景,对钉钉能力进行最优编排,并提供应用开发示例源码,全面助力开发者开发高价值应用,加速企业数字化转型。


DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发

场景化能力融合方案包示例


  • 业务场景
    • 钉钉开放能力和企业常见的业务结合,场景化包装使用说明;
  • 标杆案例
    • 最佳实践标杆案例,展示应用开发前后使用变化;
  • 开发流程
    • 针对钉钉能力进行了能力使用编排,并提供完整的开放文档、SDK;
  • 示例源码
    • 提供开发源代码,可开发者后台跑通源码,并直接复用代码;


e. IDE在线体验

场景化能力融合方案包也提供了IDE体验功能,可以帮助开发者在没有开发环境的时候,预先体验钉钉应用的开发流程,同时可以在云IDE中进行断点调试、修改代码测试、可行性调研时代码的功能实现效果等。

下面是以第三方的一个“公司/园区数字食堂”应用为例的在线体验步骤。


  • 体验示例代码;

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


  • 按照右侧任务栏中的步骤执行,完成后用手机端扫描二维码;

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


  • 体验应用功能

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


f. 钉钉文档中心

开发者文档参考,开放能力详解,API官方手册https://open.dingtalk.com/document

  • 学习路径

钉钉文档中心新上线了学习路径,以企业内部应用开发为例,学习路径会详细介绍应用开发的具体流程,用简洁易读的方式让开发者一目了然,有的放矢的学习。

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发

  • API文档

包括服务端、客户端,以及各产品模块API的完整介绍。

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


g. 应用开发实战案例

DingTalk“开发者说”展示各行业在钉钉开发的实战案例,帮助你开阔思维,快速开始在钉钉开发。


DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


2、开发中


使用钉钉应用开放平台的开发者后台,进行开发和管理钉钉应用。https://open-dev.dingtalk.com


a. 开发流程

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发

  • 应用创建
    • 应用类型:小程序、H5微应用、机器人;
    • 应用名称;
    • 应用描述;
    • 开发方式:企业自主开发或委托服务商开发;
  • 应用配置
    • 如服务器出口IP:用于调用服务端接口;
    • H5微应用:应用首页地址和PC端首页地址;
    • 小程序:开发人员和小程序域名;
    • 机器人:消息接收地址;
  • 应用开发与部署
    • 获取API调用凭证;
    • 接入钉钉免登;
    • 其它接口接入例如通讯录、审批等;
    • 前端开发;
  • 应用测试
    • 小程序:上传开发版本并设置体验组织;
    • H5微应用:添加测试用户名单;
  • 应用发布
    • 直接发布,发布后可调整应用的使用范围,如财务应用只限财务人员可见;


b. 创建应用

钉钉上的应用,本质代表着钉钉平台上的一个真实可靠的身份,所以创建应用之后,代表可以使用这个身份,安全可信的调用API,接收事件,处理业务逻辑。

所以创建应用之后,可以得到应用的ID,AppKey和AppSecret,这是做接下来开发最重要的东西。

钉钉全代码应用,基于应用的开发者身份、应用使用方、运行模式分为不同的类型:

  • 基于开发者和使用方分类
    • 分为企业自建应用、第三方企业应用和第三方个人应用;
    • token鉴权方式不同,企业自建应用企业可使用自己的信息鉴权,而第三方企业应用则需要第三方开发者身份和使用方(企业)身份鉴权;
    • 可用API范围不同,企业自建应用可调用API范围比较广,而第三方企业/个人应用有专有API及权限范围;
  • 基于开发形式分类
    • 分为小程序、H5微应用;
    • 小程序的优势在于用户体验度比较高,H5微应用的优势在于灵活、可实现功能更丰富;
    • 前端API和研发代码不同;
  • 基于运行场域分类
    • 分为工作台、群应用、消息菜单等;
    • 需要适配开发对应场域的代码,比如群应用需要开发机器人,卡片功能等;


开发者和使用方

企业自建应用,第三方企业应用,第三方个人应用

token鉴权方式不同

可用api范围不同

开发形式

小程序、H5微应用

前端api不同

前端研发代码不同

运行场域

工作台、群应用、消息菜单等

需要适配开发对应场域的代码,比如机器人,卡片功能等


c. 应用配置

  • 调用钉钉服务端接口前,需要先添加所需接口的调用权限:
  •  口权限是以应用为维度授予的,每个应用的接口权限都是独立存在的,如果多个应用都需要调用同一个接口,那么每个应用都要添加相对应的接口调用权限
  • 不是所有接口都可以直接开通使用,具体参照接口的使用范围和适用类型,部分接口需要付费或满足特定条件后才可使用;


DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发

d. 开发代码

  • H5应用本质是开发一个站点,把站点首页配置的应用中,就可以访问了;
  •  免登是基本上必须接入的能力,可以获取到当前访问用户的身份
  •  调用任何服务端API需要生成token,token管理也是必备的能力
  • 所有的示例代码都已经实现了这两部分功能,开发者可以基于Demo进行二次开发,节省开发时间。


DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


e. 测试发布

  • 内网穿透(前文的应用开发演示)只是用来本地测试,不可以用于生产环境;
  •  测试阶段可以配置仅自己可见
  • 发布完成之后,在工作台找到对应应用,可以点击查看;

DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


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:页面逻辑代码。


DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


四、钉钉应用平台发展规划


钉钉应用开发平台的使命,是让应用开发更简单。


1. 加大开放:让钉钉内部更开放


a. API开放:建立开放评估体系,实现更高质量的开放;

b. 钉钉酷应用:支持更多开放场域,目前群应用在灰度中,未来会有更新形式的应用形态;

c. 应用融合度:融合度越高的应用,用户使用的频率也越高,因此这一指标可以指引应用开发的方向;


2. 目前正在进行的工作


a. 提升开放能力平台的易用性,包括能力中心、场景化能力包、云IDE体验、代码广场等;

b. 指引更清晰,包括应用配置指引、文档学习路径、开发者小助手等;

c. 工具更丰富,包括API统计/诊断/调试/管理、内网传统、微应用调试工具、D-Design组件库等;


DingTalk「开发者说」第4期|手把手 5分钟教你完成钉应用开发


五、Q&A


Q:目前没有直接获取企业全部员工的接口,如何获取企业全部员工的信息?后续是否有计划开放类似接口?

A:是可以获取到的,目前在通讯录下有部门、人员获取接口,根据获取组织的部门及部门下属人员来获取组织人员信息。


Q:开发中的报错信息“参数不合法”,但没有提示哪个参数,针对这类报错如何解决?

A:可以运用新的API诊断工具,其中会有更详细的报错信息,如果还是不能显示具体问题,可以求助技术支持人员进行排查。


Q:员工的档案接口字段是否没有全量开发?例如userID和手机号?

A:因为手机号属于敏感信息,需要申请手机号接口权限,然后唤起个人信息授权,授权后才可以拿到相应信息。可在文档中搜索个人手机号和个人授权组件,将两个功能结合即可。


Q:API接口调用有时候失败,提示系统繁忙是什么原因?

A:导致系统繁忙有多种原因,可能是网关不稳定,或者是一些内部错误,错误码包装的不是很清晰,可以提交工单或找在线的答疑机器人询问,并提供相关接口的requestID。

上一篇:【通用行业开发部】阿里开源TransmittableThreadLocal使用经验记录


下一篇:浙江省人民医院:用钉钉宜搭助力党建改革工作,重构医院重大事项议事决策机制