show_widget và trình xử lý nút khởi chạy khi có channels.discord.activities và phân giải được client secret. Bí danh discord_widget đã ngừng dùng vẫn được duy trì trong một bản phát hành.
Điều kiện tiên quyết
- một bot Discord OpenClaw hiện có
- một tên máy chủ HTTPS công khai có thể truy cập Gateway OpenClaw
- quyền cấu hình Activities và OAuth2 cho ứng dụng Discord của bot
Thiết lập
1
Công khai Gateway qua HTTPS
Khởi động tunnel hoặc reverse proxy và xác minh rằng
https://openclaw.example.com/discord/activity/ truy cập được Gateway sau khi thêm cấu hình Activities. Thay tên máy chủ ví dụ bằng tên máy chủ của bạn.2
Bật Activities trong Discord
Mở ứng dụng bot hiện có trong Discord Developer Portal. Mở Activities, bật Activities và tạo ánh xạ URL:
- tiền tố:
ROOT(/) - đích:
openclaw.example.com/discord/activity
/discord/activity, không có dấu gạch chéo ở cuối.3
Sao chép OAuth2 client secret
Mở OAuth2 trong Developer Portal. Discord yêu cầu ít nhất một URI chuyển hướng, vì vậy hãy thêm một giá trị giữ chỗ cục bộ, chẳng hạn như địa chỉ loopback, nếu ứng dụng chưa có; Embedded App SDK xử lý luồng trả về của Activity. Sao chép hoặc đặt lại client secret của ứng dụng. Hãy coi đây là thông tin xác thực: không dán vào cuộc trò chuyện, nhật ký hoặc tệp cấu hình được commit.
4
Cấu hình OpenClaw
Thêm một khối vào tài khoản Discord cần cung cấp tiện ích:Có thể bỏ
clientSecret khỏi khối khi DISCORD_CLIENT_SECRET đã được đặt. Bản thân khối này phải được giữ lại để thể hiện lựa chọn bật tính năng.Các thiết lập quyền truy cập Discord thông thường vẫn tách biệt. Ví dụ: allowFrom vẫn kiểm soát ai có thể gửi tin nhắn trực tiếp cho agent; thiết lập này không kiểm soát ai có thể mở tiện ích đã được đăng trong một kênh.5
Khởi động lại và kiểm thử
Khởi động lại Gateway. Trong một cuộc trò chuyện Discord, yêu cầu agent hiển thị tiện ích tương tác. Agent gọi
show_widget; nhấp vào Open widget trong tin nhắn đã đăng.Mô hình bảo mật
- OAuth xác định người dùng Discord trước khi trả về siêu dữ liệu của tiện ích.
- API Get Activity Instance của Discord phải xác nhận rằng người dùng OAuth có mặt trong phiên bản Activity hiện tại. Kênh của phiên bản phải khớp với kênh nơi tiện ích được đăng.
- Mọi người được Discord cho phép vào kênh đó đều có thể mở các tiện ích của kênh. Để thu hẹp đối tượng, hãy sử dụng quyền kênh Discord. Danh sách cho phép đối với lệnh và tin nhắn trực tiếp của OpenClaw không cấp hoặc thu hồi quyền truy cập vào nội dung kênh đã đăng.
- Phiên OAuth hết hạn sau 15 phút. Quyền truy cập tài liệu tiện ích hết hạn sau 60 giây và chỉ hoạt động một lần.
- Tiện ích hết hạn sau bảy ngày và mỗi phiên bản Plugin Discord giữ lại tối đa 64 tiện ích.
- HTML của tiện ích do agent của bạn tạo và cần được coi là nội dung đáng tin cậy. Không nhúng các bí mật mà bạn không muốn một tiện ích có lỗi làm lộ.
- Tiện ích có thể điều hướng trong khung lồng nhau của chính nó. iframe
sandbox="allow-scripts"chặn điều hướng cấp cao nhất, cửa sổ bật lên và quyền truy cập cùng nguồn, còn Chính sách bảo mật nội dung của iframe chặn các kết nối mạng và tài nguyên bên ngoài. Các biện pháp kiểm soát này là lớp phòng thủ bổ sung, không phải ranh giới bảo mật chống lại agent đã tạo tiện ích. - Khi Activities bị tắt,
/discord/activityhoàn toàn không được đăng ký.
Khắc phục sự cố
Activity hiển thị “Gateway offline”
- xác nhận tunnel đang chạy và định tuyến đến cổng liên kết thực tế của Gateway
- xác nhận đích trong Developer Portal có chứa
/discord/activity - khởi động lại Gateway sau khi thay đổi cấu hình Discord hoặc OpenClaw
- kiểm tra nhật ký Gateway để tìm cảnh báo một dòng về việc thiếu client secret của Activities
Discord mở trang trống hoặc báo cáo blocked:csp
- xác minh ánh xạ URL sử dụng
ROOTvà không thêm phân đoạn/discord/activitythứ hai - xác nhận shell,
shell.jsvà mô-đun SDK đều được trả về qua proxy Discord - kiểm tra nhật ký Gateway để tìm các yêu cầu trong
/discord/activity/