前言
Orchestrator有Call外部REST API/OPEN API的功能,利用钉钉开放的API,可以实现JDE内容转化成消息进行发送。此文档没有实现,只是整理如何Call API,这样在Orchestrator中就可以方便调用,理论上与微信的API发送消息接口是一致的。
注册钉钉团体(公司)
理论上可以注册多个,可用于发送不同任务类型
注册地址:https://oa.dingtalk.com/register_new.htm#/
如果你的手机号已经注册过钉钉,那么可以在下面创建新团队.
成功后,可以下载钉钉PC或是手机端来登录使用
钉钉开放平台地址:https://open-dev.dingtalk.com/#/index
注意2020/6/15号后
需要激活
才能开发应用在
通讯录
中添加部门与人员。
新增应用
在工作台
里边新增一个应用,路径如下图:
点击自建应用将跳转到:https://open-dev.dingtalk.com/#/create-app
填写应用名称, 上传一个图片以及简介。
点击下一步后,需要输入AIS服务器调用钉钉API的IP地址(公网的IP).
获取应用的AgentId,AppKey,AppSecret
进入应用点击查看详情
在最后看到三个代码,后续都需要使用。
获取用户/部门的ID
消息需要送达的目标可以是具体用户,也可以是部门
在
通讯录
界面里边可以找到
https://oa.dingtalk.com/contacts.htm#/contacts
如果有设置部门,则点击该部门,也是在该位置有部门ID。
Call 钉钉API设置
因为看官方的文档不敢恭维,调试界面更是无语,范例主要是以SDK的方式进行,不方便我们阅读,此处汇总一下可能用到的API。
获取Token
方法:Get
路径:https://oapi.dingtalk.com/gettoken?appkey={{appkey}}&appsecret={{appsecret}}
返回:
{ "errcode": 0, "access_token": "d8666dc1929a3992801d07d33aa6272c", "errmsg": "ok", "expires_in": 7200}
发送工作消息
方法:Post
路径:https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token={{access_token}}
主体Body:
{ "agent_id": "{{AGENTID}}", "userid_list": "{{USERID}}", "dept_id_list": "", "to_all_user": false, "msg": { "msgtype": "text", "text": { "content": "消息内容" } }}
说明
:此示例为最简单的文本,可以参考官方介绍msg
的部分:
https://ding-doc.dingtalk.com/doc#/serverapi2/ye8tup
返回:
{ "errcode": 0, "task_id": 217791522272, "request_id": "10oczk4j3pysa"}
上传文件到服务器
方法:Post
路径:https://oapi.dingtalk.com/media/upload?access_token={{ACCESS_TOKEN}}&type=file
说明
:type: 媒体文件类型,分别有图片(image)、语音(voice)、普通文件(file) , 此示例是file.
Header: Content-Type: multipart/form-data;
主体Body:
file: 文件
key:media
返回:
{ "errcode": 0, "errmsg": "ok", "media_id": "@lAjPDeRERl-SdZbOKpI_r85tuA2J", "created_at": 1591874201427, "type": "file"}
发送文件到用户
方法:Post
路径:https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token={{access_token}}
主体Body:
{ "agent_id": "{{AGENTID}}", "userid_list": "{{USERID}}", "dept_id_list": "", "to_all_user": false, "msg": { "msgtype": "file", "file": { "media_id": "{{MEDIA_ID}}" } }}
MEDIA_ID
:上传文本后得到的media_id
返回:
{ "errcode": 0, "task_id": 217791522272, "request_id": "10oczk4j3pysa"}
获取文件的文本内容
如果文件是text的格式,可以用Get的方式直接读取文件内容(media_id)。
方法:Get
路径:https://oapi.dingtalk.com/media/downloadFile?access_token={{ACCESS_TOKEN}}&media_id={{MEDIA_ID}}
返回:文件的文本内容.