钉钉企业通知消息接口(一)

车辆管理系统需要及时发送通知给钉钉用户,实现和钉钉的对接。

接口调用采用平台:

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 企业应用的凭证密钥

corpidCorpSecret在钉钉开放平台中 工作台-应用开发-开发账号管理  地址是:

https://open-dev.dingtalk.com/#/corpAuthInfo?_k=r3n7eq

获取CorpSecret等开发信息

主管理员视角直接点开查看即可,子管理员视角点击上面地址页面最下面的生成CorpSecret

名称随意,关联的部门选择需要的部门,如果不选择具体到某个人,那么消息默认发送到选择的最后一级。获取CorpSecret授权范围,返回的参数里面会看到。

authed_dept 企业授权的部门id列表 返回值为授权部门id的并集。 (设置“全部员工”时,返回授权的部门id为根部门ID,员工userid列表为空)

IP白名单是根据  GET和POST测试  打印窗口添加的,后期开发系统的时候需要修改成正式服务器公网IP。

确认保存以后窗口关闭,点击查看CorpSecret就可以了。CorpId本身在页面就可以看得到。


corpidCorpSecret拿到了,换取到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

猜你喜欢

转载自blog.csdn.net/qq_17058993/article/details/81666447