diff --git a/src/main/java/com/wonderland/stardewvalley/lark/card/CardTemplate.java b/src/main/java/com/wonderland/stardewvalley/lark/card/CardTemplate.java index e85e053..30206ed 100644 --- a/src/main/java/com/wonderland/stardewvalley/lark/card/CardTemplate.java +++ b/src/main/java/com/wonderland/stardewvalley/lark/card/CardTemplate.java @@ -5,7 +5,7 @@ import lombok.Getter; @Getter public enum CardTemplate { CARD_TEMPLATE_WEATHER("AAqxas5etOJDx", "1.0.5"), - CARD_TEMPLATE_FRAM("AAqxaYo9rbXPa", "1.0.7"); + CARD_TEMPLATE_FARM("AAqxaYo9rbXPa", "1.0.7"); private String cardId; private String version; diff --git a/src/main/java/com/wonderland/stardewvalley/util/lark/EventListener.java b/src/main/java/com/wonderland/stardewvalley/util/lark/EventListener.java index cfbdabc..7efbdfb 100644 --- a/src/main/java/com/wonderland/stardewvalley/util/lark/EventListener.java +++ b/src/main/java/com/wonderland/stardewvalley/util/lark/EventListener.java @@ -34,9 +34,10 @@ public class EventListener { public void handle(P2BotMenuV6 event) throws Exception { String eventKey = event.getEvent().getEventKey(); if (eventKey.equals("weather")) { - // TODO 完善调用,发送天气卡片 WeatherHandle weatherHandle = SpringContextUtil.getBean(WeatherHandle.class); weatherHandle.sendCard(); + } else if (eventKey.equals("farm")) { + LarkUtil.sendFarmCard(); } System.out.printf("[ onP2BotMenuV6 access ], data: %s\n", Jsons.DEFAULT.toJson(event.getEvent())); diff --git a/src/main/java/com/wonderland/stardewvalley/util/lark/LarkUtil.java b/src/main/java/com/wonderland/stardewvalley/util/lark/LarkUtil.java index 95346ac..04b8a11 100644 --- a/src/main/java/com/wonderland/stardewvalley/util/lark/LarkUtil.java +++ b/src/main/java/com/wonderland/stardewvalley/util/lark/LarkUtil.java @@ -11,10 +11,10 @@ import com.lark.oapi.service.im.v1.model.CreateMessageReq; import com.lark.oapi.service.im.v1.model.CreateMessageReqBody; import com.lark.oapi.service.im.v1.model.CreateMessageResp; import com.wonderland.stardewvalley.common.constant.BackGroundConstant; -import com.wonderland.stardewvalley.service.ai.ChatUtil; import com.wonderland.stardewvalley.common.constant.LarkConstant; import com.wonderland.stardewvalley.entity.game.Weather; import com.wonderland.stardewvalley.lark.card.CardTemplate; +import com.wonderland.stardewvalley.service.ai.ChatUtil; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -129,4 +129,58 @@ public class LarkUtil { // 业务数据处理 System.out.println(Jsons.DEFAULT.toJson(resp.getData())); } + + public static void sendFarmCard() throws Exception { + // 构建client + Client client = Client.newBuilder(LarkConstant.APP_ID, LarkConstant.APP_SECRET).build(); + + // 生成uuid + String uuid = IdUtil.randomUUID().toString(); + + // 卡片参数 +// String textParam = JSONUtil.toJsonStr(weather); +// log.info(textParam); + + + // 构建卡片:对于不同的卡片,只需要给出不同的 模板id 版本号 变量字段 + + + + Map templateData = new HashMap<>(); + templateData.put("template_id", CardTemplate.CARD_TEMPLATE_FARM.getCardId()); + templateData.put("template_version_name", CardTemplate.CARD_TEMPLATE_FARM.getVersion()); +// templateData.put("template_variable", ""); +// String jsonCardContent = Jsons.DEFAULT.toJson(templateData); + + Map jsonContent = new HashMap<>(); + jsonContent.put("data", templateData); + jsonContent.put("type", "template"); + String json = Jsons.DEFAULT.toJson(jsonContent); + + log.info(json); + + // 创建请求对象 + CreateMessageReq req = CreateMessageReq.newBuilder() + .receiveIdType("open_id") + .createMessageReqBody(CreateMessageReqBody.newBuilder() + .receiveId(LarkConstant.USER_OPEN_ID) + .msgType("interactive") + .content(json) + .uuid(uuid) + .build()) + .build(); + + // 发起请求 + CreateMessageResp resp = client.im().v1().message().create(req); + + // 处理服务端错误 + if(!resp.success()) { + System.out.println(String.format("code:%s,msg:%s,reqId:%s, resp:%s", + resp.getCode(), resp.getMsg(), resp.getRequestId(), Jsons.createGSON(true, false).toJson(JsonParser.parseString(new String(resp.getRawResponse().getBody(), StandardCharsets.UTF_8))))); + return; + } + + // 业务数据处理 + System.out.println(Jsons.DEFAULT.toJson(resp.getData())); + } }