Mainstream messaging
Signal
Signal هو Plugin قناة قابل للتنزيل (@openclaw/signal). يتواصل Gateway مع signal-cli عبر HTTP: إما الخدمة الخفية الأصلية (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 منفصلة. راجع الإضافات للاطلاع على قواعد التثبيت العامة.
الإعداد السريع
اختر رقمًا
استخدم رقم Signal منفصلًا للروبوت (موصى به).
ثبّت الـ Plugin
openclaw plugins install @openclaw/signalشغّل الإعداد الإرشادي
openclaw channels addيكتشف المعالج ما إذا كان signal-cli موجودًا في PATH، ويعرض تثبيته عند عدم وجوده: إذ ينزّل بنية GraalVM الأصلية الرسمية على Linux x86-64، أو يثبّته عبر Homebrew على macOS والمعماريات الأخرى. ثم يطلب رقم الروبوت ومسار 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 (signal-cli إذا كان موجودًا في PATH) |
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.
مسار الإعداد أ: ربط حساب Signal حالي (QR)
- ثبّت
signal-cli(بنية JVM أو البنية الأصلية)، أو دعopenclaw channels addيثبّته لك. - اربط حساب روبوت:
signal-cli link -n "OpenClaw"، ثم امسح رمز QR في Signal. - اضبط Signal وشغّل Gateway.
مسار الإعداد ب: تسجيل رقم روبوت مخصص (SMS، Linux)
استخدم هذا لرقم روبوت مخصص بدلًا من ربط حساب تطبيق Signal حالي. اختُبر التدفق التالي على Ubuntu 24.
- احصل على رقم يمكنه تلقي رسائل SMS (أو التحقق الصوتي للهواتف الأرضية). يتجنب رقم الروبوت المخصص تعارضات الحساب والجلسة.
- ثبّت
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إذا كان اختبار captcha مطلوبًا (يلزم الوصول إلى متصفح لإكمال هذه الخطوة):
- افتح
https://signalcaptchas.org/registration/generate.html. - أكمل اختبار captcha، وانسخ هدف الرابط
signalcaptcha://...من "Open Signal". - شغّل الأمر من عنوان IP الخارجي نفسه لجلسة المتصفح متى أمكن (تنتهي صلاحية رموز captcha سريعًا).
- سجّل وتحقق فورًا:
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".
مراجع المنبع:
- ملف README الخاص بـ
signal-cli:https://github.com/AsamK/signal-cli - تدفق captcha:
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لتلقي الرسائل في الوقت الفعلي. - سجّل حساب Signal أو اربطه داخل الحاوية قبل توصيل OpenClaw.
مثال لخدمة 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 الوضع المكتشف مؤقتًا لمدة 30 ثانية لكل عنوان URL للخدمة الخفية لتجنب تكرار الفحوصات (يفوز الوضع الأصلي عندما تكون وسيلتا النقل سليمتين). لا يُختار استقبال الحاوية للبث إلا بعد ترقية /v1/receive/{account} إلى WebSocket، الأمر الذي يتطلب MODE=json-rpc.
يدعم وضع الحاوية عمليات Signal نفسها التي يدعمها الوضع الأصلي عندما تعرض الحاوية واجهات API المطابقة: الإرسال، والاستقبال، والمرفقات، ومؤشرات الكتابة، وإيصالات القراءة/المشاهدة، والتفاعلات، والمجموعات، والنص المنسّق. يحوّل OpenClaw استدعاءات RPC الأصلية لـ Signal إلى حمولات REST الخاصة بالحاوية، بما في ذلك معرّفات المجموعات group.{base64(internal_id)} وtext_mode: "styled" للنص المنسّق.
ملاحظات تشغيلية:
- استخدم
autoStart: falseمع وضع الحاوية؛ يجب ألا يشغّل OpenClaw خدمة خفية أصلية عند تحديدapiMode: "container". - استخدم
MODE=json-rpcللاستقبال. قد يجعلMODE=normalالمسار/v1/aboutيبدو سليمًا، لكن/v1/receive/{account}لن يترقّى إلى WebSocket، ولذلك لن يختار OpenClaw بث استقبال الحاوية في وضعauto. - اضبط
apiMode: "container"عندما يشيرhttpUrlإلى واجهة REST API الخاصة بـ bbernhard، و"native"عندما يشير إلى JSON-RPC/SSE الأصلي لـsignal-cli، و"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.- يتحكم
channels.signal.groupAllowFromفي المجموعات أو المرسلين الذين يمكنهم تشغيل ردود المجموعات عند ضبطallowlist؛ ويمكن أن تكون الإدخالات معرّفات مجموعات 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(القيمة الافتراضية 4000). - التقسيم الاختياري عند الأسطر الجديدة: اضبط
channels.signal.chunkMode="newline"للتقسيم عند الأسطر الفارغة (حدود الفقرات) قبل التقسيم حسب الطول. - المرفقات مدعومة (تُجلب بترميز base64 من
signal-cli). - تستخدم مرفقات الملاحظات الصوتية اسم الملف من
signal-cliكقيمة MIME احتياطية عند غيابcontentType، بحيث يظل بإمكان نسخ الصوت تصنيف المذكرات الصوتية بتنسيق AAC. - الحد الافتراضي للوسائط:
channels.signal.mediaMaxMb(القيمة الافتراضية 8). - استخدم
channels.signal.ignoreAttachmentsلتخطي تنزيل الوسائط. - يستخدم سياق سجل المجموعات
channels.signal.historyLimit(أوchannels.signal.accounts.*.historyLimit)، مع الرجوع إلىmessages.groupChat.historyLimitعند عدم توفره. اضبطه على0للتعطيل (القيمة الافتراضية 50).
مؤشرات الكتابة وإيصالات القراءة
- مؤشرات الكتابة: يرسل OpenClaw إشارات الكتابة عبر
signal-cli sendTypingويحدّثها أثناء إنشاء الرد. - إيصالات القراءة: عندما تكون قيمة
channels.signal.sendReadReceiptsهي true، يعيد OpenClaw توجيه إيصالات القراءة للرسائل المباشرة المسموح بها. - لا يوفّر
signal-cliإيصالات القراءة للمجموعات.
تفاعلات حالة دورة الحياة
اضبط messages.statusReactions.enabled: true للسماح لـ Signal بعرض دورة حياة التفاعلات المشتركة لحالات الانتظار/التفكير/الأداة/Compaction/الاكتمال/الخطأ عند الرسائل الواردة. يستخدم Signal الطابع الزمني للرسالة الواردة هدفًا للتفاعل؛ وتُرسل تفاعلات المجموعة باستخدام معرّف مجموعة Signal مع المرسل الأصلي بوصفه المؤلف المستهدف.
تتطلب تفاعلات الحالة أيضًا تفاعل إقرار وقيمة مطابقة في messages.ackReactionScope (direct أو group-all أو group-mentions أو all). اضبط channels.signal.reactionLevel: "off" لتعطيل تفاعلات حالة Signal.
يمسح 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.
تفاعلات الموافقة
تستخدم مطالبات الموافقة على التنفيذ وPlugin في Signal كتلتي التوجيه العامتين 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"ما لم تكن تريد صراحةً إتاحة وصول أوسع إلى الرسائل المباشرة. - لا يلزم التحقق عبر SMS إلا في مسارات التسجيل أو الاسترداد، لكن فقدان التحكم في الرقم/الحساب قد يعقّد إعادة التسجيل.
مرجع الإعداد (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: عنوان URL الكامل للعملية الخدمية (يتجاوز المضيف/المنفذ).channels.signal.httpHostوchannels.signal.httpPort: عنوان ربط العملية الخدمية (القيمة الافتراضية127.0.0.1:8080).channels.signal.autoStart: تشغيل العملية الخدمية تلقائيًا (القيمة الافتراضية true إذا لم يُضبطhttpUrl).channels.signal.startupTimeoutMs: مهلة انتظار بدء التشغيل بالمللي ثانية (الحد الأدنى 1000، والحد الأقصى 120000؛ والقيمة الافتراضية 30000).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: الحد الأقصى لرسائل المجموعة التي تُضمّن في السياق (تعطّله القيمة 0).channels.signal.dmHistoryLimit: حد سجل الرسائل المباشرة محسوبًا بتفاعلات المستخدم. تجاوزات كل مستخدم:channels.signal.dms["<phone_or_uuid>"].historyLimit.channels.signal.textChunkLimit: حجم جزء النص الصادر بالأحرف (القيمة الافتراضية 4000).channels.signal.chunkMode: length(القيمة الافتراضية) أوnewlineللتقسيم عند الأسطر الفارغة (حدود الفقرات) قبل التقسيم حسب الطول.channels.signal.mediaMaxMb: الحد الأقصى للوسائط الواردة/الصادرة بالميغابايت (القيمة الافتراضية 8).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.
ذو صلة
- نظرة عامة على القنوات - جميع القنوات المدعومة
- الاقتران - مصادقة الرسائل المباشرة ومسار الاقتران
- المجموعات - سلوك محادثات المجموعة وضوابط الإشارات
- توجيه القنوات - توجيه جلسات الرسائل
- الأمان - نموذج الوصول والتقوية