整合 Lark 机器人指南
本指南将介绍如何将 Lark 机器人集成到您的应用程序中。我们将介绍两种集成方式:
- 使用
LarksuiteNotificationUtils
工具类 - 使用 Lark 官方 SDK (
oapi-sdk
)
目录
使用 LarksuiteNotificationUtils
LarksuiteNotificationUtils
是 tio-utils
内置的工具类,提供了简便的方法将消息推送到 Lark 群组。
添加机器人
- 创建群组:首先,创建一个新的群组。
- 添加机器人:将 Lark 机器人添加到该群组中。
- 获取 Webhook URL:在机器人设置中获取 Webhook 地址,用于后续消息推送。
推送消息
使用 LarksuiteNotificationUtils
推送消息的示例如下:
import com.litongjava.tio.utils.notification.LarksuiteNotificationUtils;
import okhttp3.Response;
import java.io.IOException;
try (Response response = LarksuiteNotificationUtils.sendWarm(EnvUtils.get("warm.notification.webhook.url"), model)) {
if (!response.isSuccessful()) {
try {
log.info("消息推送失败: {}", response.body().string());
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
说明:
LarksuiteNotificationUtils.sendWarm
方法用于发送消息到指定的 Lark Webhook URL。- 使用
EnvUtils.get("warm.notification.webhook.url")
获取存储在环境变量中的 Webhook 地址。 model
是您要发送的消息内容模型。
使用 Lark 官方 SDK (oapi-sdk
)
Lark 官方提供了 oapi-sdk
,使得与 Lark API 的集成更加灵活和强大。
创建与添加机器人
- 创建机器人:在 Lark 开发者后台创建一个新的机器人应用。
- 添加机器人到群组:将机器人添加到目标群组中。
获取机器人基本信息
在机器人创建完成后,记录下机器人的 APP ID
和 APP Secret
,这些信息将在后续步骤中使用。
获取 RECEIVE_ID
RECEIVE_ID
是指消息接收者的唯一标识,可以是群组 ID 或个人 ID。获取方法通常通过 Lark 提供的接口或在机器人添加到群组后由系统生成。
添加依赖
在您的项目中添加 Lark 官方 SDK 的依赖。使用 Maven 时,在 pom.xml
中添加以下内容:
<dependency>
<groupId>com.larksuite.oapi</groupId>
<artifactId>oapi-sdk</artifactId>
<version>2.2.10</version>
</dependency>
推送消息
编写一个工具类用于发送消息:
import com.jfinal.kit.Kv;
import com.lark.oapi.Client;
import com.lark.oapi.service.im.v1.enums.CreateMessageReceiveIdTypeEnum;
import com.lark.oapi.service.im.v1.model.CreateMessageReq;
import com.lark.oapi.service.im.v1.model.CreateMessageReqBody;
import com.litongjava.tio.utils.json.JsonUtils;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class LarkBotQuestionUtils {
public static final String APP_ID = "cli_xxxxx"; // 替换为你的 APP ID
public static final String APP_SECRET = "xxxx"; // 替换为你的 APP Secret
public static final String RECEIVE_ID = "xxxx"; // 替换为接收消息的 ID
public static void send(String text) {
// 初始化客户端
Client client = Client.newBuilder(APP_ID, APP_SECRET).build();
// 构建消息内容
String content = JsonUtils.toJson(Kv.by("text", text));
// 构建消息体
CreateMessageReqBody reqBody = CreateMessageReqBody.newBuilder()
.receiveId(RECEIVE_ID)
.msgType("text")
.content(content)
.build();
// 构建消息请求
CreateMessageReq req = CreateMessageReq.newBuilder()
.receiveIdType(CreateMessageReceiveIdTypeEnum.CHAT_ID)
.createMessageReqBody(reqBody)
.build();
try {
// 发送消息
CreateMessageResp resp = client.im().v1().message().create(req);
if (resp.getError() != null) {
log.error("发送消息到 Lark 机器人失败: {}", resp.getError());
}
} catch (Exception e) {
log.error("消息发送异常", e);
}
}
}
说明:
- 初始化客户端:使用
APP_ID
和APP_SECRET
初始化 Lark API 客户端。 - 构建消息内容:将文本消息转换为 JSON 格式。
- 构建消息体:指定接收者 ID、消息类型和内容。
- 发送消息:通过 Lark API 发送消息,并处理可能的错误。
单元测试
为了验证 LarkBotQuestionUtils
的正常工作,可以编写如下 JUnit 测试:
import org.junit.Test;
public class LarkBotQuestionUtilsTest {
@Test
public void testSendMessage() {
LarkBotQuestionUtils.send("你好吗?");
}
}
说明:
- 该测试将向指定的 Lark 机器人发送一条 "你好吗?" 的消息,确保集成工作正常。
总结
通过以上两种方式,您可以方便地将 Lark 机器人集成到您的应用程序中。LarksuiteNotificationUtils
提供了简洁的方法用于快速推送通知,而 Lark 官方 SDK (oapi-sdk
) 则提供了更为灵活和强大的功能,适用于需要更复杂集成的场景。根据您的具体需求选择合适的集成方式,实现高效的消息推送。
ref
https://github.com/larksuite/oapi-sdk-java