Mainstream messaging
Signal
Signal یک Plugin کانال قابل دانلود است (@openclaw/signal). Gateway از طریق HTTP با signal-cli ارتباط برقرار میکند: یا دیمن بومی (JSON-RPC + SSE) یا کانتینر bbernhard/signal-cli-rest-api (REST + WebSocket). OpenClaw کتابخانهٔ libsignal را در خود تعبیه نمیکند.
مدل شماره (ابتدا این بخش را بخوانید)
- Gateway به یک دستگاه Signal متصل میشود: حساب
signal-cli. - اجرای ربات روی حساب شخصی Signal شما باعث میشود پیامهای خودتان را نادیده بگیرد (محافظت در برابر حلقه).
- برای حالت «من به ربات پیام میدهم و پاسخ میدهد»، از یک شمارهٔ جداگانه برای ربات استفاده کنید.
نصب
openclaw plugins install @openclaw/signalمشخصات Plugin بدون پیشوند ابتدا ClawHub را امتحان میکنند و سپس به npm بازمیگردند. برای اجبار یک منبع، از openclaw plugins install clawhub:@openclaw/signal یا npm:@openclaw/signal استفاده کنید. plugins install، Plugin را ثبت و فعال میکند؛ به مرحلهٔ جداگانهٔ enable نیازی نیست. برای قواعد عمومی نصب، Pluginها را ببینید.
راهاندازی سریع
انتخاب شماره
از یک شمارهٔ جداگانهٔ Signal برای ربات استفاده کنید (توصیه میشود).
نصب Plugin
openclaw plugins install @openclaw/signalاجرای راهاندازی هدایتشده
openclaw channels addراهنما تشخیص میدهد که آیا signal-cli در PATH قرار دارد و اگر موجود نباشد، نصب آن را پیشنهاد میکند: در Linux x86-64 ساخت بومی رسمی GraalVM را دانلود میکند، یا در macOS و معماریهای دیگر آن را از طریق Homebrew نصب میکند. سپس شمارهٔ ربات و مسیر signal-cli را درخواست میکند.
پیوند یا ثبت حساب
بررسی و جفتسازی
openclaw gateway call channels.status --params '{"probe":true}'نخستین پیام مستقیم را ارسال و جفتسازی را تأیید کنید: openclaw pairing approve signal <CODE>.
پیکربندی حداقلی:
{ channels: { signal: { enabled: true, account: "+15551234567", cliPath: "signal-cli", dmPolicy: "pairing", allowFrom: ["+15557654321"], }, },}| فیلد | توضیحات |
|---|---|
account |
شمارهتلفن ربات با قالب E.164 (+15551234567) |
cliPath |
مسیر signal-cli (اگر در PATH باشد، signal-cli) |
configPath |
پوشهٔ پیکربندی signal-cli که بهصورت --config ارسال میشود |
dmPolicy |
سیاست دسترسی پیام مستقیم (pairing توصیه میشود) |
allowFrom |
شمارهتلفنها یا مقادیر uuid:<id> مجاز به ارسال پیام مستقیم |
پشتیبانی از چند حساب: از channels.signal.accounts همراه با پیکربندی مختص هر حساب و name اختیاری استفاده کنید. برای الگوی مشترک، کانالهای چندحسابی را ببینید.
چیستی آن
- مسیریابی قطعی: پاسخها همیشه به Signal بازمیگردند.
- پیامهای مستقیم نشست اصلی عامل را بهاشتراک میگذارند؛ گروهها مجزا هستند (
agent:<agentId>:signal:group:<groupId>). - بهطور پیشفرض، Signal میتواند بهروزرسانیهای پیکربندی ناشی از
/config set|unsetرا بنویسد (بهcommands.config: trueنیاز دارد). باchannels.signal.configWrites: falseغیرفعالش کنید.
مسیر راهاندازی A: پیوند حساب موجود Signal (QR)
signal-cliرا نصب کنید (ساخت JVM یا بومی)، یا اجازه دهیدopenclaw channels addآن را برایتان نصب کند.- یک حساب ربات را پیوند دهید:
signal-cli link -n "OpenClaw"، سپس کد QR را در Signal اسکن کنید. - Signal را پیکربندی و Gateway را راهاندازی کنید.
مسیر راهاندازی B: ثبت شمارهٔ اختصاصی ربات (پیامک، Linux)
از این روش برای یک شمارهٔ اختصاصی ربات بهجای پیوند حساب موجود برنامهٔ Signal استفاده کنید. جریان زیر روی Ubuntu 24 آزمایش شده است.
- شمارهای تهیه کنید که بتواند پیامک دریافت کند (یا برای تلفن ثابت، تأیید صوتی). شمارهٔ اختصاصی ربات از تعارض حساب/نشست جلوگیری میکند.
signal-cliرا روی میزبان Gateway نصب کنید:
VERSION=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/AsamK/signal-cli/releases/latest | sed -e 's/^.*\/v//')curl -L -O "https://github.com/AsamK/signal-cli/releases/download/v${VERSION}/signal-cli-${VERSION}-Linux-native.tar.gz"sudo tar xf "signal-cli-${VERSION}-Linux-native.tar.gz" -C /optsudo ln -sf /opt/signal-cli /usr/local/bin/signal-cli --versionاگر از ساخت JVM (signal-cli-${VERSION}.tar.gz) استفاده میکنید، ابتدا یک JRE نصب کنید. signal-cli را بهروز نگه دارید؛ بالادست اشاره میکند که با تغییر APIهای سرور Signal، نسخههای قدیمی ممکن است از کار بیفتند.
- شماره را ثبت و تأیید کنید:
signal-cli -a +<BOT_PHONE_NUMBER> registerاگر کپچا لازم است (برای تکمیل این مرحله دسترسی به مرورگر ضروری است):
https://signalcaptchas.org/registration/generate.htmlرا باز کنید.- کپچا را تکمیل و مقصد پیوند
signalcaptcha://...را از "Open Signal" کپی کنید. - در صورت امکان، فرمان را از همان IP خارجی نشست مرورگر اجرا کنید (توکنهای کپچا بهسرعت منقضی میشوند).
- بلافاصله ثبتنام و تأیید کنید:
signal-cli -a +<BOT_PHONE_NUMBER> register --captcha '<SIGNALCAPTCHA_URL>'signal-cli -a +<BOT_PHONE_NUMBER> verify <VERIFICATION_CODE>- OpenClaw را پیکربندی کنید، Gateway را از نو راهاندازی کنید و کانال را بررسی کنید:
# اگر Gateway را بهعنوان سرویس systemd کاربر اجرا میکنید:systemctl --user restart openclaw-gateway.service # سپس بررسی کنید:openclaw doctoropenclaw channels status --probe- فرستندهٔ پیام مستقیم خود را جفت کنید:
- هر پیامی را به شمارهٔ ربات ارسال کنید.
- روی سرور تأیید کنید:
openclaw pairing approve signal <PAIRING_CODE>. - برای جلوگیری از نمایش "Unknown contact"، شمارهٔ ربات را بهعنوان مخاطب در تلفن خود ذخیره کنید.
مراجع بالادست:
- راهنمای
signal-cli:https://github.com/AsamK/signal-cli - جریان کپچا:
https://github.com/AsamK/signal-cli/wiki/Registration-with-captcha - جریان پیوند:
https://github.com/AsamK/signal-cli/wiki/Linking-other-devices-(Provisioning)
حالت دیمن خارجی (httpUrl)
برای مدیریت مستقل signal-cli (شروع سرد و کند JVM، مقداردهی اولیهٔ کانتینر، پردازندههای مشترک)، دیمن را جداگانه اجرا و OpenClaw را به آن متصل کنید:
{ channels: { signal: { httpUrl: "http://127.0.0.1:8080", autoStart: false, }, },}این کار ایجاد خودکار فرایند و انتظار OpenClaw هنگام راهاندازی را رد میکند. برای شروعهای کندی که بهصورت خودکار ایجاد میشوند، channels.signal.startupTimeoutMs را تنظیم کنید.
حالت کانتینر (bbernhard/signal-cli-rest-api)
بهجای اجرای بومی signal-cli، از کانتینر Docker bbernhard/signal-cli-rest-api استفاده کنید که signal-cli را پشت یک رابط REST + WebSocket قرار میدهد.
الزامات:
- برای دریافت بیدرنگ پیام، کانتینر باید با
MODE=json-rpcاجرا شود. - پیش از اتصال OpenClaw، حساب Signal خود را داخل کانتینر ثبت یا پیوند دهید.
نمونهٔ سرویس docker-compose.yml:
signal-cli: image: bbernhard/signal-cli-rest-api:latest environment: MODE: json-rpc ports: - "8080:8080" volumes: - signal-cli-data:/home/.local/share/signal-cliپیکربندی OpenClaw:
{ channels: { signal: { enabled: true, account: "+15551234567", httpUrl: "http://signal-cli:8080", autoStart: false, apiMode: "container", // یا "auto" برای تشخیص خودکار }, },}apiMode تعیین میکند OpenClaw از کدام پروتکل استفاده کند:
| مقدار | رفتار |
|---|---|
"auto" |
(پیشفرض) هر دو انتقال را میآزماید؛ پخش جریانی دریافت WebSocket کانتینر را اعتبارسنجی میکند |
"native" |
اجبار signal-cli بومی (JSON-RPC در /api/v1/rpc و SSE در /api/v1/events) |
"container" |
اجبار کانتینر bbernhard (REST در /v2/send و WebSocket در /v1/receive/{account}) |
وقتی apiMode برابر با "auto" باشد، OpenClaw برای جلوگیری از آزمونهای تکراری، حالت تشخیصدادهشده را برای هر نشانی دیمن بهمدت ۳۰ ثانیه در حافظهٔ نهان نگه میدارد (اگر هر دو انتقال سالم باشند، حالت بومی اولویت دارد). دریافت کانتینری تنها پس از ارتقای /v1/receive/{account} به WebSocket برای پخش جریانی انتخاب میشود که به MODE=json-rpc نیاز دارد.
حالت کانتینر، در مواردی که کانتینر APIهای متناظر را ارائه میدهد، از همان عملیات Signal در حالت بومی پشتیبانی میکند: ارسال، دریافت، پیوستها، نشانگرهای تایپ، رسیدهای خواندن/مشاهده، واکنشها، گروهها و متن سبکبندیشده. OpenClaw فراخوانیهای RPC بومی Signal را به بارهای REST کانتینر تبدیل میکند، از جمله شناسههای گروه group.{base64(internal_id)} و text_mode: "styled" برای متن قالببندیشده.
نکات عملیاتی:
- در حالت کانتینر از
autoStart: falseاستفاده کنید؛ هنگامی کهapiMode: "container"انتخاب شده است، OpenClaw نباید یک دیمن بومی ایجاد کند. - برای دریافت از
MODE=json-rpcاستفاده کنید.MODE=normalممکن است/v1/aboutرا سالم نشان دهد، اما/v1/receive/{account}به WebSocket ارتقا نمییابد؛ بنابراین OpenClaw در حالتautoپخش جریانی دریافت کانتینر را انتخاب نمیکند. - وقتی
httpUrlبه REST API bbernhard اشاره دارد،apiMode: "container"را تنظیم کنید؛ وقتی به JSON-RPC/SSE بومیsignal-cliاشاره دارد،"native"را تنظیم کنید؛ و وقتی استقرار ممکن است متفاوت باشد، از"auto"استفاده کنید. - دانلود پیوستها در حالت کانتینر از همان محدودیتهای بایتی رسانه در حالت بومی پیروی میکند. اگر سرور
Content-Lengthرا ارسال کند، پاسخهای بیشازحد بزرگ پیش از قرارگرفتن کامل در بافر رد میشوند؛ در غیر این صورت، هنگام پخش جریانی رد میشوند.
کنترل دسترسی (پیامهای مستقیم + گروهها)
پیامهای مستقیم:
- پیشفرض:
channels.signal.dmPolicy = "pairing". - فرستندگان ناشناس یک کد جفتسازی دریافت میکنند؛ پیامها تا زمان تأیید نادیده گرفته میشوند (کدها پس از ۱ ساعت منقضی میشوند).
- از طریق
openclaw pairing list signalوopenclaw pairing approve signal <CODE>تأیید کنید. - جفتسازی، تبادل توکن پیشفرض برای پیامهای مستقیم Signal است. جزئیات: جفتسازی
- فرستندگانی که فقط UUID دارند (از
sourceUuid) بهشکلuuid:<id>درchannels.signal.allowFromذخیره میشوند.
گروهها:
channels.signal.groupPolicy = open | allowlist | disabled.- وقتی
allowlistتنظیم شده باشد،channels.signal.groupAllowFromکنترل میکند کدام گروهها یا فرستندگان میتوانند پاسخهای گروهی را فعال کنند؛ ورودیها میتوانند شناسههای گروه Signal (خام،group:<id>یاsignal:group:<id>)، شمارهتلفن فرستنده، مقادیرuuid:<id>یا*باشند. channels.signal.groups["<group-id>" | "*"]میتواند رفتار گروه را باrequireMention،toolsوtoolsBySenderبازنویسی کند.- برای بازنویسیهای مختص هر حساب در راهاندازیهای چندحسابی، از
channels.signal.accounts.<id>.groupsاستفاده کنید. - قراردادن یک گروه در فهرست مجاز از طریق
groupAllowFromبهخودیخود الزام اشاره را غیرفعال نمیکند. ورودی مشخصاً پیکربندیشدهٔchannels.signal.groups["<group-id>"]همهٔ پیامهای گروه را پردازش میکند، مگر آنکهrequireMention: trueصراحتاً تنظیم شده باشد. - نکتهٔ زمان اجرا: اگر
channels.signalکاملاً وجود نداشته باشد، زمان اجرا برای بررسی گروهها بهgroupPolicy="allowlist"بازمیگردد (حتی اگرchannels.defaults.groupPolicyتنظیم شده باشد).
نحوهٔ کار (رفتار)
- حالت بومی:
signal-cliبهصورت دیمن اجرا میشود؛ Gateway رویدادها را از طریق SSE میخواند. - حالت کانتینر: Gateway از طریق REST API ارسال و از طریق WebSocket دریافت میکند.
- پیامهای ورودی به پوشش مشترک کانال نرمالسازی میشوند.
- پاسخها همیشه به همان شماره یا گروه بازمیگردند.
- پاسخ به پیامهای ورودی، هنگامی که پشتیبان زمانمهر و نویسندهٔ پیام ورودی را بپذیرد، شامل فرادادهٔ نقلقول بومی Signal است؛ اگر فرادادهٔ نقلقول موجود نباشد یا رد شود، OpenClaw پاسخ را بهصورت پیام عادی ارسال میکند.
- استفاده از نقلقول بومی را با
channels.signal.replyToMode = off | first | all | batchedیا برای بازنویسی مختص نوع گفتگو باchannels.signal.replyToModeByChatType.direct/groupپیکربندی کنید. مقادیر سطح حساب درchannels.signal.accounts.<id>اولویت دارند.
رسانه + محدودیتها
- متن خروجی بر اساس
channels.signal.textChunkLimitبه قطعهها تقسیم میشود (پیشفرض ۴۰۰۰). - قطعهبندی اختیاری بر اساس خط جدید:
channels.signal.chunkMode="newline"را تنظیم کنید تا متن پیش از قطعهبندی بر اساس طول، در خطوط خالی (مرزهای پاراگراف) تقسیم شود. - پیوستها پشتیبانی میشوند (بهصورت base64 از
signal-cliدریافت میشوند). - اگر
contentTypeموجود نباشد، پیوستهای یادداشت صوتی از نام فایلsignal-cliبهعنوان MIME جایگزین استفاده میکنند تا رونویسی صوت همچنان بتواند یادداشتهای صوتی AAC را طبقهبندی کند. - سقف پیشفرض رسانه:
channels.signal.mediaMaxMb(پیشفرض ۸). - برای صرفنظر از بارگیری رسانه از
channels.signal.ignoreAttachmentsاستفاده کنید. - زمینهٔ تاریخچهٔ گروه از
channels.signal.historyLimit(یاchannels.signal.accounts.*.historyLimit) استفاده میکند و در صورت نبود آن بهmessages.groupChat.historyLimitبازمیگردد. برای غیرفعالسازی آن را روی0تنظیم کنید (پیشفرض ۵۰).
نشانگر تایپ و رسیدهای خواندن
- نشانگرهای تایپ: OpenClaw سیگنالهای تایپ را از طریق
signal-cli sendTypingارسال میکند و تا زمانی که پاسخ در حال اجرا است، آنها را تازهسازی میکند. - رسیدهای خواندن: وقتی
channels.signal.sendReadReceiptsبرابر true باشد، OpenClaw رسیدهای خواندن را برای پیامهای خصوصی مجاز ارسال میکند. signal-cliرسیدهای خواندن گروهها را ارائه نمیکند.
واکنشهای وضعیت چرخهٔ حیات
برای اینکه Signal چرخهٔ مشترک واکنشهای در صف/در حال فکر/ابزار/Compaction/انجامشده/خطا را در نوبتهای ورودی نمایش دهد، messages.statusReactions.enabled: true را تنظیم کنید. Signal از مهر زمانی پیام ورودی بهعنوان هدف واکنش استفاده میکند؛ واکنشهای گروهی با شناسهٔ گروه Signal و فرستندهٔ اصلی بهعنوان نویسندهٔ هدف ارسال میشوند.
واکنشهای وضعیت همچنین به یک واکنش تأیید دریافت و یک messages.ackReactionScope منطبق (direct، group-all، group-mentions یا all) نیاز دارند. برای غیرفعالکردن واکنشهای وضعیت Signal، channels.signal.reactionLevel: "off" را تنظیم کنید.
messages.removeAckAfterReply: true واکنش وضعیت نهایی را پس از مدت نگهداری پیکربندیشده پاک میکند. در غیر این صورت، Signal پس از وضعیت نهایی انجامشده/خطا، واکنش اولیهٔ تأیید دریافت را بازمیگرداند.
واکنشها (ابزار پیام)
از message action=react همراه با channel=signal استفاده کنید.
- هدفها: شمارهٔ E.164 یا UUID فرستنده (از
uuid:<id>موجود در خروجی جفتسازی استفاده کنید؛ UUID بدون پیشوند نیز کار میکند). messageIdمهر زمانی Signal برای پیامی است که به آن واکنش نشان میدهید.- واکنشهای گروهی به
targetAuthorیاtargetAuthorUuidنیاز دارند.
message action=react channel=signal target=uuid:123e4567-e89b-12d3-a456-426614174000 messageId=1737630212345 emoji=🔥message action=react channel=signal target=+15551234567 messageId=1737630212345 emoji=🔥 remove=truemessage action=react channel=signal target=signal:group:<groupId> targetAuthor=uuid:<sender-uuid> messageId=1737630212345 emoji=✅پیکربندی:
channels.signal.actions.reactions: فعال/غیرفعالکردن کنشهای واکنش (پیشفرض true).channels.signal.reactionLevel:off | ack | minimal | extensive(پیشفرضminimal).off/ackواکنشهای عامل را غیرفعال میکند (ابزار پیامreactخطا میدهد).minimal/extensiveواکنشهای عامل را فعال میکند و سطح راهنمایی را تعیین میکند.
- جایگزینهای مخصوص هر حساب:
channels.signal.accounts.<id>.actions.reactions،channels.signal.accounts.<id>.reactionLevel.
واکنشهای تأیید
درخواستهای تأیید اجرای Signal و Plugin از بلوکهای مسیریابی سطحبالای approvals.exec و approvals.plugin استفاده میکنند. Signal بلوک channels.signal.execApprovals ندارد.
👍یکبار تأیید میکند.👎رد میکند.- وقتی یک درخواست امکان تأیید دائمی را ارائه میدهد، از
/approve <id> allow-alwaysاستفاده کنید.
حل واکنش تأیید به تأییدکنندگان صریح Signal در channels.signal.allowFrom، channels.signal.defaultTo یا فیلدهای منطبق در سطح حساب نیاز دارد. درخواستهای تأیید اجرای مستقیم در همان گفتوگو همچنان میتوانند بدون تأییدکنندگان صریح، گزینهٔ جایگزین محلی و تکراری /approve را پنهان کنند؛ در تأییدهای گروهی بدون تأییدکننده، گزینهٔ جایگزین محلی همچنان قابل مشاهده میماند.
هدفهای تحویل (CLI/Cron)
- پیامهای خصوصی:
signal:+15551234567(یا E.164 ساده). - پیامهای خصوصی UUID:
uuid:<id>(یا UUID ساده). - گروهها:
signal:group:<groupId>. - نامهای کاربری:
username:<name>(اگر حساب Signal شما از آن پشتیبانی کند).
نامهای مستعار
برای هدفهای تکرارشوندهٔ Signal، نامهای مستعار پایداری پیکربندی کنید. نامهای مستعار فقط پیکربندی سمت OpenClaw هستند؛ آنها مخاطبان Signal را ایجاد یا ویرایش نمیکنند.
{ channels: { signal: { aliases: { me: "+15557654321", jane: "uuid:123e4567-e89b-12d3-a456-426614174000", ops: "group:<groupId>", }, defaultTo: "signal:me", }, },}در هر جایی که هدفهای تحویل Signal پذیرفته میشوند، از نامهای مستعار استفاده کنید:
openclaw message send --channel signal --target signal:ops --message "Deployment is complete"نامهای مستعار هر حساب، نامهای مستعار سطحبالا را به ارث میبرند و میتوانند نامهایی را اضافه یا بازنویسی کنند:
{ channels: { signal: { aliases: { me: "+15557654321", }, accounts: { work: { aliases: { ops: "group:<workGroupId>", }, }, }, }, },}openclaw directory peers list --channel signal و openclaw directory groups list --channel signal نامهای مستعار پیکربندیشده را فهرست میکنند. فهرست Signal بر پیکربندی متکی است؛ مخاطبان Signal را بهصورت زنده واکشی نمیکند و حساب Signal را تغییر نمیدهد.
عیبیابی
ابتدا این مراحل را اجرا کنید:
openclaw statusopenclaw gateway statusopenclaw logs --followopenclaw doctoropenclaw channels status --probeسپس در صورت نیاز، وضعیت جفتسازی پیام خصوصی را بررسی کنید:
openclaw pairing list signalخطاهای رایج:
- دیمن در دسترس است اما پاسخی وجود ندارد: تنظیمات حساب/دیمن (
httpUrl،account) و حالت دریافت را بررسی کنید. - پیامهای خصوصی نادیده گرفته میشوند: تأیید جفتسازی فرستنده در انتظار است.
- پیامهای گروهی نادیده گرفته میشوند: محدودیت فرستنده/اشاره در گروه مانع تحویل میشود.
- خطاهای اعتبارسنجی پیکربندی پس از ویرایش:
openclaw doctor --fixرا اجرا کنید. - Signal در اطلاعات تشخیصی وجود ندارد: تأیید کنید که
channels.signal.enabled: trueتنظیم شده است.
بررسیهای تکمیلی:
openclaw pairing list signalpgrep -af signal-cligrep -i "signal" "/tmp/openclaw/openclaw-$(date +%Y-%m-%d).log" | tail -20برای روند بررسی اولیه: عیبیابی کانالها.
نکات امنیتی
signal-cliکلیدهای حساب را بهصورت محلی ذخیره میکند (معمولاً در~/.local/share/signal-cli/data/).- پیش از مهاجرت یا بازسازی سرور، از وضعیت حساب Signal نسخهٔ پشتیبان تهیه کنید.
- مگر اینکه صراحتاً دسترسی گستردهتری به پیامهای خصوصی میخواهید،
channels.signal.dmPolicy: "pairing"را حفظ کنید. - تأیید پیامکی فقط برای فرایندهای ثبتنام یا بازیابی لازم است، اما از دستدادن کنترل شماره/حساب میتواند ثبتنام مجدد را دشوار کند.
مرجع پیکربندی (Signal)
پیکربندی کامل: پیکربندی
گزینههای ارائهدهنده:
channels.signal.enabled: فعال/غیرفعالکردن راهاندازی کانال.channels.signal.apiMode:auto | native | container(پیشفرض: auto). حالت کانتینر را ببینید.channels.signal.account: شمارهٔ E.164 حساب ربات.channels.signal.cliPath: مسیرsignal-cli.channels.signal.configPath: پوشهٔ اختیاریsignal-cli --config.channels.signal.httpUrl: نشانی کامل دیمن (مقادیر میزبان/درگاه را بازنویسی میکند).channels.signal.httpHost،channels.signal.httpPort: نشانی اتصال دیمن (پیشفرض127.0.0.1:8080).channels.signal.autoStart: اجرای خودکار دیمن (اگرhttpUrlتنظیم نشده باشد، پیشفرض true است).channels.signal.startupTimeoutMs: مهلت انتظار برای راهاندازی بر حسب میلیثانیه (حداقل ۱۰۰۰، سقف ۱۲۰۰۰۰؛ پیشفرض ۳۰۰۰۰).channels.signal.receiveMode:on-start | manual.channels.signal.ignoreAttachments: صرفنظر از بارگیری پیوستها.channels.signal.ignoreStories: نادیدهگرفتن استوریهای دیمن.channels.signal.sendReadReceipts: ارسال رسیدهای خواندن.channels.signal.dmPolicy:pairing | allowlist | open | disabled(پیشفرض: pairing).channels.signal.allowFrom: فهرست مجاز پیامهای خصوصی (E.164 یاuuid:<id>). حالتopenبه"*"نیاز دارد. Signal نام کاربری ندارد؛ از شناسههای تلفن/UUID استفاده کنید.channels.signal.aliases: نامهای مستعار سمت OpenClaw برای هدفهای تحویل پیام خصوصی یا گروهی.channels.signal.groupPolicy:open | allowlist | disabled(پیشفرض: allowlist).channels.signal.groupAllowFrom: فهرست مجاز گروه؛ شناسههای گروه Signal (خام،group:<id>یاsignal:group:<id>)، شمارههای E.164 فرستنده یا مقادیرuuid:<id>را میپذیرد.channels.signal.groups: بازنویسیهای مخصوص هر گروه با کلید شناسهٔ گروه Signal (یا"*"). فیلدهای پشتیبانیشده:requireMention،tools،toolsBySender.channels.signal.accounts.<id>.groups: نسخهٔ مخصوص هر حساب ازchannels.signal.groupsبرای پیکربندیهای چندحسابی.channels.signal.accounts.<id>.aliases: نامهای مستعار مخصوص هر حساب که با نامهای مستعار سطحبالا ادغام میشوند.channels.signal.replyToMode: حالت نقلقول بومی پاسخ،off | first | all | batched(پیشفرض:all).channels.signal.replyToModeByChatType.direct،channels.signal.replyToModeByChatType.group: بازنویسیهای نقلقول بومی پاسخ بر اساس نوع گفتوگو.channels.signal.accounts.<id>.replyToMode،channels.signal.accounts.<id>.replyToModeByChatType.direct،channels.signal.accounts.<id>.replyToModeByChatType.group: بازنویسیهای نقلقول پاسخ مخصوص هر حساب.channels.signal.historyLimit: حداکثر تعداد پیامهای گروهی که در زمینه گنجانده میشوند (۰ غیرفعال میکند).channels.signal.dmHistoryLimit: محدودیت تاریخچهٔ پیام خصوصی بر حسب نوبتهای کاربر. بازنویسیهای مخصوص هر کاربر:channels.signal.dms["<phone_or_uuid>"].historyLimit.channels.signal.textChunkLimit: اندازهٔ قطعهٔ خروجی بر حسب نویسه (پیشفرض ۴۰۰۰).channels.signal.chunkMode: مقدارlength(پیشفرض) یاnewlineبرای تقسیم در خطوط خالی (مرزهای پاراگراف) پیش از قطعهبندی بر اساس طول.channels.signal.mediaMaxMb: سقف رسانهٔ ورودی/خروجی بر حسب مگابایت (پیشفرض ۸).channels.signal.reactionLevel:off | ack | minimal | extensive(پیشفرضminimal). واکنشها را ببینید.channels.signal.reactionNotifications:off | own | all | allowlist(پیشفرضown) — تعیین میکند عامل چه زمانی از واکنشهای ورودی دیگران مطلع شود.channels.signal.reactionAllowlist: فرستندگانی که وقتیreactionNotifications: "allowlist"است، واکنشهایشان عامل را مطلع میکند.channels.signal.blockStreaming،channels.signal.blockStreamingCoalesce: کنترلهای پخش جریانی در حالت بلوکی که میان کانالها مشترک هستند. پخش جریانی را ببینید.
گزینههای سراسری مرتبط:
agents.list[].groupChat.mentionPatterns(Signal از اشارههای بومی پشتیبانی نمیکند).messages.groupChat.mentionPatterns(گزینهٔ جایگزین سراسری).messages.responsePrefix.
مرتبط
- نمای کلی کانالها - همهٔ کانالهای پشتیبانیشده
- جفتسازی - احراز هویت پیام خصوصی و روند جفتسازی
- گروهها - رفتار گفتوگوی گروهی و محدودیت اشاره
- مسیریابی کانال - مسیریابی نشست برای پیامها
- امنیت - مدل دسترسی و مقاومسازی