目录
添加群机器人
可以查看这篇文章:添加机器人到钉钉群 使用命令行工具curl快速验证自定义机器人是否可以正常工作。可以使用如下命令,把对应的链接调整成对应群的webhook地址即可。
curl \'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx\' \\ -H \'Content-Type: application/json\' \\ -d \'{\"msgtype\": \"text\",\"text\": {\"content\":\"嗨,我来啦\"}}\'
Java请求示例
/** * 通知消息发送到群聊 * @param webhook 钉钉机器人地址(配置机器人的webhook) * @param isAtAll 是否通知所有人 * @param mobileList 通知具体人的手机号码列表 * @param content 消息内容 */ public static void sendMsgToGroupChat(String webhook,boolean isAtAll,List<String> mobileList,String content){ try { //组装请求内容 String reqStr = buildReqStr(content, isAtAll, mobileList); //推送消息(http请求) String result = HttpUtil.post(webhook, reqStr); log.info(\"通知响应结果:{}\",result); }catch (Exception e){ log.error(\"webhook通知失败\",e); } } /** * 组装请求报文(Map封装) * @param content 通知内容 * @param isAtAll 是否@所有人 * @param mobileList 通知具体人的手机号码 * @return */ private static String buildReqStr(String content, boolean isAtAll, List mobileList) { //消息内容 Map contentMap = Maps.newHashMap(); contentMap.put(\"content\", content); //通知人 Map atMap = Maps.newHashMap(); //1.是否通知所有人 atMap.put(\"isAtAll\", isAtAll); //2.通知具体人的手机号码列表 atMap.put(\"atMobiles\", mobileList); Map reqMap = Maps.newHashMap(); reqMap.put(\"msgtype\", \"text\"); reqMap.put(\"text\", contentMap); reqMap.put(\"at\", atMap); return JSON.toJSONString(reqMap); } /** * 获取通知消息 * @return */ private static String getContent() { //钉钉机器人消息内容 String content; //通过转码网站http://tool.chinaz.com/Tools/unicode.aspx // 选择中文转Unicode把钉钉表情转换成unicode编码,也可以直接用表情对应的中文设置 String milkyTea = \"过来请我喝奶茶[奶茶][流鼻血][流鼻血]\\u005b\\u6d41\\u9f3b\\u8840\\u005d\"; String NEWLINE = \"\\n\"; StringBuffer sb = new StringBuffer(); sb.append(\"小哥哥,你好!\") .append(NEWLINE) .append(milkyTea); content = sb.toString(); return content; }
通过main函数执行调用
public static void main(String[] args) throws ApiException { //把webhook设置成对应群的即可 String webhook = \"https://oapi.dingtalk.com/robot/send?access_token=xxx\"; String content = getContent(); ArrayList<String> mobileList = Lists.newArrayList(); sendMsgToGroupChat(webhook,false,mobileList,content); }
可以看到如下通知效果:
添加通知人后效果如下:
官方SDK请求示例
如果只是为了发起一个简单的消息通知上述动态配置后足够使用,要使用更多消息类型推荐使用官方SDK进行消息发送,毕竟官方进行了一层封装,使用起来会更方便些。
pom引入官方SDK
<dependency> <groupId>com.aliyun</groupId> <artifactId>alibaba-dingtalk-service-sdk</artifactId> <version>2.0.0</version> </dependency>
群消息通知方法
可以通过如下案例实现对应消息的通知。自定义机器人支持文本 (text)、链接 (link)、markdown(markdown)、ActionCard、FeedCard消息类型。
/** * 通知SDK消息发送到群聊 * @param webhook 钉钉机器人地址(配置机器人的webhook) * */ public static void sendMsgToGroupChatSDK(String webhook) throws ApiException { DingTalkClient client = new DefaultDingTalkClient(webhook); OapiRobotSendRequest request = new OapiRobotSendRequest(); //普通文本消息 request.setMsgtype(\"text\"); OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text(); text.setContent(\"你好,测试文本消息\"); request.setText(text); OapiRobotSendRequest.At at = new OapiRobotSendRequest.At(); at.setAtMobiles(Arrays.asList(\"176xxx\")); // isAtAll类型如果不为Boolean,请升级至最新SDK at.setIsAtAll(true); at.setAtUserIds(Arrays.asList(\"109929\",\"32099\")); request.setAt(at); //md格式消息 request.setMsgtype(\"markdown\"); OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown(); markdown.setTitle(\"杭州天气\"); markdown.setText(\"#### 杭州天气 @156xxxx8827\\n\" + \"> 9度,西北风1级,空气良89,相对温度73%\\n\\n\" + \"> ![screenshot](https://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png)\\n\" + \"> ###### 10点20分发布 [天气](http://www.thinkpage.cn/) \\n\"); request.setMarkdown(markdown); //链接 request.setMsgtype(\"link\"); OapiRobotSendRequest.Link link = new OapiRobotSendRequest.Link(); link.setMessageUrl(\"https://blog.csdn.net/qq_35427589\"); link.setPicUrl(\"\"); link.setTitle(\"时代的火车向前开\"); link.setText(\"这个即将发布的新版本,创始人xx称它为红树林。而在此之前,每当面临重大升级,产品经理们都会取一个应景的代号,这一次,为什么是红树林\"); request.setLink(link); OapiRobotSendResponse response = client.execute(request); log.info(\"执行结果回执{}\",JSON.toJSONString(response)); }
做猪小侠源码的代理,提供一站式服务
如果你不懂得搭建网站或者服务器,小程序,源码之类的怎么办? 第一通过本站学习各种互联网的技术 第二就是联系客服,我帮帮你搭建(当然要收取部分的费用) 第三成为我们的代理,我们提供整套的服务。