Trạng thái: tích hợp CLI bên ngoài. Gateway giao tiếp vớiDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
signal-cli qua HTTP JSON-RPC + SSE.
Điều kiện tiên quyết
- OpenClaw đã được cài đặt trên máy chủ của bạn (quy trình Linux bên dưới đã được kiểm thử 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 SMS xác minh (cho quy trình đăng ký bằng SMS).
- Quyền truy cập trình duyệt cho captcha Signal (
signalcaptchas.org) trong quá trình đăng ký.
Thiết lập nhanh (người mới bắt đầu)
- Dùng một số Signal riêng cho bot (khuyến nghị).
- Cài đặt
signal-cli(cần Java nếu bạn dùng bản dựng JVM). - Chọn một cách thiết lập:
- Cách A (liên kết QR):
signal-cli link -n "OpenClaw"và quét bằng Signal. - Cách B (đăng ký SMS): đăng ký một số chuyên dụng bằng captcha + xác minh SMS.
- Cách A (liên kết QR):
- Cấu hình OpenClaw và khởi động lại Gateway.
- Gửi tin nhắn trực tiếp đầ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 ở định dạng E.164 (+15551234567) |
cliPath | Đường dẫn tới signal-cli (signal-cli nếu nằm trong PATH) |
dmPolicy | Chính sách truy cập tin nhắn trực tiếp (khuyến nghị pairing) |
allowFrom | Số điện thoại hoặc giá trị uuid:<id> được phép gửi tin nhắn trực tiếp |
Đây là gì
- Kênh Signal qua
signal-cli(không nhúng libsignal). - Định tuyến xác định: phản hồi luôn quay lại Signal.
- Tin nhắn trực tiếp dùng chung phiên chính của tác tử; nhóm được cô lập (
agent:<agentId>:signal:group:<groupId>).
Ghi cấu hình
Theo mặc định, Signal được phép ghi các cập nhật cấu hình được kích hoạt bởi/config set|unset (yêu cầu commands.config: true).
Tắt bằng:
Mô hình số điện thoại (quan trọng)
- Gateway kết nối tới một thiết bị Signal (tài khoản
signal-cli). - Nếu bạn chạy bot trên tài khoản Signal cá nhân của mình, nó sẽ bỏ qua tin nhắn của chính bạn (bảo vệ vòng lặp).
- Để “tôi nhắn cho bot và nó trả lời”, hãy dùng một số bot riêng.
Cách 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 dựng JVM hoặc native). - Liên kết một tài khoản bot:
signal-cli link -n "OpenClaw"rồi 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 theo từng tài khoản và name tùy chọn. Xem gateway/configuration để biết mẫu dùng chung.
Cách thiết lập B: đăng ký số bot chuyên dụng (SMS, Linux)
Dùng cách này khi bạn muốn một số bot chuyên dụ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 bằng giọng nói cho điện thoại cố định).
- Dùng số bot chuyên dụ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), hãy cài JRE 25+ trước.
Luôn cập nhật signal-cli; thượng nguồn lưu ý rằng các bản phát hành cũ có thể hỏng khi API máy chủ Signal thay đổi.
- Đăng ký và xác minh số:
- Mở
https://signalcaptchas.org/registration/generate.html. - Hoàn tất captcha, sao chép đích liên kết
signalcaptcha://...từ “Open Signal”. - Chạy từ cùng IP bên ngoài với phiên trình duyệt khi có thể.
- Chạy lại đăng ký ngay lập tức (mã captcha hết hạn nhanh):
- Cấu hình OpenClaw, khởi động lại Gateway, xác minh kênh:
- Ghép đôi người gửi tin nhắn trực tiếp của bạn:
- Gửi bất kỳ tin nhắn nào tới số bot.
- Phê duyệt mã trên máy chủ:
openclaw pairing approve signal <PAIRING_CODE>. - Lưu số bot làm liên hệ trên điện thoại của bạn để tránh “Liên hệ không xác định”.
- README của
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 bạn muốn tự quản lýsignal-cli (khởi động nguội JVM chậm, khởi tạo container, hoặc CPU dùng chung), hãy chạy daemon riêng và trỏ OpenClaw tới đó:
channels.signal.startupTimeoutMs.
Kiểm soát truy cập (tin nhắn trực tiếp + nhóm)
Tin nhắn trực tiếp:- Mặc định:
channels.signal.dmPolicy = "pairing". - Người gửi không xác định nhận được 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 mã thông báo mặc định cho tin nhắn trực tiếp Signal. Chi tiết: Ghép đôi
- Người gửi chỉ có UUID (từ
sourceUuid) được lưu 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 khi đặtallowlist.channels.signal.groups["<group-id>" | "*"]có thể ghi đè hành vi nhóm bằngrequireMention,tools, vàtoolsBySender.- Dùng
channels.signal.accounts.<id>.groupscho ghi đè theo tài khoản trong thiết lập nhiều tài khoản. - Ghi chú runtime: nếu
channels.signalhoàn toàn bị thiếu, runtime sẽ dự phòng vềgroupPolicy="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 dưới dạng daemon; Gateway đọc sự kiện qua SSE.- Tin nhắn đến được chuẩn hóa vào phong bì kênh dùng chung.
- Phản hồi luôn định tuyến về cùng số hoặc nhóm.
Phương tiện + giới hạn
- Văn bản gửi đi được chia thành đoạn theo
channels.signal.textChunkLimit(mặc định 4000). - Chia đoạn theo dòng mới tùy chọn: đặt
channels.signal.chunkMode="newline"để tách theo dòng trống (ranh giới đoạn văn) trước khi chia theo độ dài. - Hỗ trợ tệp đính kèm (base64 được lấy từ
signal-cli). - Tệp đính kèm ghi chú thoại dùng tên tệp
signal-clilàm dự phòng MIME khi thiếucontentType, nên phiên âm âm thanh vẫn có thể phân loại bản ghi nhớ giọng nói AAC. - Giới hạn phương tiện mặc định:
channels.signal.mediaMaxMb(mặc định 8). - Dùng
channels.signal.ignoreAttachmentsđể bỏ qua tải xuống phương tiện. - Ngữ cảnh lịch sử nhóm dùng
channels.signal.historyLimit(hoặcchannels.signal.accounts.*.historyLimit), dự phòng vềmessages.groupChat.historyLimit. Đặt0để tắt (mặc định 50).
Đang nhập + biên nhận đã đọc
- Chỉ báo đang nhập: OpenClaw gửi tín hiệu đang nhập 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 các tin nhắn trực tiếp đượ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)
- Dùng
message action=reactvớichannel=signal. - Đích: E.164 hoặc UUID của người gửi (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 trong 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/acktắt phản ứng của tác tử (công cụ tin nhắnreactsẽ báo lỗi).minimal/extensivebật phản ứng của tác tử và đặt mức hướng dẫn.
- Ghi đè theo tài khoản:
channels.signal.accounts.<id>.actions.reactions,channels.signal.accounts.<id>.reactionLevel.
Đích gửi (CLI/cron)
- Tin nhắn trực tiếp:
signal:+15551234567(hoặc E.164 thuần). - Tin nhắn trực tiếp UUID:
uuid:<id>(hoặc UUID trần). - Nhóm:
signal:group:<groupId>. - Tên người dùng:
username:<name>(nếu tài khoản Signal của bạn hỗ trợ).
Khắc phục sự cố
Chạy chuỗi bước này trước:- Daemon truy cập được nhưng không có phản hồi: xác minh thiết lập tài khoản/daemon (
httpUrl,account) và chế độ nhận. - Tin nhắn trực tiếp bị bỏ qua: người gửi đang chờ phê duyệt ghép đôi.
- Tin nhắn nhóm bị bỏ qua: cổng chặn theo người gửi/nhắc đến của nhóm đang chặn gửi.
- Lỗi xác thực cấu hình sau khi chỉnh sửa: chạy
openclaw doctor --fix. - Signal bị thiếu trong chẩn đoán: xác nhận
channels.signal.enabled: true.
Ghi chú bảo mật
signal-clilưu 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 dựng lại máy chủ.
- Giữ
channels.signal.dmPolicy: "pairing"trừ khi bạn rõ ràng muốn quyền truy cập tin nhắn trực tiếp rộng hơn. - Chỉ cần xác minh SMS 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 chiếu 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 spawn daemon (mặc định true nếu chưa đặthttpUrl).channels.signal.startupTimeoutMs: thời gian chờ khởi động tính bằng ms (giới hạn 120000).channels.signal.receiveMode:on-start | manual.channels.signal.ignoreAttachments: bỏ qua tải xuống tệp đính kèm.channels.signal.ignoreStories: bỏ qua story 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; hãy dùng số điện thoại/mã định danh UUID.channels.signal.groupPolicy:open | allowlist | disabled(mặc định: allowlist).channels.signal.groupAllowFrom: danh sách cho phép người gửi trong nhóm.channels.signal.groups: ghi đè theo từng nhóm, được khóa theo 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 theo 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 để đưa vào làm ngữ cảnh (0 để tắt).channels.signal.dmHistoryLimit: giới hạn lịch sử DM theo lượt người dùng. Ghi đè theo từng người dùng:channels.signal.dms["<phone_or_uuid>"].historyLimit.channels.signal.textChunkLimit: kích thước đoạn gửi đi (ký tự).channels.signal.chunkMode:length(mặc định) hoặcnewlineđể tách theo dòng trống (ranh giới đoạn văn) trước khi chia đoạn theo độ dài.channels.signal.mediaMaxMb: giới hạn phương tiện gửi đến/gửi đi (MB).
agents.list[].groupChat.mentionPatterns(Signal không hỗ trợ mention gốc).messages.groupChat.mentionPatterns(phương án dự phòng toàn cục).messages.responsePrefix.
Liên quan
- Tổng quan về kênh — tất cả các kênh được hỗ trợ
- Ghép nối — xác thực DM và luồng ghép nối
- Nhóm — hành vi trò chuyện nhóm và kiểm soát mention
- Định tuyến kênh — định tuyến phiên cho tin nhắn
- Bảo mật — mô hình truy cập và gia cố bảo mật