mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 01:51:24 +00:00
refactor(line): dedupe route resolution
This commit is contained in:
@@ -60,6 +60,39 @@ function buildPeerId(source: EventSource): string {
|
|||||||
return "unknown";
|
return "unknown";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function resolveLineInboundRoute(params: {
|
||||||
|
source: EventSource;
|
||||||
|
cfg: OpenClawConfig;
|
||||||
|
account: ResolvedLineAccount;
|
||||||
|
}): {
|
||||||
|
userId?: string;
|
||||||
|
groupId?: string;
|
||||||
|
roomId?: string;
|
||||||
|
isGroup: boolean;
|
||||||
|
peerId: string;
|
||||||
|
route: ReturnType<typeof resolveAgentRoute>;
|
||||||
|
} {
|
||||||
|
recordChannelActivity({
|
||||||
|
channel: "line",
|
||||||
|
accountId: params.account.accountId,
|
||||||
|
direction: "inbound",
|
||||||
|
});
|
||||||
|
|
||||||
|
const { userId, groupId, roomId, isGroup } = getSourceInfo(params.source);
|
||||||
|
const peerId = buildPeerId(params.source);
|
||||||
|
const route = resolveAgentRoute({
|
||||||
|
cfg: params.cfg,
|
||||||
|
channel: "line",
|
||||||
|
accountId: params.account.accountId,
|
||||||
|
peer: {
|
||||||
|
kind: isGroup ? "group" : "direct",
|
||||||
|
id: peerId,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
return { userId, groupId, roomId, isGroup, peerId, route };
|
||||||
|
}
|
||||||
|
|
||||||
// Common LINE sticker package descriptions
|
// Common LINE sticker package descriptions
|
||||||
const STICKER_PACKAGES: Record<string, string> = {
|
const STICKER_PACKAGES: Record<string, string> = {
|
||||||
"1": "Moon & James",
|
"1": "Moon & James",
|
||||||
@@ -299,24 +332,11 @@ async function finalizeLineInboundContext(params: {
|
|||||||
export async function buildLineMessageContext(params: BuildLineMessageContextParams) {
|
export async function buildLineMessageContext(params: BuildLineMessageContextParams) {
|
||||||
const { event, allMedia, cfg, account } = params;
|
const { event, allMedia, cfg, account } = params;
|
||||||
|
|
||||||
recordChannelActivity({
|
|
||||||
channel: "line",
|
|
||||||
accountId: account.accountId,
|
|
||||||
direction: "inbound",
|
|
||||||
});
|
|
||||||
|
|
||||||
const source = event.source;
|
const source = event.source;
|
||||||
const { userId, groupId, roomId, isGroup } = getSourceInfo(source);
|
const { userId, groupId, roomId, isGroup, peerId, route } = resolveLineInboundRoute({
|
||||||
const peerId = buildPeerId(source);
|
source,
|
||||||
|
|
||||||
const route = resolveAgentRoute({
|
|
||||||
cfg,
|
cfg,
|
||||||
channel: "line",
|
account,
|
||||||
accountId: account.accountId,
|
|
||||||
peer: {
|
|
||||||
kind: isGroup ? "group" : "direct",
|
|
||||||
id: peerId,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const message = event.message;
|
const message = event.message;
|
||||||
@@ -389,24 +409,11 @@ export async function buildLinePostbackContext(params: {
|
|||||||
}) {
|
}) {
|
||||||
const { event, cfg, account } = params;
|
const { event, cfg, account } = params;
|
||||||
|
|
||||||
recordChannelActivity({
|
|
||||||
channel: "line",
|
|
||||||
accountId: account.accountId,
|
|
||||||
direction: "inbound",
|
|
||||||
});
|
|
||||||
|
|
||||||
const source = event.source;
|
const source = event.source;
|
||||||
const { userId, groupId, roomId, isGroup } = getSourceInfo(source);
|
const { userId, groupId, roomId, isGroup, peerId, route } = resolveLineInboundRoute({
|
||||||
const peerId = buildPeerId(source);
|
source,
|
||||||
|
|
||||||
const route = resolveAgentRoute({
|
|
||||||
cfg,
|
cfg,
|
||||||
channel: "line",
|
account,
|
||||||
accountId: account.accountId,
|
|
||||||
peer: {
|
|
||||||
kind: isGroup ? "group" : "direct",
|
|
||||||
id: peerId,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const timestamp = event.timestamp;
|
const timestamp = event.timestamp;
|
||||||
|
|||||||
Reference in New Issue
Block a user