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 میروند |
نشست دوباره ساخته نمیشود. تاریخچهٔ رونوشت همچنان به همان نشست متصل میماند.
چرا از آن استفاده کنیم
وقتی کاری در یک برنامهٔ گفتگو شروع میشود اما پاسخهای بعدی باید جای دیگری دریافت شوند، از داککردن استفاده کنید.
جریان رایج:
- یک وظیفهٔ عامل را از Telegram شروع کنید.
- به Discord بروید، جایی که کار را هماهنگ میکنید.
- از نشست Telegram، دستور
/dock_discordرا بفرستید. - همان نشست 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، از یک فرستندهٔ پیوندشده بفرستید.