#robot #message #send-message #sdk #utils #api #markdown

dingtalk

DingTalk 机器人工具,使用钉钉机器人发送文本/Markdown/链接消息

21 个版本 (12 个稳定版本)

2.0.2 2021年1月8日
2.0.0 2020年5月15日
1.3.2 2020年5月4日
1.2.1 2020年1月23日
0.3.0 2019年12月29日

#631文本处理

每月下载量 43

MIT 协议

29KB
499

dingtalk

DingTalk 机器人工具,使用钉钉机器人发送文本/Markdown/链接消息

钉钉机器人 Rust SDK

注意:从版本 1.1.0 开始,dingtalk 使用 reqwest 0.10.0 的 async/.await API。

官方参考: https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq/0fa88adc

示例 1

use dingtalk::DingTalk;

#[tokio::main]
pub async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let dt = DingTalk::new("<token>", "");
    dt.send_text("Hello world!").await?;

    Ok(())
}

需要使用 crate: tokio = { version = "0.2.6", features = ["full"] }.

示例 2(从文件读取 token)

#[tokio::main]
pub async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let dt = DingTalk::from_file("~/.dingtalk-token.json")?;
    dt.send_text("Hello world!").await?;

    Ok(())
}

示例,发送 Markdown 消息

dt.send_markdown("markdown title 001", r#"# markdown content 001
* line 0
* line 1
* line 2"#).await?;

示例,发送链接消息

dt.send_link("link title 001", "link content 001", "https://hatter.ink/favicon.png", "https://hatter.ink/").await?;

示例,发送信息卡片消息

dt.send_message(DingTalkMessage::new_feed_card()
    .add_feed_card_link(DingTalkMessageFeedCardLink{
        title: "test feed card title 001".into(),
        message_url: "https://hatter.ink/".into(),
        pic_url: "https://hatter.ink/favicon.png".into(),
    })
    .add_feed_card_link(DingTalkMessageFeedCardLink{
        title: "test feed card title 002".into(),
        message_url: "https://hatter.ink/".into(),
        pic_url: "https://hatter.ink/favicon.png".into(),
    })
).await?;

示例,发送操作卡片消息(单个按钮)

dt.send_message(DingTalkMessage::new_action_card("action card 001", "action card text 001")
    .set_action_card_signle_btn(DingTalkMessageActionCardBtn{
        title: "test signle btn title".into(),
        action_url: "https://hatter.ink/".into(),
    })
).await?;

示例,发送操作卡片消息(多个按钮)

dt.send_message(DingTalkMessage::new_action_card("action card 002", "action card text 002")
    .add_action_card_btn(DingTalkMessageActionCardBtn{
        title: "test signle btn title 01".into(),
        action_url: "https://hatter.ink/".into(),
    })
    .add_action_card_btn(DingTalkMessageActionCardBtn{
        title: "test signle btn title 02".into(),
        action_url: "https://hatter.ink/".into(),
    })
).await?;

JSON 配置

钉钉配置

{
  "access_token": "<access token>",
  "sec_token": "<sec token>"
}

企业微信配置

{
  "type": "wechat",
  "access_token": "<token>"
}

变更日志

  • v2.0.0
    • 移除 'a 生命周期
  • v1.3.2
    • 添加 DingTalk::from_token
  • v1.3.1
    • 添加 DingTalk::new_wechat
  • v1.3.0
    • 支持企业微信,添加类型 "type": "wechat",支持方法 DingTalk::send_text
  • v1.2.1
    • 移除 maplit crate
  • v1.2.0
    • 使用 serdeserde_json crate,替换 json crate
  • v1.1.2
    • 使用 hmacsha2 crate,替换 rust-crypto crate
  • v1.1.1
    • DingTalk::from_json 添加 direct_url
    • 通过 clippy 修复问题
  • v1.1.0
    • 将 fn 改为 async/.await
  • v1.0.1
    • 修改两个函数名
    • 添加readme示例代码
  • v1.0.0
  • v0.3.0
    • 添加FeedCard消息,发送feed卡消息类型
  • v0.2.1
    • 添加Dingtalk::from_json,从JSON字符串中读取令牌
  • v0.2.0
    • 添加DingTalk::from_file,从文件中读取令牌
  • v0.1.2
    • 添加对Default::default()的支持
  • v0.1.1
    • 添加set_default_webhook_url,默认钉钉webhook URL
  • v0.1.0
    • 添加DingTalk::send_link(...),发送链接消息
  • v0.0.3
    • 添加DingTalkMessage,现在可以设置at_allat_mobiles

依赖项

~4.5-9MB
~201K SLoC