diff --git a/extensions/ringcentral/src/monitor.ts b/extensions/ringcentral/src/monitor.ts index 79bc31896..24bf6e6ae 100644 --- a/extensions/ringcentral/src/monitor.ts +++ b/extensions/ringcentral/src/monitor.ts @@ -222,9 +222,20 @@ async function processMessageWithPipeline(params: { } // Personal, PersonalChat, Direct are all DM types + const isPersonalChat = chatType === "Personal" || chatType === "PersonalChat"; const isGroup = chatType !== "Direct" && chatType !== "PersonalChat" && chatType !== "Personal"; runtime.log?.(`[${account.accountId}] Chat type: ${chatType}, isGroup: ${isGroup}`); + // In selfOnly mode, by default only allow "Personal" chat (conversation with yourself) + // Set allowOtherChats: true to allow DMs and groups + if (selfOnly) { + const allowOtherChats = account.config.allowOtherChats === true; // default false + if (!allowOtherChats && !isPersonalChat) { + logVerbose(core, runtime, `ignore non-personal chat in selfOnly mode: chatType=${chatType}`); + return; + } + } + const defaultGroupPolicy = config.channels?.defaults?.groupPolicy; const groupPolicy = account.config.groupPolicy ?? defaultGroupPolicy ?? "allowlist"; const groupConfigResolved = resolveGroupConfig({ diff --git a/extensions/ringcentral/src/types.ts b/extensions/ringcentral/src/types.ts index e9ae93ade..a53f9246c 100644 --- a/extensions/ringcentral/src/types.ts +++ b/extensions/ringcentral/src/types.ts @@ -115,6 +115,7 @@ export type RingCentralAccountConfig = { botExtensionId?: string; replyToMode?: "off" | "all"; selfOnly?: boolean; // JWT mode: only accept messages from the JWT user (default: true) + allowOtherChats?: boolean; // In selfOnly mode, allow chats other than Personal (default: false) }; export type RingCentralConfig = RingCentralAccountConfig & {