车辆管理系统需要及时发送通知给钉钉用户,实现和钉钉的对接。
接口调用采用平台:
GET和POST测试
目前采用的是 发送企业通知消息
- 企业通知消息发送主体是企业,体现在接收方手机上的联系人是你填写的agentid对应的微应用。
调用接口时,使用Https协议、JSON数据包格式,并且JSON数据包序列化为字符串后总长度不能超过5000个字符。
目前支持text、image、voice、file、link、OA、markdown消息类型。每个消息都由消息头和消息体组成,企业会话的消息头由touser,toparty,agentid组成。
touser | 员工id列表(消息接收者,多个接收者用|分隔) | ||
toparty | 部门id列表,多个接收者用|分隔。touser或者toparty 二者有一个必填,不支持递归发送,如果需要给部门下面子部门发送消息则需要查询出子部门id | ||
agentid | 企业应用id,这个值代表以哪个应用的名义发送消息 |
企业通知消息样例:
"touser":"", //员工id列表(消息接收者,多个接收者用|分隔)
"toparty":"", //部门id列表,多个接收者用|分隔。touser或者toparty 二者有一个必填,不支持递归发送,如果需要给部门下面子部门发送消息则需要查询出子部门id
"agentid":"", //企业应用id,这个值代表以哪个应用的名义发送消息,
"msgtype":"text",
"text":{"content":"王灵生测试"
}
请求说明
Https请求方式: POST
https://oapi.dingtalk.com/message/send?access_token=ACCESS_TOKEN
注意事项
请求协议
当企业应用服务调用钉钉开放平台接口时,需使用https协议、Json数据格式、UTF8编码,访问域名为 https://oapi.dingtalk.com。
POST请求请在HTTP Header中设置 Content-Type:application/json,否则接口调用失败。
调用频率限制(简略)
参考:
https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7386797.0.0.AOcxUu&source=search&treeId=373&articleId=104980&docType=1
accessToken
1.AccessToken是企业访问钉钉开放平台接口的全局唯一票据,即调用接口时需携带Access_Token。
2.AccessToken需要用CorpID和CorpSecret来换取,不同的CorpSecret会返回不同的AccessToken,CorpID是企业在钉钉中的标识;每个企业拥有一个唯一的CorpID,CorpSecret是企业每个微应用的凭证密钥。
3.正常情况下AccessToken有效期为7200秒,有效期内重复获取返回相同结果,并自动续期。
如何获取Access_Token
请求说明
请求方式:GET
接口地址:https://oapi.dingtalk.com/gettoken?corpid=id&corpsecret=secrect
corpid | String | 是 | 企业Id |
corpsecret | String | 是 | 企业应用的凭证密钥 |
corpid和
CorpSecret在钉钉开放平台中
工作台-应用开发-开发账号管理 地址是:
https://open-dev.dingtalk.com/#/corpAuthInfo?_k=r3n7eq
获取CorpSecret等开发信息
主管理员视角直接点开查看即可,子管理员视角点击上面地址页面最下面的生成CorpSecret
名称随意,关联的部门选择需要的部门,如果不选择具体到某个人,那么消息默认发送到选择的最后一级。获取
CorpSecret授权范围,返回的参数里面会看到。
authed_dept 企业授权的部门id列表 返回值为授权部门id的并集。 (设置“全部员工”时,返回授权的部门id为根部门ID,员工userid列表为空)
IP白名单是根据 GET和POST测试 打印窗口添加的,后期开发系统的时候需要修改成正式服务器公网IP。
确认保存以后窗口关闭,点击查看CorpSecret就可以了。CorpId本身在页面就可以看得到。
corpid
和
CorpSecret拿到了,换取到AccessToken(有效期7200秒,重复获取自动续约)接下来就是拿到企业发送消息的消息体
"touser":"",
"toparty":"",
"agentid":"",
"msgtype":"text",
"text":{"content":"王灵生测试"
}
touser、toparty 通过 获取CorpSecret授权范围 查看
请求说明
Https请求方式: GET
https://oapi.dingtalk.com/auth/scopes?access_token=ACCESS_TOKEN
返回的结果:
{"auth_org_scopes": {"authed_dept": [60958364],"authed_user": []},"auth_user_field": ["avatar","department","deviceId","email","extattr","name","openId","position","userid","jobnumber","mobile","isAdmin","isHide","isLeader","dingId","tel","remark","workPlace"],"condition_field": [],"errmsg": "ok","errcode": 0
}
用到的只是两个:
authed_dept | 企业授权的部门id列表 | 返回值为授权部门id的并集。 (设置“全部员工”时,返回授权的部门id为根部门ID,员工userid列表为空) |
authed_user | 企业授权的员工userid列表 | 返回值为授权人员id的并集。(设置“仅为管理员可见”时,返回所有的管理员id。授权的部门id列表为空) |
authed_dept 即 toparty
authed_user 即 touser
agentid:应用开发
代表应用和企业映射关系的ID(appId的实例化ID),同一个ISV应用在不同企业的agentId不一致 代表以哪个应用的名义发送消息
在管理后台创建微应用,设置-
这里agentID 代表以哪个应用的名义发送消息
最终实现的效果:
企业发送消息总结:
一、ACCESS_TOKEN
1、corpid //应用开发
2、corpsecret
①主管理员(张经理)
直接点击查看
②子管理员
页面右下角 生成corpsecret
二、参数体
"touser":"", //corpsecret授权范围
"toparty":"", //corpsecret授权范围
"agentid":"", //自建应用 设置
"msgtype":"text",
"text":{
"content":"王灵生测试"
}
三、header
Content-Type:application/json