show_widget aracı aracını ve başlatma düğmesi işleyicisini yalnızca channels.discord.activities mevcut olduğunda ve bir istemci gizli anahtarı çözümlendiğinde kaydeder. Kullanımdan kaldırılan discord_widget diğer adı bir sürüm boyunca kullanılabilir kalır.
Ön koşullar
- mevcut bir OpenClaw Discord botu
- OpenClaw Gateway’e ulaşan genel bir HTTPS ana makine adı
- botun Discord uygulaması için Activities ve OAuth2’yi yapılandırma izni
Kurulum
1
Gateway'i HTTPS üzerinden erişilebilir hâle getirin
Tünelinizi veya ters proxy’nizi başlatın ve Activities yapılandırması eklendikten sonra
https://openclaw.example.com/discord/activity/ adresinin Gateway’e ulaştığını doğrulayın. Örnek ana makine adını kendi adınızla değiştirin.2
Discord'da Activities'i etkinleştirin
Mevcut bot uygulamasını Discord Developer Portal içinde açın. Activities bölümünü açın, Activities’i etkinleştirin ve bir URL eşlemesi oluşturun:
- önek:
ROOT(/) - hedef:
openclaw.example.com/discord/activity
/discord/activity birleşimidir ve sonunda eğik çizgi bulunmaz.3
OAuth2 istemci gizli anahtarını kopyalayın
Developer Portal’da OAuth2 bölümünü açın. Discord en az bir yönlendirme URI’si gerektirir; uygulamada henüz yoksa geri döngü adresi gibi yerel bir yer tutucu ekleyin. Activity dönüş akışını Embedded App SDK yönetir. Uygulama istemci gizli anahtarını kopyalayın veya sıfırlayın. Bunu bir kimlik bilgisi olarak değerlendirin: sohbete, günlüklere veya kaydedilmiş bir yapılandırma dosyasına yapıştırmayın.
4
OpenClaw'u yapılandırın
Widget sunması gereken Discord hesabına bir blok ekleyin:
DISCORD_CLIENT_SECRET ayarlandığında clientSecret değerini bloktan çıkarabilirsiniz. Etkinleştirmeyi seçmek için bloğun kendisi mevcut kalmalıdır.Normal Discord erişim ayarları ayrı kalır. Örneğin allowFrom, aracıya kimlerin DM gönderebileceğini denetlemeye devam eder; bir kanalda daha önce gönderilmiş bir widget’ı kimlerin açabileceğini denetlemez.5
Yeniden başlatın ve test edin
Gateway’i yeniden başlatın. Bir Discord görüşmesinde aracıdan etkileşimli bir widget göstermesini isteyin. Araç
show_widget çağrısını yapar; gönderilen mesajdaki Widget’ı aç düğmesine tıklayın.Güvenlik modeli
- OAuth, widget meta verileri döndürülmeden önce Discord kullanıcısını tanımlar.
- Discord’un Get Activity Instance API’si, OAuth kullanıcısının geçerli Activity örneğinde bulunduğunu doğrulamalıdır. Örnek kanalı, widget’ın gönderildiği kanalla eşleşmelidir.
- Discord’un ilgili kanala girmesine izin verdiği herkes kanalın widget’larını açabilir. Hedef kitleyi daraltmak için Discord kanal izinlerini kullanın. OpenClaw komut ve DM izin listeleri, daha önce gönderilmiş kanal içeriğine erişim sağlamaz veya bu erişimi kaldırmaz.
- OAuth oturumlarının süresi 15 dakika sonra dolar. Widget belge yeteneklerinin süresi 60 saniye sonra dolar ve yalnızca bir kez çalışır.
- Widget’ların süresi yedi gün sonra dolar ve Discord Plugin örneği başına en fazla 64 widget saklanır.
- Widget HTML’si aracınız tarafından yazılır ve güvenilir içerik olarak değerlendirilmelidir. Hatalı bir widget’ın açığa çıkarmasını istemeyeceğiniz gizli bilgileri yerleştirmeyin.
- Widget, kendi iç içe çerçevesi içinde gezinebilir.
sandbox="allow-scripts"iframe’i üst düzey gezinmeyi, açılır pencereleri ve aynı kaynağa erişimi engellerken İçerik Güvenliği Politikası ağ bağlantılarını ve harici kaynakları engeller. Bu denetimler derinlemesine savunma sağlar; widget’ı yazan aracıya karşı bir güvenlik sınırı değildir. - Activities devre dışı bırakıldığında
/discord/activityhiçbir şekilde kaydedilmez.
Sorun giderme
Activity “Gateway çevrimdışı” diyor
- tünelin çalıştığını ve Gateway’in gerçek bağlama bağlantı noktasına yönlendirildiğini doğrulayın
- Developer Portal hedefinin
/discord/activityiçerdiğini doğrulayın - Discord veya OpenClaw yapılandırmasını değiştirdikten sonra Gateway’i yeniden başlatın
- eksik Activities istemci gizli anahtarıyla ilgili tek satırlık uyarı için Gateway günlüklerini denetleyin
Discord boş bir sayfa açıyor veya blocked:csp bildiriyor
- URL eşlemesinin
ROOTkullandığını ve ikinci bir/discord/activitysegmenti eklemediğini doğrulayın - kabuğun,
shell.jsöğesinin ve SDK modülünün tamamının Discord proxy’si üzerinden döndüğünü doğrulayın /discord/activity/altındaki istekler için Gateway günlüklerini inceleyin