Slack
Trạng thái: sẵn sàng cho sản xuất với DMs + kênh thông qua tích hợp ứng dụng Slack. Chế độ mặc định là Socket Mode; cũng hỗ trợ chế độ HTTP Events API.Ghép nối
DMs của Slack mặc định ở chế độ ghép nối.
Lệnh gạch chéo
Hành vi lệnh gốc và danh mục lệnh.
Khắc phục sự cố kênh
Chẩn đoán và sửa chữa đa kênh.
Thiết lập nhanh
- Socket Mode (mặc định)
- Chế độ HTTP Events API
Tạo ứng dụng Slack và token
Trong cài đặt ứng dụng Slack:
- bật Socket Mode
- tạo App Token (
xapp-...) vớiconnections:write - cài đặt ứng dụng và sao chép Bot Token (
xoxb-...)
Đăng ký sự kiện ứng dụng
Đăng ký sự kiện bot cho:
app_mentionmessage.channels,message.groups,message.im,message.mpimreaction_added,reaction_removedmember_joined_channel,member_left_channelchannel_renamepin_added,pin_removed
Mô hình token
botToken+appTokenlà bắt buộc cho Socket Mode.- Chế độ HTTP yêu cầu
botToken+signingSecret. - Token cấu hình ghi đè biến môi trường dự phòng.
- Biến môi trường
SLACK_BOT_TOKEN/SLACK_APP_TOKENchỉ áp dụng cho tài khoản mặc định. userToken(xoxp-...) chỉ có trong cấu hình (không có dự phòng môi trường) và mặc định là chỉ đọc (userTokenReadOnly: true).- Tùy chọn: thêm
chat:write.customizenếu muốn tin nhắn gửi đi sử dụng danh tính tác nhân hiện tại (tùy chỉnhusernamevà icon).icon_emojisử dụng cú pháp:emoji_name:.
Kiểm soát truy cập và định tuyến
- Chính sách DM
- Chính sách kênh
- Đề cập và người dùng kênh
channels.slack.dmPolicy kiểm soát truy cập DM (cũ: channels.slack.dm.policy):pairing(mặc định)allowlistopen(yêu cầuchannels.slack.allowFrombao gồm"*"; cũ:channels.slack.dm.allowFrom)disabled
dm.enabled(mặc định true)channels.slack.allowFrom(ưu tiên)dm.allowFrom(cũ)dm.groupEnabled(DM nhóm mặc định false)dm.groupChannels(danh sách cho phép MPIM tùy chọn)
channels.slack.accounts.default.allowFromchỉ áp dụng cho tài khoảndefault.- Các tài khoản được đặt tên kế thừa
channels.slack.allowFromkhiallowFromcủa riêng chúng chưa được đặt. - Các tài khoản được đặt tên không kế thừa
channels.slack.accounts.default.allowFrom.
openclaw pairing approve slack <code>.Lệnh và hành vi gạch chéo
- Chế độ tự động lệnh gốc là tắt cho Slack (
commands.native: "auto"không kích hoạt lệnh gốc của Slack). - Kích hoạt trình xử lý lệnh gốc của Slack với
channels.slack.commands.native: true(hoặc toàn cầucommands.native: true). - Khi lệnh gốc được kích hoạt, đăng ký các lệnh gạch chéo tương ứng trong Slack (
/<command>tên), với một ngoại lệ:- đăng ký
/agentstatuscho lệnh trạng thái (Slack dành riêng/status)
- đăng ký
- Nếu lệnh gốc không được kích hoạt, bạn có thể chạy một lệnh gạch chéo được cấu hình duy nhất thông qua
channels.slack.slashCommand. - Menu đối số gốc hiện thích ứng với chiến lược hiển thị của chúng:
- tối đa 5 tùy chọn: khối nút
- 6-100 tùy chọn: menu chọn tĩnh
- hơn 100 tùy chọn: chọn bên ngoài với lọc tùy chọn không đồng bộ khi các trình xử lý tùy chọn tương tác có sẵn
- nếu các giá trị tùy chọn được mã hóa vượt quá giới hạn của Slack, luồng sẽ quay lại nút
- Đối với tải trọng tùy chọn dài, menu đối số lệnh gạch chéo sử dụng hộp thoại xác nhận trước khi gửi giá trị đã chọn.
Phản hồi tương tác
Slack có thể hiển thị các điều khiển phản hồi tương tác do tác nhân tạo ra, nhưng tính năng này bị tắt theo mặc định. Kích hoạt toàn cầu:[[slack_buttons: Approve:approve, Reject:reject]][[slack_select: Choose a target | Canary:canary, Production:production]]
- Đây là giao diện người dùng cụ thể của Slack. Các kênh khác không dịch các chỉ thị Slack Block Kit thành hệ thống nút của riêng họ.
- Các giá trị phản hồi tương tác là các token mờ do OpenClaw tạo ra, không phải là các giá trị do tác nhân tạo ra.
- Nếu các khối tương tác được tạo ra vượt quá giới hạn của Slack Block Kit, OpenClaw sẽ quay lại phản hồi văn bản gốc thay vì gửi tải trọng khối không hợp lệ.
enabled: falsename: "openclaw"sessionPrefix: "slack:slash"ephemeral: true
agent:<agentId>:slack:slash:<userId>
CommandTargetSessionKey).
Luồng, phiên và thẻ phản hồi
- DMs định tuyến là
direct; kênh làchannel; MPIMs làgroup. - Với
session.dmScope=mainmặc định, DMs của Slack sụp đổ thành phiên chính của tác nhân. - Phiên kênh:
agent:<agentId>:slack:channel:<channelId>. - Phản hồi luồng có thể tạo hậu tố phiên luồng (
:thread:<threadTs>) khi áp dụng. channels.slack.thread.historyScopemặc định làthread;thread.inheritParentmặc định làfalse.channels.slack.thread.initialHistoryLimitkiểm soát số lượng tin nhắn luồng hiện có được lấy khi một phiên luồng mới bắt đầu (mặc định20; đặt0để tắt).
channels.slack.replyToMode:off|first|all(mặc địnhoff)channels.slack.replyToModeByChatType: theodirect|group|channel- dự phòng cũ cho các cuộc trò chuyện trực tiếp:
channels.slack.dm.replyToMode
[[reply_to_current]][[reply_to:<id>]]
replyToMode="off" vô hiệu hóa tất cả luồng phản hồi trong Slack, bao gồm cả thẻ [[reply_to_*]] rõ ràng. Điều này khác với Telegram, nơi các thẻ rõ ràng vẫn được tôn trọng trong chế độ "off". Sự khác biệt này phản ánh các mô hình luồng của nền tảng: các luồng của Slack ẩn tin nhắn khỏi kênh, trong khi các phản hồi của Telegram vẫn hiển thị trong luồng trò chuyện chính.
Phương tiện, phân đoạn và phân phối
Tệp đính kèm đầu vào
Tệp đính kèm đầu vào
Các tệp đính kèm của Slack được tải xuống từ các URL riêng tư được lưu trữ trên Slack (luồng yêu cầu xác thực token) và được ghi vào kho phương tiện khi tải thành công và giới hạn kích thước cho phép.Giới hạn kích thước đầu vào runtime mặc định là
20MB trừ khi được ghi đè bởi channels.slack.mediaMaxMb.Văn bản và tệp gửi đi
Văn bản và tệp gửi đi
- các đoạn văn bản sử dụng
channels.slack.textChunkLimit(mặc định 4000) channels.slack.chunkMode="newline"kích hoạt chia đoạn theo đoạn văn trước- gửi tệp sử dụng API tải lên của Slack và có thể bao gồm phản hồi luồng (
thread_ts) - giới hạn phương tiện gửi đi tuân theo
channels.slack.mediaMaxMbkhi được cấu hình; nếu không, gửi kênh sử dụng mặc định loại MIME từ đường dẫn phương tiện
Mục tiêu phân phối
Mục tiêu phân phối
Mục tiêu rõ ràng ưu tiên:
user:<id>cho DMschannel:<id>cho kênh
Hành động và cổng
Hành động của Slack được kiểm soát bởichannels.slack.actions.*.
Các nhóm hành động có sẵn trong công cụ Slack hiện tại:
| Nhóm | Mặc định |
|---|---|
| messages | enabled |
| reactions | enabled |
| pins | enabled |
| memberInfo | enabled |
| emojiList | enabled |
Sự kiện và hành vi hoạt động
- Chỉnh sửa/xóa tin nhắn/phát sóng luồng được ánh xạ thành sự kiện hệ thống.
- Sự kiện thêm/xóa phản ứng được ánh xạ thành sự kiện hệ thống.
- Thành viên tham gia/rời đi, kênh được tạo/đổi tên, và sự kiện thêm/xóa ghim được ánh xạ thành sự kiện hệ thống.
- Cập nhật trạng thái luồng trợ lý (cho các chỉ báo “đang gõ…” trong luồng) sử dụng
assistant.threads.setStatusvà yêu cầu phạm vi botassistant:write. channel_id_changedcó thể di chuyển các khóa cấu hình kênh khiconfigWritesđược bật.- Siêu dữ liệu chủ đề/mục đích của kênh được coi là ngữ cảnh không đáng tin cậy và có thể được tiêm vào ngữ cảnh định tuyến.
- Hành động khối và tương tác modal phát ra sự kiện hệ thống có cấu trúc
Slack interaction: ...với các trường tải trọng phong phú:- hành động khối: các giá trị đã chọn, nhãn, giá trị chọn, và siêu dữ liệu
workflow_* - sự kiện
view_submissionvàview_closedcủa modal với siêu dữ liệu kênh được định tuyến và đầu vào biểu mẫu
- hành động khối: các giá trị đã chọn, nhãn, giá trị chọn, và siêu dữ liệu
Phản ứng xác nhận
ackReaction gửi một emoji xác nhận trong khi OpenClaw đang xử lý một tin nhắn đầu vào.
Thứ tự giải quyết:
channels.slack.accounts.<accountId>.ackReactionchannels.slack.ackReactionmessages.ackReaction- dự phòng emoji danh tính tác nhân (
agents.list[].identity.emoji, nếu không ”👀”)
- Slack mong đợi mã ngắn (ví dụ
"eyes"). - Sử dụng
""để vô hiệu hóa phản ứng cho tài khoản Slack hoặc toàn cầu.
Phản ứng gõ dự phòng
typingReaction thêm một phản ứng tạm thời vào tin nhắn Slack đầu vào trong khi OpenClaw đang xử lý một phản hồi, sau đó xóa nó khi quá trình chạy kết thúc. Đây là một dự phòng hữu ích khi gõ trợ lý gốc của Slack không khả dụng, đặc biệt trong DMs.
Thứ tự giải quyết:
channels.slack.accounts.<accountId>.typingReactionchannels.slack.typingReaction
- Slack mong đợi mã ngắn (ví dụ
"hourglass_flowing_sand"). - Phản ứng là nỗ lực tốt nhất và việc dọn dẹp được thực hiện tự động sau khi phản hồi hoặc đường dẫn thất bại hoàn tất.
Danh sách kiểm tra manifest và phạm vi
Ví dụ manifest ứng dụng Slack
Ví dụ manifest ứng dụng Slack
Phạm vi token người dùng tùy chọn (hoạt động đọc)
Phạm vi token người dùng tùy chọn (hoạt động đọc)
Nếu bạn cấu hình
channels.slack.userToken, các phạm vi đọc điển hình là:channels:history,groups:history,im:history,mpim:historychannels:read,groups:read,im:read,mpim:readusers:readreactions:readpins:reademoji:readsearch:read(nếu bạn phụ thuộc vào đọc tìm kiếm của Slack)
Khắc phục sự cố
Không có phản hồi trong kênh
Không có phản hồi trong kênh
Kiểm tra, theo thứ tự:
groupPolicy- danh sách cho phép kênh (
channels.slack.channels) requireMention- danh sách cho phép
userstheo kênh
Tin nhắn DM bị bỏ qua
Tin nhắn DM bị bỏ qua
Kiểm tra:
channels.slack.dm.enabledchannels.slack.dmPolicy(hoặc cũchannels.slack.dm.policy)- phê duyệt ghép nối / mục danh sách cho phép
Chế độ socket không kết nối
Chế độ socket không kết nối
Xác thực bot + token ứng dụng và bật Socket Mode trong cài đặt ứng dụng Slack.
Chế độ HTTP không nhận sự kiện
Chế độ HTTP không nhận sự kiện
Xác thực:
- ký bí mật
- đường dẫn webhook
- URL Yêu cầu của Slack (Sự kiện + Tương tác + Lệnh gạch chéo)
webhookPathduy nhất cho mỗi tài khoản HTTP
Lệnh gốc/gạch chéo không hoạt động
Lệnh gốc/gạch chéo không hoạt động
Xác minh xem bạn có ý định:
- chế độ lệnh gốc (
channels.slack.commands.native: true) với các lệnh gạch chéo tương ứng đã đăng ký trong Slack - hoặc chế độ lệnh gạch chéo đơn (
channels.slack.slashCommand.enabled: true)
commands.useAccessGroups và danh sách cho phép kênh/người dùng.Truyền văn bản
OpenClaw hỗ trợ truyền văn bản gốc của Slack thông qua API Agents và AI Apps.channels.slack.streaming kiểm soát hành vi xem trước trực tiếp:
off: tắt truyền xem trước trực tiếp.partial(mặc định): thay thế văn bản xem trước bằng đầu ra từng phần mới nhất.block: thêm các cập nhật xem trước phân đoạn.progress: hiển thị văn bản trạng thái tiến độ trong khi tạo, sau đó gửi văn bản cuối cùng.
channels.slack.nativeStreaming kiểm soát API truyền gốc của Slack (chat.startStream / chat.appendStream / chat.stopStream) khi streaming là partial (mặc định: true).
Tắt truyền gốc của Slack (giữ hành vi xem trước bản nháp):
channels.slack.streamMode(replace | status_final | append) được tự động chuyển đổi thànhchannels.slack.streaming.- boolean
channels.slack.streamingđược tự động chuyển đổi thànhchannels.slack.nativeStreaming.
Yêu cầu
- Bật Agents và AI Apps trong cài đặt ứng dụng Slack của bạn.
- Đảm bảo ứng dụng có phạm vi
assistant:write. - Một luồng phản hồi phải có sẵn cho tin nhắn đó. Lựa chọn luồng vẫn tuân theo
replyToMode.
Hành vi
- Khối văn bản đầu tiên bắt đầu một luồng (
chat.startStream). - Các khối văn bản sau đó được thêm vào cùng một luồng (
chat.appendStream). - Kết thúc phản hồi hoàn tất luồng (
chat.stopStream). - Phương tiện và tải trọng không phải văn bản quay lại phân phối bình thường.
- Nếu truyền thất bại giữa phản hồi, OpenClaw quay lại phân phối bình thường cho các tải trọng còn lại.
Tham chiếu cấu hình
Tham chiếu chính:-
Tham chiếu cấu hình - Slack
Các trường Slack quan trọng:
- chế độ/xác thực:
mode,botToken,appToken,signingSecret,webhookPath,accounts.* - truy cập DM:
dm.enabled,dmPolicy,allowFrom(cũ:dm.policy,dm.allowFrom),dm.groupEnabled,dm.groupChannels - chuyển đổi tương thích:
dangerouslyAllowNameMatching(phá vỡ kính; giữ tắt trừ khi cần thiết) - truy cập kênh:
groupPolicy,channels.*,channels.*.users,channels.*.requireMention - luồng/lịch sử:
replyToMode,replyToModeByChatType,thread.*,historyLimit,dmHistoryLimit,dms.*.historyLimit - phân phối:
textChunkLimit,chunkMode,mediaMaxMb,streaming,nativeStreaming - hoạt động/tính năng:
configWrites,commands.native,slashCommand.*,actions.*,userToken,userTokenReadOnly
- chế độ/xác thực: