Documentation Index
Fetch the complete documentation index at: https://openclawhub.vn/llms.txt
Use this file to discover all available pages before exploring further.
Signal (signal-cli)
Trạng thái: tích hợp CLI bên ngoài. Gateway giao tiếp vớisignal-cli qua HTTP JSON-RPC + SSE.
Yêu cầu trước khi bắt đầu
- Đã cài đặt OpenClaw trên máy chủ (dòng lệnh Linux dưới đây đã được kiểm tra trên Ubuntu 24).
signal-clicó sẵn trên máy chủ nơi gateway chạy.- Một số điện thoại có thể nhận một tin nhắn xác minh SMS (cho đường dẫn đăng ký SMS).
- Truy cập trình duyệt để thực hiện captcha của Signal (
signalcaptchas.org) trong quá trình đăng ký.
Thiết lập nhanh (dành cho người mới bắt đầu)
- Sử dụng số Signal riêng biệt cho bot (khuyến nghị).
- Cài đặt
signal-cli(cần Java nếu sử dụng bản JVM). - Chọn một đường dẫn thiết lập:
- Đường dẫn A (QR link):
signal-cli link -n "OpenClaw"và quét bằng Signal. - Đường dẫn B (đăng ký SMS): đăng ký một số riêng với captcha + xác minh SMS.
- Đường dẫn A (QR link):
- Cấu hình OpenClaw và khởi động lại gateway.
- Gửi tin nhắn DM đầu tiên và phê duyệt ghép đôi (
openclaw pairing approve signal <CODE>).
| Trường | Mô tả |
|---|---|
account | Số điện thoại bot theo định dạng E.164 (+15551234567) |
cliPath | Đường dẫn đến signal-cli (signal-cli nếu có trong PATH) |
dmPolicy | Chính sách truy cập DM (pairing được khuyến nghị) |
allowFrom | Các số điện thoại hoặc giá trị uuid:<id> được phép DM |
Nó là gì
- Kênh Signal qua
signal-cli(không phải thư viện nhúng libsignal). - Định tuyến quyết định: phản hồi luôn quay lại Signal.
- DMs chia sẻ phiên chính của agent; các nhóm được cô lập (
agent:<agentId>:signal:group:<groupId>).
Ghi cấu hình
Mặc định, Signal được phép ghi cập nhật cấu hình kích hoạt bởi/config set|unset (yêu cầu commands.config: true).
Vô hiệu hóa với:
Mô hình số (quan trọng)
- Gateway kết nối với một thiết bị Signal (tài khoản
signal-cli). - Nếu chạy bot trên tài khoản Signal cá nhân, nó sẽ bỏ qua tin nhắn của bạn (bảo vệ vòng lặp).
- Để “Tôi nhắn tin cho bot và nó trả lời,” hãy sử dụng một số bot riêng biệt.
Đường dẫn thiết lập A: liên kết tài khoản Signal hiện có (QR)
- Cài đặt
signal-cli(bản JVM hoặc bản native). - Liên kết tài khoản bot:
signal-cli link -n "OpenClaw"sau đó quét mã QR trong Signal.
- Cấu hình Signal và khởi động gateway.
channels.signal.accounts với cấu hình từng tài khoản và tùy chọn name. Xem cấu hình gateway cho mẫu chia sẻ.
Đường dẫn thiết lập B: đăng ký số bot riêng (SMS, Linux)
Sử dụng khi bạn muốn một số bot riêng thay vì liên kết tài khoản ứng dụng Signal hiện có.- Lấy một số có thể nhận SMS (hoặc xác minh giọng nói cho điện thoại bàn).
- Sử dụng số bot riêng để tránh xung đột tài khoản/phiên.
- Cài đặt
signal-clitrên máy chủ gateway:
signal-cli-${VERSION}.tar.gz), cài đặt JRE 25+ trước.
Giữ signal-cli được cập nhật; lưu ý rằng các bản phát hành cũ có thể bị lỗi khi API máy chủ Signal thay đổi.
- Đăng ký và xác minh số:
- Mở
https://signalcaptchas.org/registration/generate.html. - Hoàn thành captcha, sao chép liên kết
signalcaptcha://...từ “Open Signal”. - Chạy từ cùng một IP bên ngoài như phiên trình duyệt khi có thể.
- Chạy lại đăng ký ngay lập tức (token captcha hết hạn nhanh chóng):
- Cấu hình OpenClaw, khởi động lại gateway, xác minh kênh:
- Ghép đôi người gửi DM của bạn:
- Gửi bất kỳ tin nhắn nào đến số bot.
- Phê duyệt mã trên máy chủ:
openclaw pairing approve signal <PAIRING_CODE>. - Lưu số bot như một liên hệ trên điện thoại để tránh “Liên hệ không xác định”.
signal-cli có thể hủy xác thực phiên ứng dụng Signal chính cho số đó. Ưu tiên một số bot riêng, hoặc sử dụng chế độ liên kết QR nếu cần giữ thiết lập ứng dụng điện thoại hiện có.
Tham khảo từ upstream:
- README
signal-cli:https://github.com/AsamK/signal-cli - Quy trình captcha:
https://github.com/AsamK/signal-cli/wiki/Registration-with-captcha - Quy trình liên kết:
https://github.com/AsamK/signal-cli/wiki/Linking-other-devices-(Provisioning)
Chế độ daemon bên ngoài (httpUrl)
Nếu muốn tự quản lýsignal-cli (khởi động JVM chậm, khởi tạo container, hoặc chia sẻ CPU), chạy daemon riêng và chỉ định OpenClaw đến nó:
channels.signal.startupTimeoutMs.
Kiểm soát truy cập (DMs + nhóm)
DMs:- Mặc định:
channels.signal.dmPolicy = "pairing". - Người gửi không xác định nhận mã ghép đôi; tin nhắn bị bỏ qua cho đến khi được phê duyệt (mã hết hạn sau 1 giờ).
- Phê duyệt qua:
openclaw pairing list signalopenclaw pairing approve signal <CODE>
- Ghép đôi là trao đổi token mặc định cho DMs Signal. Chi tiết: Ghép đôi
- Người gửi chỉ có UUID (từ
sourceUuid) được lưu trữ dưới dạnguuid:<id>trongchannels.signal.allowFrom.
channels.signal.groupPolicy = open | allowlist | disabled.channels.signal.groupAllowFromkiểm soát ai có thể kích hoạt trong nhóm khiallowlistđược đặt.channels.signal.groups["<group-id>" | "*"]có thể ghi đè hành vi nhóm vớirequireMention,tools, vàtoolsBySender.- Sử dụng
channels.signal.accounts.<id>.groupscho ghi đè từng tài khoản trong thiết lập nhiều tài khoản. - Lưu ý khi chạy: nếu
channels.signalhoàn toàn thiếu, runtime sẽ quay lạigroupPolicy="allowlist"cho kiểm tra nhóm (ngay cả khichannels.defaults.groupPolicyđược đặt).
Cách hoạt động (hành vi)
signal-clichạy như một daemon; gateway đọc sự kiện qua SSE.- Tin nhắn đến được chuẩn hóa vào phong bì kênh chia sẻ.
- Phản hồi luôn định tuyến trở lại cùng số hoặc nhóm.
Media + giới hạn
- Văn bản gửi đi được chia thành
channels.signal.textChunkLimit(mặc định 4000). - Chia đoạn tùy chọn theo dòng mới: đặt
channels.signal.chunkMode="newline"để chia theo dòng trống (ranh giới đoạn) trước khi chia theo độ dài. - Hỗ trợ đính kèm (base64 lấy từ
signal-cli). - Giới hạn media mặc định:
channels.signal.mediaMaxMb(mặc định 8). - Sử dụng
channels.signal.ignoreAttachmentsđể bỏ qua tải xuống media. - Ngữ cảnh lịch sử nhóm sử dụng
channels.signal.historyLimit(hoặcchannels.signal.accounts.*.historyLimit), quay lạimessages.groupChat.historyLimit. Đặt0để vô hiệu hóa (mặc định 50).
Chỉ báo gõ + biên nhận đọc
- Chỉ báo gõ: OpenClaw gửi tín hiệu gõ qua
signal-cli sendTypingvà làm mới chúng trong khi phản hồi đang chạy. - Biên nhận đọc: khi
channels.signal.sendReadReceiptslà true, OpenClaw chuyển tiếp biên nhận đọc cho DMs được phép. - Signal-cli không cung cấp biên nhận đọc cho nhóm.
Phản ứng (công cụ tin nhắn)
- Sử dụng
message action=reactvớichannel=signal. - Mục tiêu: người gửi E.164 hoặc UUID (sử dụng
uuid:<id>từ đầu ra ghép đôi; UUID trần cũng hoạt động). messageIdlà dấu thời gian Signal cho tin nhắn bạn đang phản ứng.- Phản ứng nhóm yêu cầu
targetAuthorhoặctargetAuthorUuid.
channels.signal.actions.reactions: bật/tắt hành động phản ứng (mặc định true).channels.signal.reactionLevel:off | ack | minimal | extensive.off/ackvô hiệu hóa phản ứng của agent (công cụ tin nhắnreactsẽ báo lỗi).minimal/extensivebật phản ứng của agent và đặt mức hướng dẫn.
- Ghi đè từng tài khoản:
channels.signal.accounts.<id>.actions.reactions,channels.signal.accounts.<id>.reactionLevel.
Mục tiêu giao hàng (CLI/cron)
- DMs:
signal:+15551234567(hoặc E.164 trần). - UUID DMs:
uuid:<id>(hoặc UUID trần). - Nhóm:
signal:group:<groupId>. - Tên người dùng:
username:<name>(nếu được tài khoản Signal của bạn hỗ trợ).
Gỡ lỗi
Chạy trình tự này trước:- Daemon có thể truy cập nhưng không có phản hồi: xác minh cài đặt tài khoản/daemon (
httpUrl,account) và chế độ nhận. - DMs bị bỏ qua: người gửi đang chờ phê duyệt ghép đôi.
- Tin nhắn nhóm bị bỏ qua: chặn gửi/đề cập nhóm ngăn chặn giao hàng.
- Lỗi xác thực cấu hình sau khi chỉnh sửa: chạy
openclaw doctor --fix. - Signal thiếu trong chẩn đoán: xác nhận
channels.signal.enabled: true.
Ghi chú bảo mật
signal-clilưu trữ khóa tài khoản cục bộ (thường là~/.local/share/signal-cli/data/).- Sao lưu trạng thái tài khoản Signal trước khi di chuyển hoặc xây dựng lại máy chủ.
- Giữ
channels.signal.dmPolicy: "pairing"trừ khi bạn muốn truy cập DM rộng hơn. - Xác minh SMS chỉ cần thiết cho quy trình đăng ký hoặc khôi phục, nhưng mất quyền kiểm soát số/tài khoản có thể làm phức tạp việc đăng ký lại.
Tham khảo cấu hình (Signal)
Cấu hình đầy đủ: Cấu hình Tùy chọn nhà cung cấp:channels.signal.enabled: bật/tắt khởi động kênh.channels.signal.account: E.164 cho tài khoản bot.channels.signal.cliPath: đường dẫn đếnsignal-cli.channels.signal.httpUrl: URL daemon đầy đủ (ghi đè host/port).channels.signal.httpHost,channels.signal.httpPort: bind daemon (mặc định 127.0.0.1:8080).channels.signal.autoStart: tự động khởi động daemon (mặc định true nếuhttpUrlkhông được đặt).channels.signal.startupTimeoutMs: thời gian chờ khởi động trong ms (giới hạn 120000).channels.signal.receiveMode:on-start | manual.channels.signal.ignoreAttachments: bỏ qua tải xuống đính kèm.channels.signal.ignoreStories: bỏ qua câu chuyện từ daemon.channels.signal.sendReadReceipts: chuyển tiếp biên nhận đọc.channels.signal.dmPolicy:pairing | allowlist | open | disabled(mặc định: pairing).channels.signal.allowFrom: danh sách cho phép DM (E.164 hoặcuuid:<id>).openyêu cầu"*". Signal không có tên người dùng; sử dụng id điện thoại/UUID.channels.signal.groupPolicy:open | allowlist | disabled(mặc định: allowlist).channels.signal.groupAllowFrom: danh sách cho phép người gửi nhóm.channels.signal.groups: ghi đè từng nhóm được khóa bởi id nhóm Signal (hoặc"*"). Các trường được hỗ trợ:requireMention,tools,toolsBySender.channels.signal.accounts.<id>.groups: phiên bản từng tài khoản củachannels.signal.groupscho thiết lập nhiều tài khoản.channels.signal.historyLimit: số tin nhắn nhóm tối đa để bao gồm làm ngữ cảnh (0 vô hiệu hóa).channels.signal.dmHistoryLimit: giới hạn lịch sử DM trong lượt người dùng. Ghi đè từng người dùng:channels.signal.dms["<phone_or_uuid>"].historyLimit.channels.signal.textChunkLimit: kích thước đoạn văn bản gửi đi (ký tự).channels.signal.chunkMode:length(mặc định) hoặcnewlineđể chia theo dòng trống (ranh giới đoạn) trước khi chia theo độ dài.channels.signal.mediaMaxMb: giới hạn media vào/ra (MB).
agents.list[].groupChat.mentionPatterns(Signal không hỗ trợ đề cập gốc).messages.groupChat.mentionPatterns(dự phòng toàn cầu).messages.responsePrefix.