


























@@ -2,6 +2,7 @@ import {
22renderMessagePresentationFallbackText,
33type MessagePresentation,
44} from "openclaw/plugin-sdk/interactive-runtime";
5+import { createReplyToFanout } from "openclaw/plugin-sdk/outbound-runtime";
56import { resolvePayloadMediaUrls } from "openclaw/plugin-sdk/reply-payload";
67import type { ReplyPayload } from "openclaw/plugin-sdk/reply-runtime";
78import { sendMessageMatrix, sendPollMatrix } from "./matrix/send.js";
@@ -90,6 +91,8 @@ export const matrixOutbound: ChannelOutboundAdapter = {
9091 mediaAccess,
9192 deps,
9293 replyToId,
94+ replyToIdSource,
95+ replyToMode,
9396 threadId,
9497 accountId,
9598 audioAsVoice,
@@ -99,6 +102,11 @@ export const matrixOutbound: ChannelOutboundAdapter = {
99102const resolvedThreadId =
100103threadId !== undefined && threadId !== null ? String(threadId) : undefined;
101104const resolvedReplyToId = replyToId ?? undefined;
105+const resolveReplyToId = createReplyToFanout({
106+replyToId: resolvedReplyToId,
107+ replyToIdSource,
108+ replyToMode,
109+});
102110const urls = resolvePayloadMediaUrls(payload);
103111if (urls.length > 0) {
104112let lastResult: Awaited<ReturnType<typeof send>> | undefined;
@@ -110,7 +118,7 @@ export const matrixOutbound: ChannelOutboundAdapter = {
110118 mediaAccess,
111119 mediaLocalRoots,
112120 mediaReadFile,
113-replyToId: resolvedReplyToId,
121+replyToId: resolveReplyToId(),
114122threadId: resolvedThreadId,
115123accountId: accountId ?? undefined,
116124audioAsVoice: payload.audioAsVoice ?? audioAsVoice,
@@ -129,7 +137,7 @@ export const matrixOutbound: ChannelOutboundAdapter = {
129137 mediaAccess,
130138 mediaLocalRoots,
131139 mediaReadFile,
132-replyToId: resolvedReplyToId,
140+replyToId: resolveReplyToId(),
133141threadId: resolvedThreadId,
134142accountId: accountId ?? undefined,
135143audioAsVoice: payload.audioAsVoice ?? audioAsVoice,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。