使用 Java 实现钉钉机器人 AT 某人

在企业内部沟通中,钉钉作为一种流行的工具,可以通过机器人的方式实现消息的自动化发送。本文将带你了解如何通过 Java 开发一个简单的钉钉机器人,并实现在群聊中 @ 某一个人。

整体流程

为了实现钉钉机器人的 AT 功能,我们可以将整个流程分为以下几个步骤:

步骤编号 步骤描述
1 创建钉钉机器人并获取 webhook
2 创建 Java 项目并引入相关库
3 编写发送消息的 Java 代码
4 运行代码并验证功能

步骤详解

1. 创建钉钉机器人并获取 webhook

在钉钉中创建一个自定义机器人,并从中获取到 webhook URL。具体步骤:

  • 打开钉钉,进入目标群聊,点击右上角“群设置”。
  • 选择“智能机器人” -> “添加机器人”,选择“自定义”。
  • 设置机器人名称,添加关键字(可选),并开启“签名校验”。
  • 按照指引获取 webhook 地址,记下来。

2. 创建 Java 项目并引入相关库

在你的开发环境(如 IntelliJ IDEA 或 Eclipse)中新建一个 Java 项目。为了方便发送 HTTP 请求,你可以使用 Apache HttpClient 库,添加 Maven 依赖:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.13</version>
</dependency>

3. 编写发送消息的 Java 代码

下面是实现钉钉机器人发送消息的代码示例。代码中已注释以便理解。

import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class DingTalkRobot {
    // 将你的 webhook 填入这里
    private static final String WEBHOOK = "

    public static void main(String[] args) {
        // AT 的人列表,用 UserID 或者手机号
        String userId = "USER_ID_TO_AT";
        String message = "你好, @某人"; // 你的消息内容

        // 发送消息
        sendMessage(userId, message);
    }

    private static void sendMessage(String userId, String message) {
        // 创建 HttpClient 实例
        try (CloseableHttpClient client = HttpClients.createDefault()) {
            // 创建 POST 请求
            HttpPost post = new HttpPost(WEBHOOK);
            post.setHeader("Content-Type", "application/json");

            // 构建消息体 JSON
            String json = String.format(
                "{\"msgtype\":\"text\",\"text\":{\"content\":\"%s\"},\"at\":{\"atMobiles\":[\"%s\"]}}",
                message, userId
            );

            // 设置请求体
            post.setEntity(new StringEntity(json));
            // 发送请求并获取响应
            String response = EntityUtils.toString(client.execute(post).getEntity());
            System.out.println("Response: " + response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

4. 运行代码并验证功能

确保已经将 WEBHOOK 的 URL 替换为你实际获取到的 webhook 地址,然后运行代码。如果设置正确,指定的用户将会收到钉钉机器人的 @ 消息。

状态图

接下来,使用 Mermaid 语法画出状态图,帮助你理解机器人的状态变化。

stateDiagram
    [*] --> 初始化
    初始化 --> 发送消息
    发送消息 --> [*]

类图

下面使用 Mermaid 语法建立出我们代码中的类图,帮助你更直观地理解类之间的关系。

classDiagram
    class DingTalkRobot {
        +static final String WEBHOOK
        +main(args: String[])
        +sendMessage(userId: String, message: String)
    }

结尾

到此为止,我们实现了一个简单的通过 Java 发送消息至钉钉群聊并 @ 某个人的机器人。首先,我们创建了钉钉机器人并获取到 webhook,然后通过 Maven 项目引入了 HTTP 客户端库,接着编写了 Java 代码发送消息。最后,运行代码验证了功能是否正常。通过这次实践,希望能够帮助你掌握与钉钉机器人互动的基本方法。未来可以进一步深入,扩展机器人的功能,使其更加智能与实用!如果有任何问题,欢迎随时问我。