---
read_when:
    - پیکربندی اتاق‌های گروه یا کانال همیشه‌فعال
    - می‌خواهید عامل گفت‌وگوهای اتاق را زیر نظر داشته باشد، بدون اینکه متن نهایی را به‌طور خودکار ارسال کند
    - اشکال‌زدایی نشانگر تایپ و مصرف توکن بدون پیام قابل‌مشاهده در اتاق
sidebarTitle: Ambient room events
summary: اجازه دهید اتاق‌های گروهی پشتیبانی‌شده، زمینه‌ای بی‌صدا فراهم کنند؛ مگر اینکه عامل با ابزار پیام ارسال کند
title: رویدادهای محیطی اتاق
x-i18n:
    generated_at: "2026-07-27T16:12:13Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: 15c083c139058c9bd2c651794965bd8252d74691e536db2ad2a2ae0b4ac886e8
    source_path: channels/ambient-room-events.md
    workflow: 16
---

رویدادهای محیطی اتاق به OpenClaw اجازه می‌دهند گفت‌وگوهای گروه یا کانال را که در آن‌ها اشاره‌ای نشده است، به‌عنوان زمینه‌ای بی‌صدا پردازش کند. عامل می‌تواند حافظه و وضعیت نشست را به‌روزرسانی کند، اما اتاق ساکت می‌ماند، مگر اینکه عامل صراحتاً ابزار `message` را فراخوانی کند.

برای گفت‌وگوهای گروهی همیشه‌فعال، `messages.groupChat.unmentionedInbound: "room_event"` را با `messages.groupChat.visibleReplies: "message_tool"` ترکیب کنید. عامل گوش می‌دهد، تصمیم می‌گیرد چه زمانی پاسخ مفید است و دیگر به الگوی قدیمی پرامپت برای پاسخ‌دادن با `NO_REPLY` نیازی ندارد.

مواردی که اکنون پشتیبانی می‌شوند: کانال‌های انجمن Discord، کانال‌ها و کانال‌های خصوصی Slack، پیام‌های مستقیم چندنفره Slack و گروه‌ها یا ابرگروه‌های Telegram. سایر کانال‌های گروهی رفتار گروهی فعلی خود را حفظ می‌کنند، مگر اینکه صفحه کانال آن‌ها اعلام کند از رویدادهای محیطی اتاق پشتیبانی می‌کنند.

## راه‌اندازی پیشنهادی

رفتار سراسری گفت‌وگوی گروهی را تنظیم کنید:

```json5
{
  messages: {
    groupChat: {
      unmentionedInbound: "room_event",
      visibleReplies: "message_tool",
      historyLimit: 50,
    },
  },
}
```

سپس با غیرفعال‌کردن الزام اشاره برای آن اتاق، آن را همیشه‌فعال کنید. اتاق همچنان باید `groupPolicy` عادی خود، فهرست مجاز اتاق و فهرست مجاز فرستنده را با موفقیت پشت سر بگذارد.

پس از ذخیره پیکربندی، Gateway تنظیمات `messages` را بدون راه‌اندازی مجدد اعمال می‌کند. فقط زمانی راه‌اندازی مجدد کنید که پایش فایل یا بارگذاری مجدد پیکربندی غیرفعال باشد (`gateway.reload.mode: "off"`).

## چه چیزهایی تغییر می‌کنند

با `messages.groupChat.unmentionedInbound: "room_event"`:

- پیام‌های مجاز گروه یا کانال که در آن‌ها اشاره‌ای نشده است، به رویدادهای بی‌صدای اتاق تبدیل می‌شوند
- پیام‌های دارای اشاره همچنان درخواست کاربر باقی می‌مانند
- فرمان‌های کنترلی متنی و فرمان‌های بومی همچنان درخواست کاربر باقی می‌مانند
- درخواست‌های لغو یا توقف همچنان درخواست کاربر باقی می‌مانند
- پیام‌های مستقیم همچنان درخواست کاربر باقی می‌مانند

رویدادهای اتاق از تحویل نمایان سخت‌گیرانه استفاده می‌کنند. متن نهایی دستیار خصوصی است. عامل باید برای ارسال در اتاق، `message(action=send)` را فراخوانی کند.

نمایش در حال تایپ و واکنش‌های وضعیت چرخه حیات برای رویدادهای اتاق همچنان سرکوب می‌شوند. تنها استثنای صریح برای اعلام دریافت، `messages.ackReactionScope: "all"` است که واکنش تأیید پیکربندی‌شده را ارسال می‌کند؛ وقتی اتاق باید کاملاً ساکت بماند، از دامنه‌ای محدودتر یا `"off"` استفاده کنید.

## نمونه Discord

```json5
{
  messages: {
    groupChat: {
      unmentionedInbound: "room_event",
      visibleReplies: "message_tool",
      historyLimit: 50,
    },
  },
  channels: {
    discord: {
      groupPolicy: "allowlist",
      guilds: {
        "<DISCORD_SERVER_ID>": {
          requireMention: false,
          users: ["<YOUR_DISCORD_USER_ID>"],
        },
      },
    },
  },
}
```

وقتی فقط یک کانال باید محیطی باشد، از پیکربندی مختص کانال Discord استفاده کنید. در `groupPolicy: "allowlist"`، فهرست‌کردن کانال همان چیزی است که آن را مجاز می‌کند (`enabled: false` یک ورودی را غیرفعال می‌کند):

```json5
{
  channels: {
    discord: {
      groupPolicy: "allowlist",
      guilds: {
        "<DISCORD_SERVER_ID>": {
          channels: {
            "<DISCORD_CHANNEL_ID_OR_NAME>": {
              requireMention: false,
            },
          },
        },
      },
    },
  },
}
```

## نمونه Slack

فهرست‌های مجاز کانال Slack در درجه نخست بر اساس شناسه هستند. از شناسه‌های کانال مانند `C12345678` استفاده کنید، نه `#channel-name`. فهرست‌کردن کانال در `channels.slack.channels` همان چیزی است که آن را مجاز می‌کند (`enabled: false` یک ورودی را غیرفعال می‌کند):

```json5
{
  messages: {
    groupChat: {
      unmentionedInbound: "room_event",
      visibleReplies: "message_tool",
      historyLimit: 50,
    },
  },
  channels: {
    slack: {
      groupPolicy: "allowlist",
      channels: {
        "<SLACK_CHANNEL_ID>": {
          requireMention: false,
        },
      },
    },
  },
}
```

## نمونه Telegram

برای گروه‌های Telegram، ربات باید بتواند پیام‌های عادی گروه را ببیند. اگر `requireMention: false`، حالت حریم خصوصی BotFather را غیرفعال کنید یا از راه‌اندازی دیگری برای Telegram استفاده کنید که تمام ترافیک گروه را به ربات تحویل می‌دهد.

```json5
{
  messages: {
    groupChat: {
      unmentionedInbound: "room_event",
      visibleReplies: "message_tool",
      historyLimit: 50,
    },
  },
  channels: {
    telegram: {
      groups: {
        "<TELEGRAM_GROUP_CHAT_ID>": {
          groupPolicy: "open",
          requireMention: false,
        },
      },
    },
  },
}
```

شناسه‌های گروه Telegram معمولاً اعداد منفی مانند `-1001234567890` هستند. `chat.id` را از `openclaw logs --follow` بخوانید، یک پیام گروه را به ربات کمکی شناسه ارسال کنید یا `getUpdates` مربوط به Bot API را بررسی کنید.

## سیاست مختص عامل

وقتی چند عامل اتاق یکسانی را به اشتراک می‌گذارند اما فقط یکی از آن‌ها باید گفت‌وگوهای بدون اشاره را به‌عنوان زمینه محیطی در نظر بگیرد، از بازنویسی عامل استفاده کنید:

```json5
{
  messages: {
    groupChat: {
      visibleReplies: "message_tool",
    },
  },
  agents: {
    list: [
      {
        id: "main",
        groupChat: {
          unmentionedInbound: "room_event",
          mentionPatterns: ["@openclaw", "openclaw"],
        },
      },
    ],
  },
}
```

مقدار مختص عامل `agents.entries.*.groupChat.unmentionedInbound`، مقدار `messages.groupChat.unmentionedInbound` را برای آن عامل بازنویسی می‌کند.

## حالت‌های پاسخ نمایان

`messages.groupChat.visibleReplies` برای درخواست‌های عادی کاربر در گروه یا کانال، به‌طور پیش‌فرض `"automatic"` است. وقتی متن نهایی دستیار باید بدون فراخوانی صریح ابزار پیام به‌صورت نمایان ارسال شود، این مقدار پیش‌فرض را حفظ کنید.

برای اتاق‌های محیطی همیشه‌فعال، `messages.groupChat.visibleReplies: "message_tool"` همچنان توصیه می‌شود، به‌ویژه همراه با مدل‌های نسل جدید و قابل‌اعتماد در استفاده از ابزار، مانند GPT-5.6 Sol. این حالت به عامل اجازه می‌دهد با فراخوانی ابزار پیام تصمیم بگیرد چه زمانی صحبت کند. اگر مدل بدون فراخوانی ابزار، متن نهایی برگرداند، OpenClaw آن متن نهایی را خصوصی نگه می‌دارد و فراداده تحویل سرکوب‌شده را ثبت می‌کند.

رویدادهای اتاق حتی زمانی که سایر درخواست‌های گروه از پاسخ‌های خودکار استفاده می‌کنند، سخت‌گیرانه باقی می‌مانند. رویدادهای محیطی اتاق که در آن‌ها اشاره‌ای نشده است، برای خروجی نمایان همیشه به `message(action=send)` نیاز دارند.

## تاریخچه

`messages.groupChat.historyLimit` مقدار پیش‌فرض سراسری تاریخچه گروه را تعیین می‌کند (در صورت تنظیم‌نشدن، 50؛ باید عدد صحیح مثبت باشد). کانال‌ها می‌توانند آن را با `channels.<channel>.historyLimit` بازنویسی کنند و برخی کانال‌ها از محدودیت تاریخچه مختص حساب نیز پشتیبانی می‌کنند. برای غیرفعال‌کردن زمینه تاریخچه گروه در یک کانال، `historyLimit: 0` سطح کانال را تنظیم کنید.

کانال‌های پشتیبانی‌کننده رویداد اتاق، پیام‌های محیطی اخیر اتاق را به‌عنوان زمینه نگه می‌دارند. Telegram یک پنجره چرخان و همیشه‌فعال برای هر گروه نگه می‌دارد که با `historyLimit` محدود می‌شود؛ نوبت‌های درخواست کاربر، ورودی‌های پس از آخرین پاسخ ثبت‌شده ربات را انتخاب می‌کنند، درحالی‌که نوبت‌های رویداد اتاق، کل پنجره اخیر را دریافت می‌کنند تا مدل بتواند ارسال‌های اخیر خود را ببیند. کلید حالت بازنشسته‌شده Telegram یعنی `includeGroupHistoryContext` توسط `openclaw doctor --fix` حذف می‌شود.

## عیب‌یابی

اگر اتاق وضعیت در حال تایپ یا مصرف توکن را نشان می‌دهد اما هیچ پیام نمایانی وجود ندارد:

1. تأیید کنید اتاق توسط فهرست مجاز کانال و فهرست مجاز فرستنده مجاز شده است.
2. تأیید کنید `requireMention: false` در سطح مورد انتظار اتاق تنظیم شده است.
3. بررسی کنید آیا `messages.groupChat.unmentionedInbound` یا بازنویسی عامل برابر با `"room_event"` است.
4. گزارش‌ها را برای فراداده محموله نهایی سرکوب‌شده یا `didSendViaMessagingTool: false` بررسی کنید.
5. برای درخواست‌های عادی گروه، اگر می‌خواهید پاسخ‌های نهایی به‌طور خودکار ارسال شوند، `messages.groupChat.visibleReplies: "automatic"` را حفظ یا بازیابی کنید. برای اتاق‌های محیطی که از `message_tool` استفاده می‌کنند، از مدل یا زمان‌اجرایی استفاده کنید که ابزارها را به‌طور قابل‌اعتماد فراخوانی می‌کند.

اگر اتاق‌های محیطی Telegram اصلاً فعال نمی‌شوند، حالت حریم خصوصی BotFather را بررسی کنید و مطمئن شوید Gateway پیام‌های عادی گروه را دریافت می‌کند.

اگر اتاق‌های محیطی Slack فعال نمی‌شوند، بررسی کنید کلید کانال همان شناسه کانال Slack باشد و برنامه برای آن نوع اتاق، دامنه دسترسی تاریخچه را داشته باشد: `channels:history` (عمومی)، `groups:history` (خصوصی) یا `mpim:history` (پیام‌های مستقیم چندنفره).

## مرتبط

- [گروه‌ها](/fa/channels/groups)
- [Discord](/fa/channels/discord)
- [Slack](/fa/channels/slack)
- [Telegram](/fa/channels/telegram)
- [عیب‌یابی کانال](/fa/channels/troubleshooting)
- [مرجع پیکربندی کانال](/fa/gateway/config-channels)
