创建群自定义机器人
在指定钉钉群(或者随便拉两个人建个群,然后把别人T出去)的群设置里选择 群机器人 -> 自定义,如图:
然后,添加机器人,设置名字,添加成功时如下图:
其中webhook非常重要,下文详述。点击设置说明可以看相关使用文档,文档链接见本文末尾。
使用HTTP POST请求发送消息
直接向上文所述的webhook链接发送POST请求已达到自定义机器人向群内发消息的功能
按照文档中所属的参数格式直接向链接发送请求即可,我使用Postman发送请求如下:
效果如下:
发送其他格式(如:链接消息、markdown、ActionCard)的消息效果如下:
确定你需要哪种消息了吗?如果需要使用,通过这种方式来实现,组织参数还是挺麻烦的,不过我们可以使用sdk来简化操作
使用sdk调用自定义机器人
#/faquestions/vzbp02
public static void main(String[] args) throws ApiException { final String serverUrl = ""; DingTalkClient client = new DefaultDingTalkClient(serverUrl); OapiRobotSendRequest request = new OapiRobotSendRequest(); At at = new At(); at.setIsAtAll("true"); request.setAt(at); // 若上一步isAtAll没有设置true,则根据此处设置的手机号来@指定人 List<String> mobiles = new ArrayList<>(); mobiles.add("166********"); at.setAtMobiles(mobiles); // 以下是设置各种消息格式的方法 sentText(request); // sendLink(request); // sendMarkdown(request); // sendActionCard(request); // sendFeedCard(request); OapiRobotSendResponse response = client.execute(request); System.out.println(response.getErrmsg()); }
text文本消息
public static void sentText(OapiRobotSendRequest request) { Text text = new Text(); text.setContent("sdk demo"); request.setMsgtype("text"); request.setText(text); }
link链接消息
public static void sendLink(OapiRobotSendRequest request) { Link link = new Link(); link.setTitle("好消息!好消息!"); link.setText("本群与 百度 成功达成合作关系,今后大家有什么不懂的可以直接 百度 搜索,不用再群里提问浪费时间啦!"); link.setMessageUrl(""); link.setPicUrl(""); request.setMsgtype("link"); request.setLink(link); }
markdown消息
public static void sendMarkdown(OapiRobotSendRequest request) { Markdown markdown = new Markdown(); markdown.setTitle("好消息!好消息!"); markdown.setText( "#### 杭州天气 @156xxxx8827\n> 9度,西北风1级,空气良89,相对温度73%\n\n" + "> ![screenshot](" + "> ###### 10点20分发布 [天气]( \n"); request.setMsgtype("markdown"); request.setMarkdown(markdown); }
ActionCard消息
public static void sendActionCard(OapiRobotSendRequest request) { Actioncard actioncard = new Actioncard(); actioncard.setTitle("乔布斯 20 年前想打造一间 苹果 咖啡厅,而它正是 Apple Store 的前身"); actioncard.setText( "![screenshot](@lADOpwk3K80C0M0FoA) \n" + " ### 乔布斯 20 年前想打造的 苹果 咖啡厅 Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前 苹果 一个建立咖啡馆的计划"); actioncard.setHideAvatar("0"); actioncard.setBtnOrientation("1"); // actioncard.setSingleTitle("阅读全文"); // actioncard.setSingleURL(""); List<Btns> btns = new ArrayList<>(); Btns btn0 = new Btns(); btn0.setTitle("内容不错"); btn0.setActionURL(""); btns.add(btn0); Btns btn1 = new Btns(); btn1.setTitle("不感兴趣"); btn1.setActionURL(""); btns.add(btn1); actioncard.setBtns(btns); request.setMsgtype("actionCard"); request.setActionCard(actioncard); }
FeedCard消息
类似公众号头条、次条消息
public static void sendFeedCard(OapiRobotSendRequest request) { Feedcard feedcard = new Feedcard(); List<Links> linksList = new ArrayList<>(); Links links0 = new Links(); links0.setTitle("时代的火车向前开1"); links0.setMessageURL( ""); links0.setPicURL(""); linksList.add(links0); Links links1 = new Links(); links1.setTitle("时代的火车向前开2"); links1.setMessageURL( ""); links1.setPicURL(""); linksList.add(links1); feedcard.setLinks(linksList); request.setMsgtype("feedCard"); request.setFeedCard(feedcard); }
参考资源
#/serverapi2/qf2nxq
#/faquestions/dcubhu
#/faquestions/vzbp02