卡片消息构成为图片和底部确认收到按钮,群里人员点击确认收到按钮后可以在消息下方显示自己的id?如何实现?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
要实现卡片消息中包含图片和底部确认收到按钮,并在群里人员点击“确认收到”按钮后,在消息下方显示自己的ID,可以按照以下步骤进行设计和开发。以下是基于钉钉开放平台的实现方案:
创建钉钉应用:
获取凭证:
Card.Streaming.Write
:允许发送流式卡片消息。Card.Instance.Write
:允许实例化卡片消息。监听用户点击事件:
userId
)。messageId
)。actionKey
)。更新卡片内容:
以下是一个简化的示例代码,用于处理用户点击事件并更新卡片内容:
@PostMapping("/cardCallback")
public void handleCardCallback(@RequestBody Map<String, Object> payload) {
// 解析回调数据
String userId = (String) payload.get("userId");
String messageId = (String) payload.get("messageId");
// 获取当前卡片内容
CardMessage currentCard = getCardMessageById(messageId);
// 更新用户ID列表
List<String> confirmedUsers = currentCard.getConfirmedUsers();
if (!confirmedUsers.contains(userId)) {
confirmedUsers.add(userId);
}
// 更新卡片消息
updateCardMessage(messageId, confirmedUsers);
}
private CardMessage getCardMessageById(String messageId) {
// 根据消息ID从数据库或缓存中获取卡片内容
return cardRepository.findById(messageId);
}
private void updateCardMessage(String messageId, List<String> confirmedUsers) {
// 调用钉钉API更新卡片内容
DingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.com/v1.0/card/update");
UpdateCardRequest request = new UpdateCardRequest();
request.setMessageId(messageId);
request.setCardContent(buildCardContent(confirmedUsers));
client.execute(request);
}
private String buildCardContent(List<String> confirmedUsers) {
// 构建新的卡片内容
return "{ \"content\": \"已确认收到的用户:" + String.join(", ", confirmedUsers) + "\" }";
}
通过上述步骤,您可以实现一个包含图片和确认按钮的卡片消息,并在用户点击按钮后动态显示其ID的功能。