最近项目需求,要在钉钉群中能推送@某人 的消息,查了一下钉钉的open API有支持,记录一下。
- 群设置->智能群助手->添加机器人
机器人的类型有很多,我们自定义的推送需要Webhook接入。
创建机器人后,在机器人设置界面可以看到webhook地址。需要注意的是,安全设置是必填的,如果填写自定义关键词,发送的消息中包含自定义关键词的消息才会被推送。
2. 代码
接口文档地址:在这
消息的格式如下:
{
"msgtype": "markdown",
"markdown": {
"title":"杭州天气",
"text": "#### 杭州天气 @150XXXXXXXX \n > 9度,西北风1级,空气良89,相对温度73%\n > \n > ###### 10点20分发布 [天气](https://www.dingtalk.com) \n"
},
"at": {
"atMobiles": [
"150XXXXXXXX"
],
"atUserIds": [
"user123"
],
"isAtAll": false
}
}
复制代码
代码:
//发送钉钉@消息
private static void sendDingTalkAtMessage(String webhook, String atMobiles, String message) {
try {
DingTalkClient client = new DefaultDingTalkClient(webhook);
OapiRobotSendRequest request = new OapiRobotSendRequest();
OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
//被@人的手机号
if (StringUtils.isNotBlank(atMobiles)) {
at.setAtMobiles(Arrays.asList(atMobiles.split(",")));
String atMsg = Arrays.asList(atMobiles.split(",")).stream().map(mobile -> "@" + mobile).collect(Collectors.joining());
message += atMsg;
} else {//@所有人
at.setIsAtAll("true");
}
request.setAt(at);
request.setMsgtype("markdown");
OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown();
markdown.setTitle("测试");
markdown.setText(message);
logger.info("message:{}", message);
request.setMarkdown(markdown);
client.execute(request);
} catch (ApiException e) {
logger.error("sendDingTalkAtMessage error:", e);
}
}
复制代码
- 效果
钉钉群实现@类型的消息推送,最终效果如图所示:
消息的类型支持markdown,markdown的效果如下(官网给的):
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END