Sessions and memory

داک‌کردن کانال

داک‌کردن کانال، انتقال تماس برای یک نشست OpenClaw است.

این کار همان زمینهٔ گفتگو را حفظ می‌کند، اما محل تحویل پاسخ‌های آینده برای آن نشست را تغییر می‌دهد.

مثال

Alice می‌تواند در Telegram و Discord به OpenClaw پیام بدهد:

{
  session: {
    identityLinks: {
      alice: ["telegram:123", "discord:456"],
    },
  },
}

اگر Alice این را از Telegram بفرستد:

/dock_discord

OpenClaw زمینهٔ نشست فعلی را حفظ می‌کند و مسیر پاسخ را تغییر می‌دهد:

قبل از داک‌کردن بعد از /dock_discord
پاسخ‌ها به Telegram 123 می‌روند پاسخ‌ها به Discord 456 می‌روند

نشست دوباره ساخته نمی‌شود. تاریخچهٔ رونوشت همچنان به همان نشست متصل می‌ماند.

چرا از آن استفاده کنیم

وقتی کاری در یک برنامهٔ گفتگو شروع می‌شود اما پاسخ‌های بعدی باید جای دیگری دریافت شوند، از داک‌کردن استفاده کنید.

جریان رایج:

  1. یک وظیفهٔ عامل را از Telegram شروع کنید.
  2. به Discord بروید، جایی که کار را هماهنگ می‌کنید.
  3. از نشست Telegram، دستور /dock_discord را بفرستید.
  4. همان نشست OpenClaw را نگه دارید، اما پاسخ‌های آینده را در Discord دریافت کنید.

پیکربندی لازم

داک‌کردن به session.identityLinks نیاز دارد. فرستندهٔ مبدأ و همتای مقصد باید در یک گروه هویتی یکسان باشند:

{
  session: {
    identityLinks: {
      alice: ["telegram:123", "discord:456", "slack:U123"],
    },
  },
}

مقادیر، شناسه‌های همتا با پیشوند کانال هستند:

مقدار معنی
telegram:123 شناسهٔ فرستندهٔ Telegram یعنی 123
discord:456 شناسهٔ همتای مستقیم Discord یعنی 456
slack:U123 شناسهٔ کاربر Slack یعنی U123

کلید کانونی (alice در بالا) فقط نام گروه هویتی مشترک است. دستورهای داک از مقادیر دارای پیشوند کانال استفاده می‌کنند تا ثابت کنند فرستندهٔ مبدأ و همتای مقصد همان شخص هستند.

دستورها

دستورهای داک از Pluginهای کانال بارگذاری‌شده‌ای تولید می‌شوند که از دستورهای بومی پشتیبانی می‌کنند. دستورهای بسته‌بندی‌شدهٔ فعلی:

کانال مقصد دستور نام مستعار
Discord /dock-discord /dock_discord
Mattermost /dock-mattermost /dock_mattermost
Slack /dock-slack /dock_slack
Telegram /dock-telegram /dock_telegram

نام‌های مستعار دارای زیرخط در سطوح دستور بومی مانند Telegram مفید هستند.

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

داک‌کردن، فیلدهای تحویل نشست فعال را به‌روزرسانی می‌کند:

فیلد نشست مثال بعد از /dock_discord
lastChannel discord
lastTo 456
lastAccountId حساب کانال مقصد، یا default

این فیلدها در محل ذخیرهٔ نشست پایدار می‌شوند و برای تحویل پاسخ‌های بعدی در همان نشست استفاده می‌شوند.

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

داک‌کردن این کارها را انجام نمی‌دهد:

  • ایجاد حساب‌های کانال
  • اتصال یک ربات جدید Discord، Telegram، Slack، یا Mattermost
  • اعطای دسترسی به کاربر
  • دور زدن فهرست‌های مجاز کانال یا سیاست‌های پیام مستقیم
  • انتقال تاریخچهٔ رونوشت به نشستی دیگر
  • واداشتن کاربران نامرتبط به اشتراک‌گذاری یک نشست

این فقط مسیر تحویل نشست فعلی را تغییر می‌دهد.

عیب‌یابی

دستور می‌گوید فرستنده پیوند نشده است.

هم فرستندهٔ فعلی و هم همتای مقصد را به یک گروه session.identityLinks یکسان اضافه کنید. برای مثال، اگر فرستندهٔ Telegram با شناسهٔ 123 باید به همتای Discord با شناسهٔ 456 داک شود، هر دو مقدار telegram:123 و discord:456 را درج کنید.

دستور می‌گوید نشست فعالی وجود ندارد.

از یک نشست گفتگوی مستقیم موجود داک کنید. دستور به یک ورودی نشست فعال نیاز دارد تا بتواند مسیر جدید را پایدار کند.

پاسخ‌ها همچنان به کانال قدیمی می‌روند.

بررسی کنید که دستور با پیام موفقیت پاسخ داده باشد، و تأیید کنید شناسهٔ همتای مقصد با شناسه‌ای که آن کانال استفاده می‌کند مطابقت دارد. داک‌کردن فقط مسیر نشست فعال را تغییر می‌دهد؛ ممکن است نشست دیگری همچنان به جای دیگری مسیریابی شود.

باید برگردم.

دستور متناظر برای کانال اصلی را، مانند /dock_telegram یا /dock-telegram، از یک فرستندهٔ پیوندشده بفرستید.