使用feilong發釘釘機器人

 

3年前寫了個 使用 feilong 發企業微信機器人, 現在姐妹篇 釘釘機器人來了

釘釘和企業微信,不同公司根據自身需求,會做出不同的選擇, 並且可能會出現同一家公司, 今年選擇了釘釘,可能後年根據戰略需求換成了企業微信

%E9%92%89%E9%92%89%E5%92%8C%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1
 

釘釘機器人在日常的使用場景中越來越多, 比如服務器關鍵任務告警,定時發通知提醒等等, 和短信相比即免費又不像短信逐漸只有接收驗證碼的功能, 那麼問題來了,如何使用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 名字, 支持一個項目配置多個釘釘機器人,做不同的用途

執行這個單元測試, 你將會收到釘釘機器人發的消息

%E9%92%89%E9%92%89%E6%9C%BA%E5%99%A8%E4%BA%BA%20helloworld

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);
    }

效果:

%E9%92%89%E9%92%89markdown

4.2. sendMessage(String, String, String…​) 支持@ 指定的人員

content 寫法請參考釘釘官方文檔

5. Q&A

5.1. Q: 我公司去年是使用釘釘,今年換成了企業微信, 那麼項目代碼能否不需要大幅度修改?

A: 很好的問題, 下期寫個文檔回覆你 _

--完

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章