Signal (signal-cli)¶
حیثیت: بیرونی CLI انٹیگریشن۔ Gateway signal-cli سے HTTP JSON-RPC + SSE کے ذریعے بات چیت کرتا ہے۔
فوری سیٹ اپ (مبتدی)¶
- بوٹ کے لیے علیحدہ Signal نمبر استعمال کریں (سفارش کردہ)۔
signal-cliانسٹال کریں (Java درکار ہے)۔- بوٹ ڈیوائس کو لنک کریں اور ڈیمَن شروع کریں:
-
signal-cli link -n "OpenClaw" - OpenClaw کنفیگر کریں اور گیٹ وے شروع کریں۔
کم از کم کنفیگ:
{
channels: {
signal: {
enabled: true,
account: "+15551234567",
cliPath: "signal-cli",
dmPolicy: "pairing",
allowFrom: ["+15557654321"],
},
},
}
یہ کیا ہے¶
signal-cliکے ذریعے Signal چینل (ایمبیڈڈ libsignal نہیں)۔- متعین روٹنگ: جوابات ہمیشہ Signal پر ہی واپس جاتے ہیں۔
- DMs ایجنٹ کے مرکزی سیشن کو شیئر کرتے ہیں؛ گروپس الگ تھلگ ہوتے ہیں (
agent:<agentId>:signal:group:<groupId>)۔
کنفیگ لکھائی¶
بطورِ طے شدہ، Signal کو /config set|unset کے ذریعے متحرک ہونے والی کنفیگ اپڈیٹس لکھنے کی اجازت ہے ( commands.config: true درکار ہے)۔
اسے بند کرنے کے لیے:
{
channels: { signal: { configWrites: false } },
}
نمبر ماڈل (اہم)¶
- گیٹ وے ایک Signal ڈیوائس سے جڑتا ہے (
signal-cliاکاؤنٹ)۔ - اگر آپ بوٹ کو اپنے ذاتی Signal اکاؤنٹ پر چلاتے ہیں تو یہ آپ کے اپنے پیغامات کو نظرانداز کرے گا (لوپ پروٹیکشن)۔
- “میں بوٹ کو میسج کروں اور وہ جواب دے” کے لیے علیحدہ بوٹ نمبر استعمال کریں۔
سیٹ اپ (تیز راستہ)¶
signal-cliانسٹال کریں (Java درکار ہے)۔- بوٹ اکاؤنٹ لنک کریں:
-
signal-cli link -n "OpenClaw"پھر Signal میں QR اسکین کریں۔ - Signal کنفیگر کریں اور گیٹ وے شروع کریں۔
مثال:
{
channels: {
signal: {
enabled: true,
account: "+15551234567",
cliPath: "signal-cli",
dmPolicy: "pairing",
allowFrom: ["+15557654321"],
},
},
}
Multi-account support: use channels.signal.accounts with per-account config and optional name. See gateway/configuration for the shared pattern.
بیرونی ڈیمَن موڈ (httpUrl)¶
اگر آپ signal-cli کو خود منیج کرنا چاہتے ہیں (سست JVM کولڈ اسٹارٹس، کنٹینر انِٹ، یا مشترکہ CPUs)، تو ڈیمَن الگ سے چلائیں اور OpenClaw کو اس کی طرف پوائنٹ کریں:
{
channels: {
signal: {
httpUrl: "http://127.0.0.1:8080",
autoStart: false,
},
},
}
This skips auto-spawn and the startup wait inside OpenClaw. For slow starts when auto-spawning, set channels.signal.startupTimeoutMs.
رسائی کا کنٹرول (DMs + گروپس)¶
DMs:
- بطورِ طے شدہ:
channels.signal.dmPolicy = "pairing"۔ - نامعلوم ارسال کنندگان کو ایک پیئرنگ کوڈ ملتا ہے؛ منظوری تک پیغامات نظرانداز کیے جاتے ہیں (کوڈز 1 گھنٹے بعد ختم ہو جاتے ہیں)۔
- منظوری کے طریقے:
openclaw pairing list signalopenclaw pairing approve signal <CODE>- Pairing is the default token exchange for Signal DMs. Details: Pairing
- صرف UUID والے ارسال کنندگان (
sourceUuidسے)channels.signal.allowFromمیںuuid:<id>کے طور پر محفوظ کیے جاتے ہیں۔
گروپس:
channels.signal.groupPolicy = open | allowlist | disabled۔channels.signal.groupAllowFromیہ کنٹرول کرتا ہے کہ جبallowlistسیٹ ہو تو گروپس میں کون ٹرگر کر سکتا ہے۔
یہ کیسے کام کرتا ہے (رویّہ)¶
signal-cliبطور ڈیمَن چلتا ہے؛ گیٹ وے SSE کے ذریعے واقعات پڑھتا ہے۔- آنے والے پیغامات کو مشترکہ چینل لفافے میں نارملائز کیا جاتا ہے۔
- جوابات ہمیشہ اسی نمبر یا گروپ کی طرف روٹ ہوتے ہیں۔
میڈیا + حدود¶
- آؤٹ باؤنڈ متن کو
channels.signal.textChunkLimitتک حصوں میں توڑا جاتا ہے (ڈیفالٹ 4000)۔ - اختیاری نئی لائن چنکنگ: خالی لائنوں (پیراگراف کی حدیں) پر تقسیم کے لیے
channels.signal.chunkMode="newline"سیٹ کریں، پھر لمبائی کے مطابق چنکنگ ہوگی۔ - اٹیچمنٹس سپورٹڈ ہیں (base64،
signal-cliسے حاصل شدہ)۔ - ڈیفالٹ میڈیا حد:
channels.signal.mediaMaxMb(ڈیفالٹ 8)۔ - میڈیا ڈاؤن لوڈ چھوڑنے کے لیے
channels.signal.ignoreAttachmentsاستعمال کریں۔ - Group history context uses
channels.signal.historyLimit(orchannels.signal.accounts.*.historyLimit), falling back tomessages.groupChat.historyLimit. Set0to disable (default 50).
ٹائپنگ + ریڈ رسیدیں¶
- ٹائپنگ اشارے: OpenClaw
signal-cli sendTypingکے ذریعے ٹائپنگ سگنلز بھیجتا ہے اور جواب کے دوران انہیں ریفریش کرتا ہے۔ - ریڈ رسیدیں: جب
channels.signal.sendReadReceiptstrue ہو، OpenClaw مجاز DMs کے لیے ریڈ رسیدیں فارورڈ کرتا ہے۔ - signal-cli گروپس کے لیے ریڈ رسیدیں فراہم نہیں کرتا۔
ری ایکشنز (میسج ٹول)¶
channel=signalکے ساتھmessage action=reactاستعمال کریں۔- اہداف: ارسال کنندہ 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=true
message 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۔off/ackایجنٹ ری ایکشنز کو بند کرتا ہے (میسج ٹولreactایرر دے گا)۔minimal/extensiveایجنٹ ری ایکشنز فعال کرتا ہے اور رہنمائی کی سطح سیٹ کرتا ہے۔- Per-account overrides:
channels.signal.accounts.<id>.actions.reactions,channels.signal.accounts.<id>.reactionLevel.
ڈیلیوری اہداف (CLI/cron)¶
- DMs:
signal:+15551234567(یا سادہ E.164)۔ - UUID DMs:
uuid:<id>(یا سادہ UUID)۔ - گروپس:
signal:group:<groupId>۔ - یوزرنیمز:
username:<name>(اگر آپ کے Signal اکاؤنٹ میں سپورٹ ہو)۔
خرابیوں کا ازالہ¶
سب سے پہلے یہ سیڑھی چلائیں:
openclaw status
openclaw gateway status
openclaw logs --follow
openclaw doctor
openclaw channels status --probe
پھر ضرورت ہو تو DM پیئرنگ اسٹیٹ کی تصدیق کریں:
openclaw pairing list signal
عام ناکامیاں:
- ڈیمَن قابلِ رسائی ہے مگر جوابات نہیں: اکاؤنٹ/ڈیمَن سیٹنگز (
httpUrl,account) اور رِسیو موڈ کی تصدیق کریں۔ - DMs نظرانداز: ارسال کنندہ پیئرنگ منظوری کا منتظر ہے۔
- گروپ پیغامات نظرانداز: گروپ بھیجنے والے/مینشن گیٹنگ ڈیلیوری روکتی ہے۔
ٹریاج فلو کے لیے: /channels/troubleshooting۔
کنفیگریشن حوالہ (Signal)¶
مکمل کنفیگریشن: Configuration
فراہم کنندہ کے اختیارات:
channels.signal.enabled: چینل اسٹارٹ اپ فعال/غیرفعال کریں۔channels.signal.account: بوٹ اکاؤنٹ کے لیے E.164۔channels.signal.cliPath:signal-cliکا راستہ۔channels.signal.httpUrl: مکمل ڈیمَن URL (ہوسٹ/پورٹ کو اوور رائیڈ کرتا ہے)۔channels.signal.httpHost,channels.signal.httpPort: ڈیمَن بائنڈ (ڈیفالٹ 127.0.0.1:8080)۔channels.signal.autoStart: آٹو-اسپان ڈیمَن (اگرhttpUrlغیر سیٹ ہو تو ڈیفالٹ true)۔channels.signal.startupTimeoutMs: اسٹارٹ اپ ویٹ ٹائم آؤٹ (ms) (حد 120000)۔channels.signal.receiveMode:on-start | manual۔channels.signal.ignoreAttachments: اٹیچمنٹ ڈاؤن لوڈ چھوڑیں۔channels.signal.ignoreStories: ڈیمَن سے اسٹوریز نظرانداز کریں۔channels.signal.sendReadReceipts: ریڈ رسیدیں فارورڈ کریں۔channels.signal.dmPolicy:pairing | allowlist | open | disabled(ڈیفالٹ: پیئرنگ)۔channels.signal.allowFrom: DM allowlist (E.164 oruuid:<id>).openrequires"*". Signal میں صارف نام نہیں ہوتے؛ فون/UUID آئی ڈیز استعمال کریں۔channels.signal.groupPolicy:open | allowlist | disabled(ڈیفالٹ: اجازت فہرست)۔channels.signal.groupAllowFrom: گروپ ارسال کنندہ اجازت فہرست۔channels.signal.historyLimit: سیاق کے طور پر شامل کرنے کے لیے زیادہ سے زیادہ گروپ پیغامات (0 بند کرتا ہے)۔channels.signal.dmHistoryLimit: صارف کے ٹرنز میں DM ہسٹری کی حد۔ فی صارف اووررائیڈز:channels.signal.dms["<phone_or_uuid>"].historyLimit۔channels.signal.textChunkLimit: آؤٹ باؤنڈ چنک سائز (حروف)۔channels.signal.chunkMode:length(ڈیفالٹ) یاnewlineتاکہ لمبائی چنکنگ سے پہلے خالی لائنوں (پیراگراف کی حدیں) پر تقسیم ہو۔channels.signal.mediaMaxMb: اِن باؤنڈ/آؤٹ باؤنڈ میڈیا حد (MB)۔
متعلقہ عالمی اختیارات:
agents.list[].groupChat.mentionPatterns(Signal مقامی مینشنز سپورٹ نہیں کرتا)۔messages.groupChat.mentionPatterns(عالمی فال بیک)۔messages.responsePrefix۔