mateclaw/mateclaw-server/src/main/java/vip/mate/channel/ChannelMessage.java

81 lines
2.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package vip.mate.channel;
import lombok.Builder;
import lombok.Data;
import vip.mate.workspace.conversation.model.MessageContentPart;
import java.time.LocalDateTime;
import java.util.List;
/**
* 渠道消息模型
* <p>
* 统一封装来自不同渠道的消息,采用渠道地址 + 原生 payload 设计。
* 所有渠道的入站消息先转为此格式,再由 ChannelMessageRouter 路由到 Agent。
* <p>
* 实际消息内容以 contentParts 为准content 字段保留纯文本摘要用于向后兼容。
*
* @author MateClaw Team
*/
@Data
@Builder
public class ChannelMessage {
/** 消息ID渠道原始ID */
private String messageId;
/** 渠道类型 */
private String channelType;
/** 发送者ID */
private String senderId;
/** 发送者名称 */
private String senderName;
/** 会话/群组ID私聊时为 null */
private String chatId;
/** 纯文本摘要(向后兼容) */
private String content;
/** 消息类型text / image / file */
private String contentType;
/**
* 用户输入方式text / voice / image / mixed
* <p>
* 各渠道 Adapter 在解析入站消息时设置。
* Router 据此决定是否触发 TTS 语音回复、是否注入语音场景提示词。
*/
@Builder.Default
private String inputMode = "text";
/**
* 结构化消息内容(多模态)。
* 各渠道 Adapter 在解析原生消息时构建此列表,
* Router 据此传给 AgentService使 Agent 能看到完整的多模态输入。
*/
@Builder.Default
private List<MessageContentPart> contentParts = List.of();
/** 消息时间 */
private LocalDateTime timestamp;
/**
* 回复 Token
* <p>
* 不同渠道含义不同:
* - 钉钉sessionWebhook URL
* - 飞书chat_id
* - Telegramchat_id
* - Discordchannel_id
* <p>
* 用于 sendMessage 回复时确定目标
*/
private String replyToken;
/** 原始 payload用于调试 */
private Object rawPayload;
}