赞
踩
专有钉钉平台:https://openplatform-portal.dg-work.cn/backendManage/#/docs?apiType=serverapi&docKey=2674834
开发单位申请专有钉钉账户,前后端工程运行在自建服务器。 登录专有钉钉管理后台,创建一条应用app, 将登录连接配置到改配置列表中。 App Key App Secret
1.1 这一点很重要 需先订阅开通ding消息服务的访问权限,不会会报错
OPF-B001-05-16-0002----------------》需先订阅开通服务的访问权限
1.2 将测试的人员加入浙政钉
1.3 查看用户详情有uid就是浙政钉accoundId
DING API开放接口V2版本。
接口限制规则:
通知类型为电话语音钉的限制规则:
电话DING使用的阿里云的语音服务,ISV发DING也收到阿里云语音服务的流控管控,阿里云语音服务的流控规则&效果如下:
在API Explorer中调试该接口。
**中文名:**DING API开放接口V2
接口名:/ding/isv/send.json
**所在目录:**DING
**调用方式:**POST(HTTPS)
**发布版本:**V2.7.0
名称 | 子对象 | 类型 | 是否必填 | 示例值 | 描述 | |
---|---|---|---|---|---|---|
tenantId | String | 是 | 695716 | 租户ID | ||
creator | Obj | 是 | “creator”:{“accountId”:8844491,dingId"accountOrgId":“”, “accountOrgName”:“”} | 发送者 | ||
accountId | Long | 是 | 账号ID | |||
accountName | String | 是 | 账号名称 | |||
accountOrgId | String | 否 | 组织ID | |||
accountOrgName | String | 否 | 组织名称 | |||
receivers | List | 是 | [{ “accountId”:143918250, “accountName”:“冯世明”, “accountOrgId”:“pre.saas.zwdingding”}] | 接收者集合,最多1000个。 | ||
accountId | Long | 是 | 账号ID | |||
accountName | String | 是 | 账号名称 | |||
accountOrgId | String | 否 | 组织ID | |||
accountOrgName | String | 否 | 组织名称 | |||
source | Obj | 是 | 无需发送到im会话:“source”:{“extJson”:“{“msgId”:”“}”, “sourceId”:“143906377”,“sourceName”:“周丽英”}需要发送到im会话:“source”:{“extJson”:“{“msgId”:”“}”, “sourceId”:“207693:789507”,“sourceName”:“xxx办公室”} | 来源信息。具体见各字段描述。 | ||
sourceId | 是 | “sourceId”:“143906377"或者"sourceId”:“207693:789507” | 创建DING的源。sourceId分情况: 无需发送IM会话时:sourceId与creator的accountId保持一致。需要发送IM会话时:sourceId需要按照发送方接收方两个uid,小:大的顺序填写。 (小uid:大uid,英文冒号拼接,大小由uid数值大小判断,小的在前大的在后)如:“sourceId”:"207693:789507"注意:发送到IM只支持发送单人,不能群发。 | |||
sourceName | 是 | xxx办公室 | 源的名称,如会话名 | |||
extJson | 是 | “extJson”:“{“msgId”:”“}” | 扩展字段,msgId默认为空,无需填写 | |||
body | String | 是 | “body”:“{“text”:”(当前版本过低,升级版本后可查看DING详情)“}” | 内容json字符串,必须带text这个key | ||
bodyType | String | 是 | text | 内容类型,目前发钉接口只支持文本类型text:文本 | ||
textType | String | 是 | plaintext | 内容加密类型plaintext:明文 | ||
dingBody | String | 是 | “dingBody”:“{“text”:“通知一下,晚上加班”}” | 消息体json字符串 | ||
dingBodyContentType | String | 是 | attachment | 消息体内容类型,文本默认填写:attachment | ||
dingBodyTextType | String | 是 | plaintext | 消息体加密类型plaintext:明文;ciphertext:密文(暂不对ISV开放) | ||
notifyType | String | 是 | app | 通知类型 app:应用内;sms:短信;vms:语音(电话语音钉限制规则见接口说明) | ||
sendToIm | Boolean | 否 | false | 是否发送到IM会话,默认false为true时scene填写固定值:session注意:发送到IM只支持发送单人,不能群发。 | ||
scene | String | 否 | session | sendToIm为true,scene填写固定值:session |
名称 | 类型 | 描述 |
---|---|---|
success | Boolean | 请求是否成功。true:请求成功;false:请求失败 |
content | Object | |
└ data | String | 发钉ID,可根据此信息,来查询/ding/query/userDetail以获取已未读/发送成功失败的接收者信息 |
└ success | Boolean | 业务处理是否成功 |
调用示例
/**
*@Description: ding消息
*@Parameter: [creator 发送浙, receivers 接收者, dingBody 发送消息]
*@Return: java.lang.String
*@Author: jxj
*@Date: 2022/7/22
**/
public String sendNotice(String creator ,String receivers, String dingBody){
ExecutableClient executableClient = ExecutableClient.getInstance();
executableClient.setAccessKey("xxxxxxxxxxxxxxxxxxx");
executableClient.setSecretKey("xxxxxxxxxxxxxxxxxxx");
executableClient.setDomainName("openplatform.dg-work.cn");
executableClient.setProtocal("https");
//executableClient要单例,并且使用前要初始化,只需要初始化一次
executableClient.init();
//浙政钉发送ding消息接口
String api = "/ding/isv/send.json";
PostClient postClient = executableClient.newPostClient(api);
postClient.addParameter("bodyType", "text");
postClient.addParameter("creator", creator);
postClient.addParameter("dingBodyTextType", "plaintext");
postClient.addParameter("dingBody", dingBody);
postClient.addParameter("textType", "plaintext");
postClient.addParameter("source", "{\"extJson\":{\"msgId\":\"\"}, \"sourceId\":\"834828 \",\"sourceName\":\"张硕\"}");
postClient.addParameter("body", "{'text':'当前版本过低,升级版本后可查看DING详情'}");
postClient.addParameter("scene", "");
postClient.addParameter("notifyType", "app");
postClient.addParameter("receivers", receivers);
postClient.addParameter("tenantId", "53236");
postClient.addParameter("dingBodyContentType", "text");
postClient.addParameter("sendToIm", "");
postClient.addParameter("accountId", "");
postClient.addParameter("accountName", "");
postClient.addParameter("accountOrgName", "");
postClient.addParameter("accountOrgId", "");
postClient.addParameter("sourceId", "");
postClient.addParameter("extJson", "");
postClient.addParameter("sourceName", "");
postClient.addParameter("accountId", "");
postClient.addParameter("accountName", "");
postClient.addParameter("accountOrgName", "");
postClient.addParameter("accountOrgId", "");
String apiResult = postClient.post();
System.out.println(apiResult);
executableClient.destroy();
return "ok";
}
请求包结构体
{
"body":"{\"text\":\"(当前版本过低,升级版本后可查看DING详情)\"}",
"bodyType":"text",
"creator":{
"accountId":143906377,
"accountName":"周丽英",
"accountOrgId":"GE_64e388fd7d954175916e8d885e895d5e",
"accountOrgName":"杭州市公安局-AAA哈哈哈"
},
"dingBody":"{\"text\":\"通知一下,晚上加班\"}",
"dingBodyContentType":"text",
"dingBodyTextType":"plaintext",
"notifyType":"app",
"receivers":[
{
"accountId":143918250,
"accountName":"冯世明",
"accountOrgId":"pre.saas.zwdingding"
}
],
"sendToIm":false,
"source":{
"extJson":"{\"msgId\":\"\"}",
"sourceId":"143906377",
"sourceName":"周丽英"
},
"tenantId":"695716",
"textType":"plaintext",
"urge":false
}
返回结果
成功返回示例
{"success":true,"content":{"data":"138728294124720032","success":true}}
失败返回示例
失败返回案例
错误码 | 错误描述 | 说明 |
---|---|---|
0 | OK | 成功 |
GDG-B001-05-15-0001 | ILLEGAL_ARGUMENT | 参数错误 |
GDG-S001-05-99-0001 | SYSTEM_ERROR | 未知系统异常 |
GDG-B001-05-16-0003 | MOZI_ACL_CHECK_ERROR | 接收人可见性过滤异常 |
1.测试账号必须在通讯录里
2.必须给应用加ding消息权限
1-05-15-0001 | ILLEGAL_ARGUMENT | 参数错误 |
| GDG-S001-05-99-0001 | SYSTEM_ERROR | 未知系统异常 |
| GDG-B001-05-16-0003 | MOZI_ACL_CHECK_ERROR | 接收人可见性过滤异常 |
1.测试账号必须在通讯录里
2.必须给应用加ding消息权限
3.传参务必转jsonString 字符串
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。