钉钉@消息推送

最近项目需求,要在钉钉群中能推送@某人 的消息,查了一下钉钉的open API有支持,记录一下。

  1. 群设置->智能群助手->添加机器人

image.png
机器人的类型有很多,我们自定义的推送需要Webhook接入。
创建机器人后,在机器人设置界面可以看到webhook地址。需要注意的是,安全设置是必填的,如果填写自定义关键词,发送的消息中包含自定义关键词的消息才会被推送。

image.png
2. 代码
接口文档地址:在这

image.png
消息的格式如下:

{
     "msgtype": "markdown",
     "markdown": {
         "title":"杭州天气",
         "text": "#### 杭州天气 @150XXXXXXXX \n > 9度,西北风1级,空气良89,相对温度73%\n > ![screenshot](https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png)\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);
	}
}
复制代码
  1. 效果

钉钉群实现@类型的消息推送,最终效果如图所示:

image.png
消息的类型支持markdown,markdown的效果如下(官网给的):

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享