Ghép nối
Tin nhắn trực tiếp trên Slack mặc định sử dụng 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
Quy trình chẩn đoán và khắc phục trên nhiều kênh.
Chọn phương thức truyền tải
Socket Mode và HTTP Request URLs có tính năng tương đương đối với nhắn tin, lệnh gạch chéo, App Home và tương tác. Hãy chọn dựa trên mô hình triển khai, không phải tính năng.Chọn Socket Mode cho máy chủ dùng một Gateway, laptop phát triển và mạng tại chỗ có thể kết nối đi tới
*.slack.com nhưng không thể chấp nhận HTTPS vào.Chọn HTTP Request URLs khi chạy nhiều bản sao Gateway phía sau bộ cân bằng tải, khi WSS đi bị chặn nhưng HTTPS vào được cho phép, hoặc khi bạn đã kết thúc webhook Slack tại một proxy ngược.Chế độ chuyển tiếp
Chế độ chuyển tiếp tách luồng vào Slack khỏi gateway OpenClaw. Một bộ định tuyến đáng tin cậy sở hữu kết nối Slack Socket Mode duy nhất, chọn gateway đích và chuyển tiếp một sự kiện có kiểu qua websocket đã xác thực. Gateway vẫn sử dụng bot token riêng cho các lệnh gọi Slack Web API đi.wss:// trừ khi URL đó nhắm tới localhost. Hãy coi bearer token và bảng định tuyến của bộ định tuyến là một phần của ranh giới ủy quyền Slack: các sự kiện được định tuyến đi vào trình xử lý tin nhắn Slack thông thường dưới dạng kích hoạt đã được ủy quyền. slack_identity do bộ định tuyến cung cấp trong khung websocket hello có thể đặt tên người dùng và biểu tượng đi mặc định; danh tính tường minh do bên gọi cung cấp vẫn được ưu tiên. Kết nối chuyển tiếp kết nối lại với cùng khoảng chờ tăng dần có giới hạn như Socket Mode và xóa danh tính do bộ định tuyến cung cấp mỗi khi ngắt kết nối.
Cài đặt trên toàn tổ chức Enterprise Grid
Một tài khoản Slack có thể nhận tin nhắn từ mọi workspace thuộc phạm vi cài đặt trên toàn tổ chức Enterprise Grid. Hãy chọn Socket Mode trực tiếp hoặc HTTP Request URLs; chế độ chuyển tiếp không được hỗ trợ cho tài khoản doanh nghiệp. Cả hai manifest đặc quyền tối thiểu dưới đây chỉ bật đường dẫn sự kiện V1message và app_mention, phản hồi tức thì và các phản ứng trạng thái do trình lắng nghe sở hữu.
Socket Mode
connections:write cho Socket Mode, sau đó sao chép bot token từ bản cài đặt của tổ chức. Cấu hình tài khoản sử dụng bot token được cài đặt ở cấp tổ chức:
HTTP Request URLs
Sử dụng chế độ HTTP khi Gateway có điểm cuối HTTPS công khai và không mở kết nối Socket Mode. Thay URL ví dụ bằng URLwebhookPath công khai của Gateway (mặc định /slack/events):
enterpriseOrgInstall bằng auth.test của Slack. Token được cài đặt ở cấp tổ chức nhưng không có cờ này, hoặc token workspace có cờ này, sẽ khiến quá trình khởi động thất bại. Slack vẫn là nguồn thông tin chính xác về những workspace đã cấp quyền cho bản cài đặt; sau đó OpenClaw áp dụng các chính sách đã cấu hình về kênh, người dùng, tin nhắn trực tiếp và lượt đề cập cho từng sự kiện được gửi đến. Enterprise V1 từ chối tất cả sự kiện message và app_mention do bot tạo trước khi phân phối, bất kể allowBots, vì bản cài đặt tổ chức không cung cấp danh tính bot ổn định có định danh workspace để ngăn vòng lặp.
Hỗ trợ doanh nghiệp được chủ ý giới hạn ở Socket Mode trực tiếp hoặc các sự kiện HTTP message và app_mention cùng phản hồi tức thì của chúng. Chế độ chuyển tiếp, lệnh gạch chéo, tương tác, App Home, trình lắng nghe sự kiện phản ứng, ghim, công cụ hành động Slack, phê duyệt gốc của Slack, liên kết, gửi theo hàng đợi hoặc lịch biểu và gửi chủ động đều không khả dụng cho tài khoản doanh nghiệp. Các phản ứng xác nhận, nhập liệu và trạng thái đi được hỗ trợ thông qua máy khách Slack do trình lắng nghe sở hữu và yêu cầu reactions:write; thông báo phản ứng vào và công cụ hành động phản ứng vẫn không khả dụng.
Các phản hồi tức thời tái sử dụng hành vi phân phối Slack tiêu chuẩn cho các phần,
phương tiện, siêu dữ liệu, phương án dự phòng danh tính, bản xem trước liên kết và biên nhận, nhưng chỉ khi
client thuộc quyền sở hữu của listener đã được xác thực vẫn nằm trong lượt sự kiện đang hoạt động. Hàng đợi gửi
trong bộ nhớ và các bản ghi tham gia luồng được phân vùng theo workspace của
sự kiện đó; bản thân client không bao giờ được tuần tự hóa hoặc lưu trữ lâu dài.
Các khóa chính sách kênh và mục nhập dm.groupChannels phải sử dụng ID kênh Slack ổn định dạng thô hoặc
dạng channel:<id>. OpenClaw chuẩn hóa cả hai dạng thành ID kênh dạng thô để
đối chiếu khi chạy; các tiền tố slack:, group: và mpim: khiến quá trình khởi động thất bại.
Các mục nhập chính sách người dùng phải sử dụng ID người dùng Slack ổn định; tên, slug, tên hiển thị
và địa chỉ email khiến quá trình khởi động thất bại. ID phải sử dụng tiền tố viết hoa và
phần thân chuẩn của Slack (ví dụ: C0123456789 hoặc U0123456789); các dạng viết thường và
dạng ngắn trông tương tự khiến quá trình khởi động thất bại. Tài khoản Enterprise không thể bật
dangerouslyAllowNameMatching. Tài khoản Enterprise có thể đặt
mentionPatterns.mode toàn cục, nhưng mentionPatterns.allowIn và
mentionPatterns.denyIn khiến quá trình khởi động thất bại vì ID kênh Slack đơn thuần không
được định danh theo workspace và có thể được tái sử dụng giữa các workspace. Các bản cài đặt theo workspace
giữ nguyên hành vi mẫu đề cập có phạm vi hiện tại. Mỗi workspace được chấp nhận
có danh tính định tuyến, phiên, bản chép lời, chống trùng lặp, lịch sử và bộ nhớ đệm riêng,
ngay cả khi các ID Slack trùng nhau. Trong luồng message, các tin nhắn người dùng thông thường
và sự kiện file_share do người dùng tạo được hỗ trợ; các kiểu con tin nhắn khác bị
từ chối trước khi xử lý ủy quyền hoặc sự kiện hệ thống.
DM Enterprise phải bị tắt (dm.enabled=false hoặc
dmPolicy="disabled") hoặc được mở rõ ràng bằng dmPolicy="open" và
một allowFrom tài khoản có hiệu lực chứa giá trị literal "*". Danh sách cho phép trống
hoặc ID dành riêng cho người dùng mà không có "*" khiến quá trình khởi động thất bại. Việc ghép cặp và
danh sách cho phép DM theo từng người dùng bị từ chối vì ID người dùng Slack không
được định danh theo workspace trong các kho lưu trữ ủy quyền đó. Chính sách kênh và người gửi
vẫn tiếp tục áp dụng cho tin nhắn kênh.
Cài đặt
plugins install đăng ký và bật plugin. Thao tác này không có tác dụng cho đến khi bạn cấu hình ứng dụng Slack và các cài đặt kênh bên dưới. Xem Plugin để biết các quy tắc cài đặt plugin chung.
Thiết lập nhanh
Các manifest trong phần này tạo một bản cài đặt có phạm vi workspace. Đối với bản cài đặt trên toàn tổ chức Enterprise Grid, hãy sử dụng manifest và quy trình làm việc dành riêng cho toàn tổ chức.- Socket Mode (mặc định)
- URL yêu cầu HTTP
1
Tạo ứng dụng Slack mới
Mở api.slack.com/apps → Create New App → From a manifest → chọn workspace của bạn → dán một trong các manifest bên dưới → Next → Create.Sau khi Slack tạo ứng dụng:
Recommended tương ứng với toàn bộ bộ tính năng của plugin Slack: App Home, lệnh gạch chéo, tệp, phản ứng, ghim, DM nhóm và quyền đọc emoji/nhóm người dùng. Chọn Minimal khi chính sách workspace hạn chế phạm vi — cấu hình này hỗ trợ DM, lịch sử kênh/nhóm, lượt đề cập và lệnh gạch chéo nhưng loại bỏ tệp, phản ứng, ghim, DM nhóm (
mpim:*), emoji:read và usergroups:read. Xem Danh sách kiểm tra manifest và phạm vi để biết lý do của từng phạm vi và các tùy chọn bổ sung như lệnh gạch chéo bổ sung.- Basic Information -> App-Level Tokens -> Generate Token and Scopes: thêm
connections:write, lưu và sao chép App-Level Token. - Install App -> Install to Workspace: sao chép Bot User OAuth Token.
2
Cấu hình OpenClaw
Thiết lập SecretRef được khuyến nghị:Phương án dự phòng bằng biến môi trường (chỉ tài khoản mặc định):
3
Khởi động Gateway
Danh tính người dùng (đăng với tư cách người thật)
Danh tính người dùng cho phép OpenClaw đọc và đăng với tư cách người đã cấp quyền cho ứng dụng Slack.userToken là danh tính thực hiện hành động; một ứng dụng Slack đồng hành truyền lưu lượng Events API qua Socket Mode hoặc HTTP Request URL. Ứng dụng đồng hành không cần người dùng bot hoặc token bot.
Thiết lập ứng dụng đồng hành như sau:
-
Trong OAuth & Permissions -> User Token Scopes, thêm các quyền theo phạm vi người dùng sau:
- lịch sử:
channels:history,groups:history,im:history,mpim:history - tra cứu cuộc trò chuyện:
channels:read,groups:read,im:read,mpim:read - người dùng:
users:read - đăng bài:
chat:write(tin nhắn được đăng với tư cách người dùng cấp quyền) - mở DM:
im:write,mpim:write
- lịch sử:
-
Trong Event Subscriptions -> Subscribe to events on behalf of users, thêm các sự kiện người dùng sau. Không chỉ thêm chúng vào danh sách sự kiện bot:
message.channelsmessage.groupsmessage.immessage.mpim
-
Chọn một phương thức truyền tải sự kiện:
- Socket Mode: bật Socket Mode và tạo token cấp ứng dụng với
connections:write. Cấu hình token đó làmappToken. - HTTP Request URL: trỏ Event Subscriptions đến điểm cuối Slack công khai của OpenClaw và sao chép Basic Information -> App Credentials -> Signing Secret. Cấu hình giá trị đó làm
signingSecret.
- Socket Mode: bật Socket Mode và tạo token cấp ứng dụng với
-
Cài đặt hoặc cài đặt lại ứng dụng, cấp quyền cho ứng dụng với tư cách người dự kiến và sao chép token OAuth người dùng thu được vào
userToken.
Tinh chỉnh phương thức truyền tải Socket Mode
Theo mặc định, OpenClaw đặt thời gian chờ pong của ứng dụng khách Slack SDK thành 15 giây cho Socket Mode. Chỉ ghi đè cài đặt truyền tải khi cần tinh chỉnh riêng cho không gian làm việc hoặc máy chủ:clientPingTimeout là thời gian chờ pong sau khi SDK gửi ping từ ứng dụng khách; serverPingTimeout là thời gian chờ ping từ máy chủ Slack. Tin nhắn và sự kiện của ứng dụng vẫn là trạng thái ứng dụng, không phải tín hiệu hoạt động của phương thức truyền tải.
Lưu ý:
socketModebị bỏ qua trong chế độ HTTP Request URL.- Các cài đặt
channels.slack.socketModecơ sở áp dụng cho tất cả tài khoản Slack trừ khi bị ghi đè. Các ghi đè theo tài khoản sử dụngchannels.slack.accounts.<accountId>.socketMode; vì đây là ghi đè đối tượng, hãy bao gồm mọi trường tinh chỉnh socket cần dùng cho tài khoản đó. - Chỉ
clientPingTimeoutcó giá trị mặc định của OpenClaw (15000).serverPingTimeoutvàpingPongLoggingEnabledchỉ được chuyển đến Slack SDK khi đã cấu hình. - Thời gian chờ tăng dần khi khởi động lại Socket Mode bắt đầu ở khoảng 2 giây và tối đa khoảng 30 giây. Các lỗi có thể khôi phục khi khởi động, chờ khởi động và ngắt kết nối sẽ được thử lại cho đến khi kênh dừng. Các lỗi vĩnh viễn về tài khoản và thông tin xác thực như xác thực không hợp lệ, token bị thu hồi hoặc thiếu phạm vi sẽ thất bại ngay thay vì thử lại vô thời hạn.
Danh sách kiểm tra manifest và phạm vi
Manifest ứng dụng Slack cơ sở giống nhau cho Socket Mode và HTTP Request URL. Chỉ khốisettings (và url của lệnh gạch chéo) là khác nhau.
Manifest cơ sở (mặc định Socket Mode):
settings bằng biến thể HTTP và thêm url vào mỗi lệnh gạch chéo. Yêu cầu URL công khai:
Cài đặt manifest bổ sung
Hiển thị các tính năng khác nhau mở rộng các giá trị mặc định ở trên. Tệp manifest mặc định bật tab Home trong Slack App Home và đăng kýapp_home_opened. Khi một thành viên không gian làm việc mở tab Home, OpenClaw xuất bản một chế độ xem Home mặc định an toàn với views.publish; không bao gồm payload hội thoại hoặc cấu hình riêng tư nào. Khi bật chế độ một lệnh slash, gợi ý lệnh sử dụng channels.slack.slashCommand.name; các bản cài đặt sử dụng lệnh gốc hoặc không sử dụng lệnh slash sẽ bỏ qua gợi ý đó. Tab Messages vẫn được bật cho DM trên Slack. Tệp manifest cũng bật các luồng trợ lý Slack với features.assistant_view, assistant:write, assistant_thread_started và assistant_thread_context_changed; các luồng trợ lý được định tuyến đến phiên luồng OpenClaw riêng và duy trì ngữ cảnh luồng do Slack cung cấp để tác nhân sử dụng.
Các lệnh slash gốc tùy chọn
Các lệnh slash gốc tùy chọn
Có thể sử dụng nhiều lệnh slash gốc thay cho một lệnh đã cấu hình, với một số điểm cần lưu ý:
- Sử dụng
/agentstatusthay cho/statusvì lệnh/statusđã được dành riêng. - Không thể đăng ký quá 25 lệnh slash cùng lúc trên một ứng dụng Slack (giới hạn của nền tảng Slack).
/login vào tệp manifest theo cách thủ công; ví dụ bên dưới bao gồm mục này thay cho bí danh /side tùy chọn để duy trì ở mức 25 lệnh. /login có thể xuất hiện ở bất kỳ đâu, nhưng chỉ cấp mã ghép nối trong cuộc trò chuyện riêng tư hoặc Web UI.Thay thế phần features.slash_commands hiện có bằng một tập con của các lệnh khả dụng:- Socket Mode (mặc định)
- URL yêu cầu HTTP
Các phạm vi quyền tác giả tùy chọn (thao tác ghi)
Các phạm vi quyền tác giả tùy chọn (thao tác ghi)
Thêm phạm vi bot
chat:write.customize nếu bạn muốn các tin nhắn gửi đi sử dụng danh tính tác nhân đang hoạt động (tên người dùng và biểu tượng tùy chỉnh) thay cho danh tính ứng dụng Slack mặc định.Nếu sử dụng biểu tượng emoji, Slack yêu cầu cú pháp :emoji_name:.Các phạm vi token người dùng tùy chọn (thao tác đọc)
Các phạm vi token người dùng tùy chọn (thao tác đọc)
Nếu cấu hình
channels.slack.userToken, các phạm vi đọc thông thường 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 thao tác đọc tìm kiếm của Slack)
Mô hình token
- Danh tính bot (mặc định) yêu cầu
botToken+appTokencho Socket Mode hoặcbotToken+signingSecretcho chế độ HTTP. - Danh tính người dùng yêu cầu
userToken+appTokencho Socket Mode hoặcuserToken+signingSecretcho chế độ HTTP. Danh tính này không sử dụng token bot. - Chế độ chuyển tiếp yêu cầu
botTokencùng vớirelay.url,relay.authTokenvàrelay.gatewayId; chế độ này không sử dụng token ứng dụng hoặc khóa bí mật ký. botToken,appToken,signingSecret,relay.authTokenvàuserTokenchấp nhận chuỗi văn bản thuần hoặc đối tượng SecretRef.- Token cấu hình ghi đè phương án dự phòng từ biến môi trường.
- Phương án dự phòng từ biến môi trường
SLACK_BOT_TOKEN,SLACK_APP_TOKENvàSLACK_USER_TOKENchỉ áp dụng cho tài khoản mặc định. userTokenmặc định sử dụng hành vi chỉ đọc (userTokenReadOnly: true).
- Quá trình kiểm tra tài khoản Slack theo dõi các trường
*Sourcevà*Statustheo từng thông tin xác thực (botToken,appToken,signingSecret,userToken). - Trạng thái là
available,configured_unavailablehoặcmissing. configured_unavailablecó nghĩa là tài khoản được cấu hình thông qua SecretRef hoặc một nguồn bí mật không nội tuyến khác, nhưng đường dẫn lệnh/thời gian chạy hiện tại không thể phân giải giá trị thực tế.- Trong chế độ HTTP,
signingSecretStatusđược bao gồm. Socket Mode sử dụngbotTokenStatus+appTokenStatuscho danh tính bot vàuserTokenStatus+appTokenStatuscho danh tính người dùng.
Thao tác và cổng kiểm soát
Các thao tác Slack được kiểm soát bởichannels.slack.actions.*.
Các nhóm thao tác khả dụng trong công cụ Slack hiện tại:
Các thao tác tin nhắn Slack hiện tại bao gồm
send, upload-file, download-file, read, edit, delete, pin, unpin, list-pins, member-info và emoji-list. download-file chấp nhận ID tệp Slack được hiển thị trong phần giữ chỗ tệp đến và trả về bản xem trước cho hình ảnh hoặc siêu dữ liệu tệp cục bộ cho các loại tệp khác.
Kiểm soát quyền truy cập và định tuyến
- Chính sách DM
- Chính sách kênh
- Lượt đề cập và người dùng kênh
channels.slack.dmPolicy kiểm soát quyền truy cập DM. channels.slack.allowFrom là danh sách cho phép DM chính thức.pairing(mặc định)allowlistopen(yêu cầuchannels.slack.allowFrombao gồm"*")disabled
dm.enabled(mặc định là true)channels.slack.allowFromdm.allowFrom(cũ)dm.groupEnabled(DM nhóm mặc định là 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ên kế thừa
channels.slack.allowFromkhiallowFromcủa chính chúng chưa được đặt. - Các tài khoản có tên không kế thừa
channels.slack.accounts.default.allowFrom.
channels.slack.dm.policy và channels.slack.dm.allowFrom cũ vẫn được đọc để đảm bảo khả năng tương thích. openclaw doctor --fix di chuyển chúng sang dmPolicy và allowFrom khi có thể thực hiện mà không thay đổi quyền truy cập.Việc ghép nối trong DM sử dụng openclaw pairing approve slack <code>.Luồng, phiên và thẻ phản hồi
- DM được định tuyến dưới dạng
direct; kênh dưới dạngchannel; MPIM dưới dạnggroup. - Các liên kết định tuyến Slack chấp nhận ID đối tượng ngang hàng thô cùng các dạng đích Slack như
channel:C12345678,user:U12345678và<@U12345678>. - Với
session.dmScope=mainmặc định, các DM Slack được gộp vào phiên chính của tác nhân. - Phiên kênh:
agent:<agentId>:slack:channel:<channelId>. - Các tin nhắn cấp cao nhất thông thường trong kênh vẫn thuộc phiên theo kênh, ngay cả khi
replyToModekhông phảioff. - Các phản hồi trong luồng Slack sử dụng
thread_tscủa Slack mẹ cho hậu tố phiên (:thread:<threadTs>), ngay cả khi tạo luồng phản hồi gửi đi bị tắt bằngreplyToMode="off". - OpenClaw đưa một gốc kênh cấp cao nhất đủ điều kiện vào
agent:<agentId>:slack:channel:<channelId>:thread:<rootTs>khi gốc đó dự kiến bắt đầu một luồng Slack hiển thị, để gốc và các phản hồi trong luồng sau đó dùng chung một phiên OpenClaw. Điều này áp dụng cho các sự kiệnapp_mention, lượt đề cập bot rõ ràng hoặc khớp mẫu đề cập đã cấu hình, và các kênhrequireMention: falsecóreplyToModekhông phảioff. - Mặc định của
channels.slack.thread.historyScopelàthread; mặc định củathread.inheritParentlàfalse. channels.slack.thread.initialHistoryLimitkiểm soát số lượng tin nhắn hiện có trong luồng được tải khi một phiên luồng mới bắt đầu (mặc định20; đặt thành0để tắt).channels.slack.implicitMentions.replyToBotkiểm soát việc phản hồi tin nhắn của chính bot có bỏ qua cổng đề cập hay không (mặc địnhtrue).channels.slack.implicitMentions.threadParticipationkiểm soát việc các tin nhắn tiếp nối trong luồng mà bot đã phản hồi có bỏ qua cổng đề cập hay không (mặc địnhtrue). Đặt thànhfalseđể yêu cầu lượt đề cập rõ ràng mới trong các tin nhắn tiếp nối đó.openclaw doctor --fixdi chuyển khóa cũchannels.slack.thread.requireExplicitMentionsang cờ chuẩn dạng khẳng định này.- Các ghi đè theo tài khoản nằm tại
channels.slack.accounts.<id>.implicitMentions; các giá trị mặc định dùng chung nằm tạichannels.defaults.implicitMentions.
channels.slack.channels.<id>.replyToMode: ghi đè theo kênh cho tin nhắn trong kênh/kênh riêng tư Slackchannels.slack.replyToMode:off|first|all|batched(mặc địnhoff)channels.slack.replyToModeByChatType: theo từngdirect|group|channel- phương án dự phòng cũ cho trò chuyện trực tiếp:
channels.slack.dm.replyToMode
[[reply_to_current]][[reply_to:<id>]]
message, hãy đặt replyBroadcast: true cùng action: "send" và threadId hoặc replyTo để yêu cầu Slack đồng thời phát phản hồi trong luồng đến kênh mẹ. Tùy chọn này ánh xạ đến cờ reply_broadcast của chat.postMessage trong Slack và chỉ được hỗ trợ khi gửi văn bản hoặc Block Kit, không hỗ trợ tải phương tiện lên.
Khi một lệnh gọi công cụ message chạy bên trong một luồng Slack và nhắm đến cùng kênh, OpenClaw thường kế thừa luồng Slack hiện tại theo replyToMode có hiệu lực ở cấp tài khoản, loại cuộc trò chuyện hoặc kênh. Các phản hồi tự động và lệnh gọi send hoặc upload-file trong cùng kênh sử dụng cùng ghi đè theo kênh. Đặt topLevel: true trên action: "send" hoặc action: "upload-file" để buộc tạo một tin nhắn mới trong kênh mẹ. threadId: null cũng được chấp nhận như cùng một tùy chọn không tham gia ở cấp cao nhất.
replyToMode="off" tắt việc tạo luồng phản hồi Slack gửi đi, bao gồm cả các thẻ [[reply_to_*]] rõ ràng. Tùy chọn này không làm phẳng các phiên luồng Slack đến: các tin nhắn đã được đăng bên trong một luồng Slack vẫn được định tuyến đến phiên :thread:<threadTs>. Điều này khác với Telegram, nơi các thẻ rõ ràng vẫn được tuân theo trong chế độ "off". Các luồng Slack ẩn tin nhắn khỏi kênh, trong khi phản hồi Telegram vẫn hiển thị nội tuyến.Phản ứng xác nhận
ackReaction gửi một emoji xác nhận trong khi OpenClaw đang xử lý tin nhắn đến. ackReactionScope quyết định khi nào emoji đó thực sự được gửi.
Theo mặc định, phản ứng xác nhận giữ nguyên trong khi trạng thái luồng trợ lý gốc của Slack hiển thị tiến trình bằng các thông báo đang tải luân phiên. Đặt messages.statusReactions.enabled: true để chọn sử dụng vòng đời phản ứng đã xếp hàng/đang suy nghĩ/công cụ/hoàn tất/lỗi.
Emoji (ackReaction)
Thứ tự phân giải:
channels.slack.accounts.<accountId>.ackReactionchannels.slack.ackReactionmessages.ackReaction- phương án dự phòng bằng emoji danh tính tác nhân (
agents.list[].identity.emoji, nếu không thì"eyes"/ 👀)
- Slack yêu cầu mã ngắn (ví dụ
"eyes"). - Dùng
""để tắt phản ứng cho tài khoản Slack hoặc trên toàn hệ thống.
Phạm vi (messages.ackReactionScope)
Trình cung cấp Slack đọc phạm vi từ messages.ackReactionScope (mặc định "group-mentions"). Hiện không có ghi đè ở cấp tài khoản Slack hoặc kênh Slack; giá trị này áp dụng toàn cục cho Gateway.
Các giá trị:
"all": phản ứng trong DM và nhóm, bao gồm cả sự kiện phòng nền."direct": chỉ phản ứng trong DM."group-all": phản ứng với mọi tin nhắn nhóm ngoại trừ sự kiện phòng nền (không áp dụng cho DM)."group-mentions"(mặc định): phản ứng trong nhóm, nhưng chỉ khi bot được đề cập (hoặc trong các mục có thể đề cập theo nhóm đã chọn tham gia). Không bao gồm DM."off"/"none": không bao giờ phản ứng.
Phạm vi mặc định (
"group-mentions") không kích hoạt phản ứng xác nhận trong tin nhắn trực tiếp hoặc sự kiện phòng nền. Để thấy ackReaction đã cấu hình (ví dụ "eyes") trong các DM Slack đến và sự kiện phòng không có hoạt động, hãy đặt messages.ackReactionScope thành "all". messages.ackReactionScope được đọc khi trình cung cấp Slack khởi động, vì vậy cần khởi động lại Gateway để thay đổi có hiệu lực.Truyền phát văn bản
channels.slack.streaming kiểm soát hành vi xem trước trực tiếp:
off: tắt truyền phát bản xem trước trực tiếp.partial(mặc định): thay thế văn bản xem trước bằng kết quả từng phần mới nhất.block: nối thêm các bản cập nhật xem trước theo khối.progress: hiển thị văn bản trạng thái tiến trình trong khi tạo, sau đó gửi văn bản cuối cùng.streaming.preview.toolProgress: khi bản xem trước nháp đang hoạt động, định tuyến các bản cập nhật công cụ/tiến trình vào cùng tin nhắn xem trước đang được chỉnh sửa (mặc định:true). Đặtfalseđể giữ riêng các tin nhắn công cụ/tiến trình.streaming.preview.commandText/streaming.progress.commandText: đặt thànhstatusđể giữ các dòng tiến trình công cụ thu gọn trong khi ẩn văn bản lệnh/thực thi thô (mặc định:raw).
channels.slack.streaming.nativeTransport kiểm soát truyền phát văn bản gốc của Slack khi channels.slack.streaming.mode là partial (mặc định: true).
Thẻ tác vụ tiến trình gốc của Slack là tùy chọn tham gia cho chế độ tiến trình. Đặt channels.slack.streaming.progress.nativeTaskCards thành true cùng channels.slack.streaming.mode="progress" để gửi thẻ kế hoạch/tác vụ gốc của Slack trong khi công việc đang chạy, sau đó cập nhật chính thẻ tác vụ đó khi hoàn tất. Nếu không có cờ này, chế độ tiến trình vẫn sử dụng hành vi bản xem trước nháp di động.
- Phải có luồng phản hồi để truyền phát văn bản gốc và trạng thái luồng trợ lý Slack xuất hiện. Việc chọn luồng vẫn tuân theo
replyToMode. - Kênh, trò chuyện nhóm và gốc DM cấp cao nhất vẫn có thể sử dụng bản xem trước nháp thông thường khi truyền phát gốc không khả dụng hoặc không có luồng phản hồi.
- DM Slack cấp cao nhất mặc định không nằm trong luồng, vì vậy chúng không hiển thị bản xem trước truyền phát/trạng thái gốc kiểu luồng của Slack; thay vào đó, OpenClaw đăng và chỉnh sửa một bản xem trước nháp trong DM.
- Phương tiện và tải trọng không phải văn bản dùng phương án dự phòng là gửi thông thường.
- Kết quả cuối dạng phương tiện/lỗi hủy các chỉnh sửa bản xem trước đang chờ; kết quả cuối dạng văn bản/khối đủ điều kiện chỉ hoàn tất khi có thể chỉnh sửa bản xem trước tại chỗ.
- Nếu truyền phát thất bại giữa chừng khi phản hồi, OpenClaw dùng phương án dự phòng là gửi thông thường cho các tải trọng còn lại.
channels.slack.streamMode(replace | status_final | append) là bí danh cũ củachannels.slack.streaming.mode.channels.slack.streamingboolean là bí danh cũ củachannels.slack.streaming.modevàchannels.slack.streaming.nativeTransport.channels.slack.chunkModevàchannels.slack.nativeStreamingcấp cao nhất là các bí danh cũ củachannels.slack.streaming.chunkModevàchannels.slack.streaming.nativeTransport.- Các bí danh cũ không được đọc trong thời gian chạy; hãy chạy
openclaw doctor --fixđể ghi lại cấu hình truyền phát Slack đã lưu bằng các khóa chuẩn.
Phương án dự phòng bằng phản ứng đang nhập
typingReaction thêm một phản ứng tạm thời vào tin nhắn Slack đến trong khi OpenClaw đang xử lý câu trả lời, sau đó xóa phản ứng này khi lượt chạy kết thúc. Tính năng này hữu ích nhất bên ngoài các câu trả lời trong luồng, vốn sử dụng chỉ báo trạng thái “đang nhập…” mặc định.
Thứ tự phân giải:
channels.slack.accounts.<accountId>.typingReactionchannels.slack.typingReaction
- Slack yêu cầu shortcode (ví dụ:
"hourglass_flowing_sand"). - Phản ứng được thực hiện theo khả năng tốt nhất và việc dọn dẹp được tự động thử sau khi hoàn tất câu trả lời hoặc đường dẫn lỗi.
Nhập liệu bằng giọng nói
Để nói chuyện với OpenClaw trong Slack hiện nay, hãy gửi một đoạn âm thanh Slack đến ứng dụng OpenClaw. Micrô đọc chính tả của Slackbot là một tính năng riêng do Slack sở hữu, không phải API ứng dụng.- Tính năng đọc chính tả bằng giọng nói của Slackbot nằm trong cuộc trò chuyện Slackbot riêng tư của người dùng. Slack chuyển bản ghi âm thành lời nhắc Slackbot nhưng không phát tệp âm thanh, sự kiện đọc chính tả, lời nhắc hoặc dấu hiệu nguồn đầu vào cho các ứng dụng Slack bên thứ ba thông qua Events API. Plugin Slack của OpenClaw không thể bật hoặc nhận tính năng này.
- Đoạn âm thanh Slack là các tệp được lưu trữ trên Slack, có thể đăng trong tin nhắn trực tiếp OpenClaw, kênh hoặc luồng. OpenClaw tải xuống đoạn âm thanh có thể truy cập bằng token bot, chuẩn hóa siêu dữ liệu MIME của đoạn âm thanh từ Slack và gửi đoạn âm thanh qua pipeline phiên âm thanh dùng chung. Manifest ứng dụng được đề xuất bao gồm phạm vi
files:readbắt buộc.
requireMention: true, đoạn âm thanh không có chú thích có thể đáp ứng điều kiện bằng cách nói một mẫu đề cập đã cấu hình (agents.list[].groupChat.mentionPatterns, dự phòng về messages.groupChat.mentionPatterns). OpenClaw cấp quyền cho người gửi trước khi tải xuống hoặc phiên âm đoạn âm thanh, sau đó chỉ chấp nhận khi bản phiên âm khớp. Bản phiên âm thăm dò bị lỗi hoặc không khớp sẽ bị loại bỏ cùng đoạn âm thanh đã tải xuống; bản phiên âm không được lưu trong lịch sử kênh. Không thể suy ra danh tính @bot gốc của Slack từ lời nói, vì vậy hãy cấu hình mẫu tên được nói hoặc thêm một lượt đề cập bằng văn bản. Nếu tính năng phản hồi lại bản phiên âm được bật, nội dung phản hồi chỉ được gửi sau khi được chấp nhận.
Phương tiện, phân đoạn và phân phối
Tệp đính kèm đến
Tệp đính kèm đến
Tệp đính kèm Slack được tải xuống từ các URL riêng tư do Slack lưu trữ (luồng yêu cầu được xác thực bằng token) và được ghi vào kho phương tiện khi quá trình tải thành công và giới hạn kích thước cho phép. Phần giữ chỗ của tệp bao gồm
fileId của Slack để tác tử có thể tìm nạp tệp gốc bằng download-file.Quá trình tải xuống sử dụng thời gian chờ không hoạt động và tổng thời gian chờ có giới hạn. Nếu quá trình truy xuất tệp Slack bị đình trệ hoặc thất bại, OpenClaw tiếp tục xử lý tin nhắn và dùng phần giữ chỗ của tệp làm phương án dự phòng.Giới hạn kích thước nội dung đến trong thời gian chạy 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 định8000, được giới hạn ở mức giới hạn độ dài tin nhắn của chính Slack) channels.slack.streaming.chunkMode="newline"bật tính năng phân tách ưu tiên đoạn văn- việc gửi tệp sử dụng các API tải lên của Slack và có thể bao gồm câu trả lời trong luồng (
thread_ts) - chú thích dài của tệp sử dụng đoạn văn bản đầu tiên an toàn cho Slack làm bình luận tải lên và gửi các đoạn còn lại dưới dạng tin nhắn tiếp theo
- 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, việc gửi qua kênh sử dụng giá trị mặc định theo loại MIME từ pipeline phương tiện
Đích phân phối
Đích phân phối
Các đích tường minh được ưu tiên:
user:<id>cho tin nhắn trực tiếpchannel:<id>cho kênh
Lệnh và hành vi của lệnh gạch chéo
Các lệnh gạch chéo xuất hiện trong Slack dưới dạng một lệnh duy nhất đã cấu hình hoặc nhiều lệnh gốc. Cấu hìnhchannels.slack.slashCommand để thay đổi giá trị mặc định của lệnh:
enabled: falsename: "openclaw"sessionPrefix: "slack:slash"ephemeral: true
channels.slack.commands.native: true hoặc commands.native: true trong cấu hình toàn cục.
- Chế độ tự động cho lệnh gốc được tắt đối với Slack, vì vậy
commands.native: "auto"không bật các lệnh gốc của Slack.
- 3-5 tùy chọn đủ ngắn: menu tràn (”…”)
- hơn 100 tùy chọn và có thể lọc tùy chọn bất đồng bộ: lựa chọn bên ngoài
- 1-2 tùy chọn hoặc bất kỳ tùy chọn nào có giá trị được mã hóa quá dài đối với thành phần lựa chọn: các khối nút
- các trường hợp còn lại (6-100 tùy chọn hoặc hơn 100 tùy chọn nhưng không có lọc bất đồng bộ): menu lựa chọn tĩnh, được chia thành từng nhóm 100 tùy chọn trên mỗi menu
agent:<agentId>:slack:slash:<userId> và vẫn định tuyến việc thực thi lệnh đến phiên hội thoại đích bằng CommandTargetSessionKey.
Biểu đồ gốc
Khối Block Kitdata_visualization công khai của Slack
kết xuất biểu đồ đường, cột, vùng và tròn trong tin nhắn. OpenClaw ánh xạ khối
presentation chart di động sang cấu trúc gốc đó; không yêu cầu thêm phạm vi OAuth,
tải tệp lên, trình kết xuất hình ảnh hoặc cấu hình Slack nào ngoài quyền truy cập tin nhắn
chat:write thông thường.
- tiêu đề và nhãn trục tùy chọn: 50 ký tự
- biểu đồ tròn: 1-12 phân đoạn dương
- biểu đồ đường/cột/vùng: 1-12 chuỗi có tên duy nhất và 1-20 danh mục dùng chung
- nhãn phân đoạn, danh mục và chuỗi: 20 ký tự
- mỗi chuỗi phải chứa một giá trị hữu hạn cho mỗi danh mục; các giá trị không thuộc biểu đồ tròn có thể là số âm
invalid_blocks trong quá trình triển khai theo giai đoạn, OpenClaw
xóa các khối dữ liệu gốc bị từ chối, giữ lại mọi thành phần điều khiển cùng cấp và gửi
biểu diễn biểu đồ hoàn chỉnh dưới dạng văn bản hiển thị.
Slack hiện chấp nhận tối đa hai khối data_visualization trong mỗi tin nhắn. Khi
một phần trình bày chứa hơn hai biểu đồ hợp lệ, OpenClaw giữ nguyên thứ tự của chúng
và tiếp tục kết xuất gốc trong các tin nhắn tiếp theo, với không quá hai
biểu đồ trong mỗi tin nhắn.
Thông báo ra mắt dành cho nhà phát triển
của Slack mô tả khối này là một tính năng Block Kit dành cho ứng dụng và không công bố
hạn chế nào về gói trả phí. Nội dung về điều kiện sử dụng Business+/Enterprise áp dụng cho
tính năng tự động tạo biểu đồ bằng AI của Slackbot, vốn tách biệt với việc một ứng dụng gửi
biểu đồ Block Kit đã được cấu trúc sẵn. Biểu đồ chỉ là khối dành cho tin nhắn, không phải nội dung
App Home, phương thức hoặc Canvas.
Bảng gốc
Khối Block Kitdata_table
hiện tại của Slack kết xuất các hàng và cột có cấu trúc trong tin nhắn. OpenClaw ánh xạ một
khối presentation table di động tường minh sang data_table; OpenClaw không sử dụng
khối table cũ của Slack.
Không yêu cầu thêm phạm vi OAuth hoặc cấu hình Slack nào ngoài quyền truy cập tin nhắn
chat:write thông thường.
raw_text của Slack. Các ô số
được ánh xạ thành raw_number, giữ nguyên giá trị số hữu hạn để sắp xếp
và lọc gốc. Khi có, rowHeaderColumnIndex đánh dấu cột có chỉ số bắt đầu từ 0
đó làm tiêu đề hàng của Slack.
Các giới hạn data_table đã công bố của Slack được thực thi trước khi kết xuất gốc:
- 1-20 cột
- 1-100 hàng dữ liệu, cộng thêm hàng tiêu đề
- mọi hàng có cùng số lượng ô
- tối đa tổng cộng 10.000 ký tự trên tất cả các ô bảng trong một tin nhắn
<@U123> không trở thành lượt đề cập Slack.
Nếu Slack từ chối các khối biểu đồ hoặc bảng gốc với invalid_blocks, OpenClaw
xóa mọi khối dữ liệu gốc trong một bước khôi phục có giới hạn, giữ lại các
khối cùng cấp hợp lệ như nút và thành phần lựa chọn, đồng thời gửi văn bản biểu đồ
và bảng hiển thị đầy đủ với định dạng Slack bị tắt. Hoạt động phân phối lệnh gạch chéo
theo dõi hạn mức năm lượt gọi response_url của Slack trong suốt lệnh. Trước mỗi
nhóm câu trả lời, hệ thống chọn một kế hoạch hoàn chỉnh phù hợp với số lượt gọi còn lại hoặc thất bại
trước khi đăng nhóm đó.
Chỉ các khối bảng presentation tường minh mới được nâng cấp thành bảng gốc.
Bảng dạng dấu gạch đứng Markdown vẫn là văn bản do tác giả tạo; OpenClaw không suy đoán cấu trúc
bảng hoặc kiểu ô. Các trình tạo nội dung gốc đáng tin cậy hiện có của Slack có thể tiếp tục
truyền trực tiếp các khối thô qua channelData.slack.blocks; OpenClaw tạo văn bản
dự phòng từ các ô data_table thô hợp lệ, trong khi các khối tùy chỉnh sai định dạng có thể
hạ cấp thành chú thích của chúng hoặc phương án dự phòng Block Kit chung. Đầu ra từ tác tử, CLI
và Plugin di động nên sử dụng presentation.
Câu trả lời tương tác
Slack có thể hiển thị các điều khiển trả lời tương tác do agent tạo, nhưng tính năng này mặc định bị tắt. Đối với đầu ra mới của agent, CLI và plugin, hãy ưu tiên các nút dùng chungpresentation hoặc các khối lựa chọn. Chúng sử dụng cùng một đường dẫn tương tác Slack
đồng thời vẫn có thể suy giảm chức năng trên các kênh khác.
Bật tính năng này trên toàn hệ thống:
[[slack_buttons: Approve:approve, Reject:reject]][[slack_select: Choose a target | Canary:canary, Production:production]]
compileSlackInteractiveReplies(...)parseSlackOptionsLine(...)isSlackInteractiveRepliesEnabled(...)buildSlackInteractiveBlocks(...)
presentation và buildSlackPresentationBlocks(...) cho các điều khiển mới
được hiển thị trên Slack.
Ghi chú:
- Đây là giao diện người dùng cũ dành riêng cho Slack. Các kênh khác không chuyển đổi chỉ thị Slack Block Kit thành hệ thống nút riêng của chúng.
- Các giá trị callback tương tác là token mờ do OpenClaw tạo, không phải giá trị thô do agent tạo.
- Nếu các khối tương tác được tạo vượt quá giới hạn của Slack Block Kit, OpenClaw sẽ dùng lại câu trả lời văn bản ban đầu thay vì gửi payload khối không hợp lệ.
Gửi biểu mẫu modal do plugin sở hữu
Các plugin Slack đăng ký trình xử lý tương tác cũng có thể nhận các sự kiện vòng đời modalview_submission và view_closed trước khi OpenClaw nén
payload cho sự kiện hệ thống mà agent có thể thấy. Sử dụng một trong các mẫu định tuyến
sau khi mở modal Slack:
- Đặt
callback_idthànhopenclaw:<namespace>:<payload>. - Hoặc giữ
callback_idhiện có và đặtpluginInteractiveData: "<namespace>:<payload>"vàoprivate_metadatacủa modal.
ctx.interaction.kind dưới dạng view_submission hoặc
view_closed, inputs đã chuẩn hóa và toàn bộ đối tượng stateValues thô từ
Slack. Chỉ định tuyến bằng ID callback là đủ để gọi trình xử lý plugin; hãy bao gồm
các trường định tuyến người dùng/phiên private_metadata hiện có của modal khi
modal cũng cần tạo một sự kiện hệ thống mà agent có thể thấy. Agent nhận một
sự kiện hệ thống Slack interaction: ... nhỏ gọn, đã biên tập. Nếu trình xử lý trả về
systemEvent.summary, systemEvent.reference hoặc systemEvent.data, các
trường đó được đưa vào sự kiện nhỏ gọn này để agent có thể tham chiếu
kho lưu trữ do plugin sở hữu mà không thấy toàn bộ payload biểu mẫu.
Phê duyệt gốc trong Slack
Slack có thể hoạt động như một máy khách phê duyệt gốc với các nút và tương tác, thay vì phải dùng giao diện web hoặc terminal.- Phê duyệt exec và plugin có thể hiển thị dưới dạng prompt Block Kit gốc của Slack.
channels.slack.execApprovals.*vẫn là cấu hình bật máy khách phê duyệt exec gốc và định tuyến DM/kênh.- DM phê duyệt exec sử dụng
channels.slack.execApprovals.approvershoặccommands.ownerAllowFrom. - Phê duyệt plugin sử dụng các nút gốc của Slack khi Slack được bật làm máy khách phê duyệt gốc cho phiên khởi tạo, hoặc khi
approvals.pluginđịnh tuyến đến phiên Slack khởi tạo hoặc một đích Slack. - DM phê duyệt plugin sử dụng người phê duyệt plugin Slack từ
channels.slack.allowFrom,allowFromcủa tài khoản được đặt tên hoặc tuyến mặc định của tài khoản. - Việc ủy quyền cho người phê duyệt vẫn được thực thi: người chỉ có quyền phê duyệt exec không thể phê duyệt yêu cầu plugin trừ khi họ cũng là người phê duyệt plugin.
interactivity được bật trong phần cài đặt ứng dụng Slack, các prompt phê duyệt hiển thị trực tiếp trong cuộc trò chuyện dưới dạng nút Block Kit.
Khi có các nút đó, chúng là trải nghiệm phê duyệt chính; OpenClaw
chỉ nên bao gồm lệnh /approve thủ công khi kết quả công cụ cho biết tính năng
phê duyệt qua chat không khả dụng hoặc phê duyệt thủ công là con đường duy nhất.
Đường dẫn cấu hình:
channels.slack.execApprovals.enabledchannels.slack.execApprovals.approvers(tùy chọn; dùng lạicommands.ownerAllowFromkhi có thể)channels.slack.execApprovals.target(dm|channel|both, mặc định:dm)agentFilter,sessionFilter
enabled chưa được đặt hoặc là "auto", đồng thời phân giải được ít nhất một
người phê duyệt exec. Slack cũng có thể xử lý phê duyệt plugin gốc qua đường dẫn máy khách gốc này
khi phân giải được người phê duyệt plugin Slack và yêu cầu khớp với các bộ lọc của máy khách gốc. Đặt
enabled: false để tắt rõ ràng Slack với vai trò máy khách phê duyệt gốc. Đặt enabled: true để
buộc bật phê duyệt gốc khi phân giải được người phê duyệt. Tắt phê duyệt exec Slack không làm tắt
việc gửi phê duyệt plugin gốc qua Slack được bật thông qua approvals.plugin; việc gửi phê duyệt
plugin sử dụng người phê duyệt plugin Slack thay thế.
Hành vi mặc định khi không có cấu hình phê duyệt exec Slack rõ ràng:
approvals.exec dùng chung là riêng biệt. Chỉ sử dụng khi các prompt phê duyệt exec cũng phải
được định tuyến đến các cuộc trò chuyện khác hoặc các đích ngoài băng tần rõ ràng. Việc chuyển tiếp approvals.plugin dùng chung cũng
riêng biệt; việc gửi gốc qua Slack chỉ ngăn cơ chế dự phòng đó khi Slack có thể xử lý yêu cầu
phê duyệt plugin theo cách gốc.
/approve trong cùng cuộc trò chuyện cũng hoạt động trong các kênh Slack và DM đã hỗ trợ lệnh. Xem Phê duyệt exec để biết đầy đủ mô hình chuyển tiếp phê duyệt.
Sự kiện và hành vi vận hành
- Các thao tác sửa/xóa tin nhắn được ánh xạ thành sự kiện hệ thống.
- Tin nhắn quảng bá luồng (các câu trả lời luồng dùng “Also send to channel”) được xử lý như tin nhắn người dùng thông thường.
- Các sự kiện thêm/xóa phản ứng được ánh xạ thành sự kiện hệ thống.
- Các sự kiện thành viên tham gia/rời đi, tạo/đổi tên kênh và thêm/xóa ghim được ánh xạ thành sự kiện hệ thống.
- Tính năng thăm dò trạng thái hiện diện tùy chọn có thể ánh xạ quá trình chuyển đổi từ
awaysangactivecủa một người tham gia được quan sát vào phiên Slack đủ điều kiện hoạt động gần đây nhất của người đó. Mặc định tính năng này bị tắt. 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 chèn vào ngữ cảnh định tuyến.
- Nội dung khởi đầu luồng và việc tạo ngữ cảnh lịch sử luồng ban đầu được lọc theo danh sách người gửi được phép đã cấu hình khi áp dụng.
- Thao tác khối, lối tắt và tương tác modal phát ra các sự kiện hệ thống
Slack interaction: ...có cấu trúc với các trường payload phong phú:- thao tác khối: các giá trị đã chọn, nhãn, giá trị bộ chọn và siêu dữ liệu
workflow_* - lối tắt toàn cục: siêu dữ liệu callback và tác nhân, được định tuyến đến phiên trực tiếp của tác nhân
- lối tắt tin nhắn: ngữ cảnh callback, tác nhân, kênh, luồng và tin nhắn đã chọn
- các sự kiện modal
view_submissionvàview_closedvới siêu dữ liệu kênh đã định tuyến và dữ liệu nhập biểu mẫu
- thao tác khối: các giá trị đã chọn, nhãn, giá trị bộ chọn và siêu dữ liệu
Sự kiện hiện diện
Slack không gửi thay đổi trạng thái hiện diện qua Events API hoặc Socket Mode. Thay vào đó, OpenClaw có thể thăm dòusers.getPresence cho những người tham gia là con người có tin nhắn vượt qua các bước kiểm tra truy cập và định tuyến Slack thông thường.
off(mặc định): không có bộ hẹn giờ hiện diện hoặc lệnh gọi API Slack.auto: giám sát các DM, MPIM và luồng Slack hoạt động trong 24 giờ qua với tối đa 8 người tham gia là con người được quan sát. Các phiên kênh cấp cao nhất bị loại trừ.on: giám sát cùng các cuộc trò chuyện mà không giới hạn số người tham gia và bao gồm các phiên kênh cấp cao nhất. Sử dụng ghi đè theo kênh để buộc bật hoặc tắt cho một kênh.
away sang active. Thời gian chờ bền vững 8 giờ được áp dụng cho mỗi tài khoản Slack và người dùng, ngay cả khi người đó tham gia nhiều luồng. Sự kiện chỉ được định tuyến đến cuộc trò chuyện đủ điều kiện hoạt động gần đây nhất của người đó và yêu cầu agent tham khảo bộ nhớ/wiki cùng ngữ cảnh múi giờ đã biết trước khi quyết định có gửi một lời chào ngắn hay không. Agent có thể giữ im lặng.
Token bot cần users:read, vốn đã có trong manifest được khuyến nghị. Sự kiện hiện diện không khả dụng cho các bản cài đặt Enterprise Grid trên toàn tổ chức.
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
Các trường Slack quan trọng
- chế độ/xác thực:
identity,mode,enterpriseOrgInstall,botToken,appToken,userToken,signingSecret,webhookPath,accounts.* - quyền truy cập DM:
dm.enabled,dmPolicy,allowFrom(cũ:dm.policy,dm.allowFrom),dm.groupEnabled,dm.groupChannels - nút chuyển đổi tương thích:
dangerouslyAllowNameMatching(phương án khẩn cấp; giữ tắt trừ khi cần) - quyền truy cập kênh:
groupPolicy,channels.*,channels.*.users,channels.*.requireMention,implicitMentions.* - luồng/lịch sử:
replyToMode,replyToModeByChatType,thread.*,historyLimit,dmHistoryLimit,dms.*.historyLimit - đánh thức theo trạng thái hiện diện:
presenceEvents.mode,channels.*.presenceEvents.mode(off|auto|on; mặc địnhoff) - gửi:
textChunkLimit,streaming.chunkMode,mediaMaxMb,streaming,streaming.nativeTransport,streaming.preview.toolProgress - bản xem trước:
unfurlLinks(mặc định:false),unfurlMediađể kiểm soát bản xem trước liên kết/phương tiệnchat.postMessage; đặtunfurlLinks: trueđể bật lại bản xem trước liên kết - vận hành/tính năng:
configWrites,commands.native,slashCommand.*,actions.*,userToken,userTokenReadOnly
Khắc phục sự cố
Không có câu trả lời trong các kênh
Không có câu trả lời trong các kênh
Kiểm tra theo thứ tự:Các lệnh hữu ích:
groupPolicy- danh sách cho phép của kênh (
channels.slack.channels) — khóa phải là ID kênh (C12345678), không phải tên (#channel-name). Khóa dựa trên tên sẽ âm thầm không hoạt động tronggroupPolicy: "allowlist"vì theo mặc định, việc định tuyến kênh ưu tiên ID. Để tìm ID: nhấp chuột phải vào kênh trong Slack → Copy link — giá trịC...ở cuối URL là ID kênh. requireMention- danh sách cho phép
userstheo từng kênh messages.groupChat.visibleReplies: các yêu cầu nhóm/kênh thông thường mặc định là"automatic". Nếu bạn đã chọn dùng"message_tool"và nhật ký hiển thị văn bản của trợ lý nhưng không có lệnh gọimessage(action=send), thì mô hình đã bỏ lỡ đường dẫn công cụ nhắn tin hiển thị. Ở chế độ này, văn bản cuối cùng vẫn ở trạng thái riêng tư; hãy kiểm tra nhật ký chi tiết của Gateway để tìm siêu dữ liệu tải trọng đã bị chặn, hoặc đặt thành"automatic"nếu bạn muốn mọi phản hồi cuối cùng thông thường của trợ lý được đăng qua đường dẫn cũ.messages.groupChat.unmentionedInbound: nếu là"room_event", nội dung trò chuyện không đề cập đến bot trong các kênh được cho phép sẽ là ngữ cảnh xung quanh và không tạo phản hồi, trừ khi tác nhân gọi công cụmessage. Xem Sự kiện phòng xung quanh.
Tin nhắn DM bị bỏ qua
Tin nhắn DM bị bỏ qua
Kiểm tra:
channels.slack.dm.enabledchannels.slack.dmPolicy(hoặcchannels.slack.dm.policycũ)- phê duyệt ghép nối / mục trong danh sách cho phép (
dmPolicy: "open"vẫn yêu cầuchannels.slack.allowFrom: ["*"]) - DM nhóm sử dụng cơ chế xử lý MPIM; bật
channels.slack.dm.groupEnabledvà, nếu đã cấu hình, đưa MPIM vàochannels.slack.dm.groupChannels - sự kiện DM của Slack Assistant: nhật ký chi tiết có đề cập đến
drop message_changedthường có nghĩa là Slack đã gửi một sự kiện luồng Assistant đã chỉnh sửa mà siêu dữ liệu tin nhắn không chứa người gửi là con người có thể khôi phục
Socket Mode không kết nối
Socket Mode không kết nối
Xác thực token bot + ứng dụng và việc bật Socket Mode trong phần cài đặt ứng dụng Slack.
App-Level Token cần
connections:write, còn token bot Bot User OAuth Token
phải thuộc cùng ứng dụng/không gian làm việc Slack với token ứng dụng.Nếu openclaw channels status --probe --json hiển thị botTokenStatus hoặc
appTokenStatus: "configured_unavailable", tài khoản Slack đã được
cấu hình nhưng môi trường chạy hiện tại không thể phân giải giá trị
do SecretRef hỗ trợ.Các nhật ký như slack socket mode failed to start; retry ... là lỗi khởi động
có thể khôi phục. Thay vào đó, thiếu phạm vi, token bị thu hồi và thông tin xác thực không hợp lệ sẽ khiến
quá trình thất bại ngay lập tức. Nhật ký slack token mismatch ... có nghĩa là token bot và token ứng dụng
có vẻ thuộc các ứng dụng Slack khác nhau; hãy sửa thông tin xác thực của ứng dụng Slack.Chế độ HTTP không nhận được sự kiện
Chế độ HTTP không nhận được sự kiện
Xác thực:
- mã bí mật ký
- đường dẫn Webhook
- Slack Request URLs (Events + Interactivity + Slash Commands)
webhookPathduy nhất cho mỗi tài khoản HTTP- URL công khai kết thúc TLS và chuyển tiếp yêu cầu đến đường dẫn Gateway
- đường dẫn
request_urlcủa ứng dụng Slack khớp chính xác vớichannels.slack.webhookPath(mặc định/slack/events)
signingSecretStatus: "configured_unavailable" xuất hiện trong ảnh chụp nhanh
tài khoản, tài khoản HTTP đã được cấu hình nhưng môi trường chạy hiện tại không thể
phân giải mã bí mật ký do SecretRef hỗ trợ.Nhật ký slack: webhook path ... already registered lặp lại có nghĩa là hai tài khoản HTTP
đang sử dụng cùng một webhookPath; hãy cấp cho mỗi tài khoản một đường dẫn riêng biệt.Lệnh gốc/lệnh dấu gạch chéo không hoạt động
Lệnh gốc/lệnh dấu gạch chéo không hoạt động
Xác minh xem bạn định sử dụng:
- chế độ lệnh gốc (
channels.slack.commands.native: true) với các lệnh dấu gạch chéo tương ứng đã đăng ký trong Slack - hoặc chế độ một lệnh dấu gạch chéo (
channels.slack.slashCommand.enabled: true)
commands.native: "auto" không bật các lệnh Slack gốc; hãy sử dụng true và tạo các lệnh tương ứng trong ứng dụng Slack. Ở chế độ HTTP, mọi lệnh dấu gạch chéo của Slack phải bao gồm URL Gateway. Ở Socket Mode, tải trọng lệnh đến qua websocket và Slack bỏ qua slash_commands[].url.Đồng thời kiểm tra commands.useAccessGroups, quyền DM, danh sách cho phép của kênh
và danh sách cho phép users theo từng kênh. Slack trả về lỗi tạm thời cho
người gửi lệnh dấu gạch chéo bị chặn, bao gồm:This channel is not allowed.You are not authorized to use this command here.
Tham chiếu phương tiện đính kèm
Slack có thể đính kèm phương tiện đã tải xuống vào lượt của tác nhân khi việc tải tệp xuống từ Slack thành công và giới hạn kích thước cho phép. Có thể chuyển biên các đoạn âm thanh, các tệp hình ảnh có thể đi qua đường dẫn nhận biết phương tiện hoặc được chuyển trực tiếp đến mô hình phản hồi có khả năng thị giác, còn các tệp khác vẫn khả dụng dưới dạng ngữ cảnh tệp có thể tải xuống.Các loại phương tiện được hỗ trợ
Pipeline đầu vào
Khi có tin nhắn Slack chứa tệp đính kèm:- OpenClaw tải tệp xuống từ URL riêng tư của Slack bằng token bot.
- Tệp được ghi vào kho phương tiện khi thành công.
- Đường dẫn và loại nội dung của phương tiện đã tải xuống được thêm vào ngữ cảnh đầu vào.
- Các đoạn âm thanh được định tuyến đến pipeline chuyển biên dùng chung; đường dẫn mô hình/công cụ có khả năng xử lý hình ảnh có thể sử dụng tệp đính kèm hình ảnh từ cùng ngữ cảnh.
- Các tệp khác vẫn khả dụng dưới dạng siêu dữ liệu tệp hoặc tham chiếu phương tiện cho những công cụ có thể xử lý chúng.
Kế thừa tệp đính kèm từ gốc luồng
Khi một tin nhắn đến trong luồng (có phần tử chathread_ts):
- Nếu bản thân phản hồi không có phương tiện trực tiếp và tin nhắn gốc được đưa vào có tệp, Slack có thể nạp các tệp gốc làm ngữ cảnh mở đầu luồng.
- Các tệp gốc chỉ được nạp khi khởi tạo phiên luồng mới hoặc đã đặt lại. Các phản hồi chỉ có văn bản sau đó tái sử dụng ngữ cảnh phiên hiện có và không đính kèm lại tệp gốc dưới dạng phương tiện mới.
- Tệp đính kèm trực tiếp của phản hồi được ưu tiên hơn tệp đính kèm của tin nhắn gốc.
- Tin nhắn gốc chỉ có tệp và không có văn bản được biểu diễn bằng phần giữ chỗ cho tệp đính kèm để phương án dự phòng vẫn có thể bao gồm các tệp đó.
Xử lý nhiều tệp đính kèm
Khi một tin nhắn Slack chứa nhiều tệp đính kèm:- Mỗi tệp đính kèm được xử lý độc lập qua pipeline phương tiện.
- Các tham chiếu phương tiện đã tải xuống được tổng hợp vào ngữ cảnh tin nhắn.
- Thứ tự xử lý tuân theo thứ tự tệp của Slack trong tải trọng sự kiện.
- Lỗi tải xuống của một tệp đính kèm không chặn các tệp khác.
Giới hạn về kích thước, tải xuống và mô hình
- Giới hạn kích thước: Mặc định 20 MB mỗi tệp. Có thể cấu hình qua
channels.slack.mediaMaxMb. - Giới hạn chuyển biên âm thanh:
tools.media.audio.maxBytescũng áp dụng khi tệp đã tải xuống được gửi đến nhà cung cấp dịch vụ chuyển biên hoặc CLI. - Lỗi tải xuống: Các tệp Slack không thể cung cấp, URL hết hạn, tệp không thể truy cập, tệp quá kích thước và phản hồi HTML xác thực/đăng nhập của Slack sẽ bị bỏ qua thay vì được báo cáo là định dạng không được hỗ trợ.
- Mô hình thị giác: Việc phân tích hình ảnh sử dụng mô hình phản hồi đang hoạt động khi mô hình đó hỗ trợ thị giác, hoặc mô hình hình ảnh được cấu hình tại
agents.defaults.imageModel.
Các giới hạn đã biết
Tài liệu liên quan
Liên quan
Ghép nối
Ghép nối người dùng Slack với Gateway.
Nhóm
Cách hoạt động của kênh và tin nhắn trực tiếp nhóm.
Định tuyến kênh
Định tuyến tin nhắn đến cho các tác nhân.
Bảo mật
Mô hình mối đe dọa và tăng cường bảo mật.
Cấu hình
Bố cục và thứ tự ưu tiên của cấu hình.
Lệnh dấu gạch chéo
Danh mục và cách hoạt động của lệnh.