3年前寫了個 使用 feilong 發企業微信機器人, 現在姐妹篇 釘釘機器人來了
釘釘和企業微信,不同公司根據自身需求,會做出不同的選擇, 並且可能會出現同一家公司, 今年選擇了釘釘,可能後年根據戰略需求換成了企業微信
釘釘機器人在日常的使用場景中越來越多, 比如服務器關鍵任務告警,定時發通知提醒等等, 和短信相比即免費又不像短信逐漸只有接收驗證碼的功能, 那麼問題來了,如何使用feilong來發送釘釘機器人呢?
同樣簡單 3 步
1. 第1步: 依賴jar
依賴 feilong (注意檢查不要和項目已有的依賴重複了) 參見 https://www.oschina.net/p/feilong
<dependency>
<groupId>com.github.ifeilong</groupId>
<artifactId>feilong</artifactId>
<version>3.4.1</version>
</dependency>
其他必要依賴 (注意檢查不要和項目已有的依賴重複了)
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.12</version>
<exclusions>
<exclusion>
<artifactId>httpclient</artifactId>
<groupId>org.apache.httpcomponents</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
2. 第2步: springboot類型的項目,配置bean 機器人
@Configuration
public class DingTalkLogBotConfig{
@Bean("dingTalkLogBot")
public DingTalkBot init(){
return DingTalkBotBuilder.newAsyncCatchExceptionDingTalkBot(
"15096d9da**********2ae19dfedcf23ff", // 此處是 釘釘機器人 accessToken
"SECfcf65c9de********c1cc66c49f",// 此處是 釘釘機器人 安全碼 secret
"圖書館小程序"); // 這個是配置的默認機器人標題
}
}
該bean 異步發送消息, 並且如果出現異常自動捕獲,不會影響主線程
3. 第3步: 使用
簡單小示例:
public class DingTalkBotTest extends AbstractJUnit4SpringContextTests{
@Autowired(required = false)
@Qualifier("dingTalkLogBot")
private DingTalkBot dingTalkBot;
//---------------------------------------------
@Test
public void test(){
dingTalkBot.sendMessage("hello world");
}
}
使用 @Qualifier("dingTalkLogBot") 來指明bean 名字, 支持一個項目配置多個釘釘機器人,做不同的用途
執行這個單元測試, 你將會收到釘釘機器人發的消息
4. 關於 DingTalkBot
com.feilong.net.bot.dingtalk.DingTalkBot 提供了2個易用的方法
-
sendMessage(String) 發送普通消息,以及Markdown格式的消息
-
sendMessage(String, String, String…) 支持@ 指定的人員
4.1. sendMessage(String) 發送普通消息,以及Markdown格式的消息
在上述 hello world示例中, 你可以看到發送簡單消息, 也支持markdown格式的消息, 比如
@Test
public void test(){
String content = "## 今晚去喝酒嗎😁 \n" + //
"![](https://img.alicdn.com/tfs/TB1bB9QKpzqK1RjSZFoXXbfcXXa-576-96.png) \n" + //
"> 曾經有一段真摯的愛情 \n" + //
"1. 美女 \n" + //
"2. 帥哥 \n" + //
"- **喝酒** \n" + //
"- [百度](http://baidu.com) \n" + //
"- *唱歌* \n";
dingTalkBot.sendMessage(content);
}
效果:
4.2. sendMessage(String, String, String…) 支持@ 指定的人員
content 寫法請參考釘釘官方文檔
5. Q&A
5.1. Q: 我公司去年是使用釘釘,今年換成了企業微信, 那麼項目代碼能否不需要大幅度修改?
A: 很好的問題, 下期寫個文檔回覆你 _
--完