Skip to main content
Bu sayfa Market’te gördüğünüz türden entegrasyon pluginlerini (OBS sahne değiştirici, Twitch/Spotify kontrolü, Discord, hotkey) sıfırdan nasıl yazacağınızı anlatır.
Entegrasyonlar T1 (trusted-node) ile yazılır ve sandbox değildir — plugin Windows kullanıcı hesabınızın erişebildiği her şeye erişir. Yalnız kendi yazdığınız/incelediğiniz kodu çalıştırın. Public T2 sandbox modeli farklıdır (bkz. Trust tier’ları).

Temel model: T1 = tam Node process

Önemli olan tek fikir: evoX, T1 plugininizi ayrı bir tam Node.js process’i olarak çalıştırır. Yani:
  • İstediğiniz npm kütüphanesini kullanabilirsiniz (npm install obs-websocket-js ws node-fetch …).
  • Dış servislere doğrudan bağlanabilirsiniz — WebSocket, HTTPS API, yerel port. evoX araya girmez.
  • SDK yalnız host tarafını yönetir: hangi event geldi (tuşa basıldı, kadran döndü), tuşta ne görünüyor (başlık/görsel/durum), ayarlar ve loglar.
Yani iş bölümü: dış servis mantığı sizin Node kodunuz + npm kütüphaneleriniz; tuş/ayar/olay köprüsü SDK.

Proje kurulumu

manifest.json’da aksiyonu ve ayarlarını bildirin. Ayar tipleri zengindir — secret, oauth, select, color, number, toggle, hotkey, url, path desteklenir:

Örüntü 1 — WebSocket entegrasyonu (OBS)

runtime.mjs: bağlantıyı ilk willAppear’da kur, keyDown’da komut gönder, willDisappear’da temizle.
ws://127.0.0.1 bağlantısı doğrudan kuruluyor — T1 tam Node olduğu için bir SDK “network capability”si gerekmez. (Bu, public T2 sandbox’ta böyle değildir; orada host-brokered network.fetch kullanılır.)

Örüntü 2 — API + OAuth (Twitch/Spotify tarzı)

İki yol var:
  1. Kendi token yönetiminiz: T1 tam Node olduğu için tokeni secret ayarından okuyup doğrudan fetch ile kullanabilirsiniz.
  2. Host-brokered OAuth: SDK beginOAuth(provider) / getOAuthStatus(provider) ile evoX’in credential vault’unu kullanırsınız; ham token plugininize dönmez, host isteğe enjekte eder.

Tuş görseli — setImage (albüm kapağı gibi dinamik görsel)

Başlık dışında tuşa dinamik görsel basabilirsiniz. İki biçim:
Çok-durumlu aksiyonlarda setState(id, n) ile durum (0’dan başlar) değiştirilir.

Kadran (Knob) desteği

Aksiyonu "controllers": ["Knob"] ile bildirin ve action.dialRotate / action.dialDown dinleyin — ses/parlaklık gibi sürekli değerler için idealdir.

Yaşam döngüsü ve temizlik

  • Bağlantıyı willAppear’da tembel (lazy) kur; plugin.stop’ta kapat.
  • Polling gerekiyorsa willAppear’da başlat, willDisappear’da durdur; hata halinde exponential backoff.
  • Her handler’ı try/catch ile sar; hatayı console.error ile logla (Geliştirici penceresinde görünür) ve showError ile kullanıcıya bildir.
  • Kimliği host atar: event.context.bindingInstanceId dışında bir context’e yazma; tanımadığın actionId’yi yok say.

Sonraki adım

Kendi evoX'inde test et

Projeyi Geliştirici penceresinden yükle, tuşa ata, yeniden yükle ve logları gör.
Referanslar: Event ve host-RPC · Manifest · Capability modeli (T2).