創建群自定義機器人 在指定釘釘群(或者隨便拉兩個人建個群,然後把別人T出去)的群設置里選擇 群機器人 自定義,如圖: 然後,添加機器人,設置名字,添加成功時如下圖: 其中webhook非常重要,下文詳述。點擊設置說明可以看相關使用文檔,文檔鏈接見本文末尾。 使用HTTP POST請求發送消息 直接向 ...
創建群自定義機器人
在指定釘釘群(或者隨便拉兩個人建個群,然後把別人T出去)的群設置里選擇 群機器人 -> 自定義,如圖:
然後,添加機器人,設置名字,添加成功時如下圖:
其中webhook非常重要,下文詳述。點擊設置說明可以看相關使用文檔,文檔鏈接見本文末尾。
使用HTTP POST請求發送消息
直接向上文所述的webhook鏈接發送POST請求已達到自定義機器人向群內發消息的功能
按照文檔中所屬的參數格式直接向鏈接發送請求即可,我使用Postman發送請求如下:
效果如下:
發送其他格式(如:鏈接消息、markdown、ActionCard)的消息效果如下:
確定你需要哪種消息了嗎?如果需要使用,通過這種方式來實現,組織參數還是挺麻煩的,不過我們可以使用sdk來簡化操作
使用sdk調用自定義機器人
public static void main(String[] args) throws ApiException {
final String serverUrl =
"https://oapi.dingtalk.com/robot/send?access_token=*******************************************************";
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("https://www.baidu.com");
link.setPicUrl("http://www.baidu.com/img/bd_logo1.png");
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](https://img2018.cnblogs.com/blog/1775867/201908/1775867-20190823214506246-1471056011.png)\n"
+ "> ###### 10點20分發佈 [天氣](http://www.thinkpage.cn/) \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("https://www.baidu.com/");
List<Btns> btns = new ArrayList<>();
Btns btn0 = new Btns();
btn0.setTitle("內容不錯");
btn0.setActionURL("https://www.qq.com/");
btns.add(btn0);
Btns btn1 = new Btns();
btn1.setTitle("不感興趣");
btn1.setActionURL("https://www.baidu.com/");
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(
"https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI");
links0.setPicURL("https://www.dingtalk.com/");
linksList.add(links0);
Links links1 = new Links();
links1.setTitle("時代的火車向前開2");
links1.setMessageURL(
"https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI");
links1.setPicURL("https://www.dingtalk.com/");
linksList.add(links1);
feedcard.setLinks(linksList);
request.setMsgtype("feedCard");
request.setFeedCard(feedcard);
}