UNPKG

n8n-nodes-ntfy-ext

Version:

n8n custom nodes for ntfy.sh integration (publish and subscribe/trigger) - extended

209 lines (170 loc) 6.56 kB
# n8n-nodes-ntfy-ext n8n için ntfy.sh entegrasyon paketi. İki node içerir: - Ntfy Send Message: Bir ntfy konusuna mesaj yayınlar (publish). - Ntfy Trigger: Bir ntfy konusundan gelen mesajları dinler (SSE) ve iş akışını tetikler. Kategori: Notifications Referanslar: - ntfy Publish API: https://docs.ntfy.sh/publish/ - ntfy Subscribe (SSE) API: https://docs.ntfy.sh/subscribe/ - ntfy Ana sayfa: https://ntfy.sh/ n8n uyumluluğu: - Node türleri: Action (Send Message) ve Trigger (SSE). - Inputs/Outputs: - Send Message: inputs=[main], outputs=[main]. - Trigger: inputs=[], outputs=[main]. - Credentials yapısı: Bearer (API Key) ve Basic (Username/Password), n8n credentials sekmesiyle uyumlu. - this.getNodeParameter, this.getCredentials ve this.helpers.returnJsonArray kullanım kalıpları n8n best practice ile uyumludur. - Kategori: Notifications (n8n UI’de bu kategori altında görünür). ## Kurulum ```bash npm install n8n-nodes-ntfy-ext ``` n8n kurulumunuzda bu paketi yükledikten sonra, n8n’i yeniden başlatın. ## Kimlik Doğrulama Credentials: Ntfy API - Auth Type: - API Key (Bearer) - Basic (Username & Password) - Base URL: Varsayılan https://ntfy.sh Not: Hem node parametresindeki baseUrl hem de credential’daki baseUrl kullanılabilir; node parametresi önceliklidir. ## Ntfy Send Message (Action Node) Bir ntfy konusuna mesaj gönderir. Zorunlu alanlar: - Base URL (varsayılan: https://ntfy.sh) - Topic - Message Opsiyonel alanlar (ntfy publish header’ları): - Title - Priority (1-5) - Tags (virgülle ayrılmış) - Click URL - Actions (JSON) - Attachment URL (attach) - Filename - Delay (örn: 30m, 1h, tomorrow) - Email - Call - Cache (boolean) - Firebase (boolean) - Icon URL - Markdown (boolean) - Extra Headers (JSON) Çalışma şekli: - Mesaj gövdesi text/plain olarak gönderilir. - Diğer alanlar ntfy header’ları şeklinde set edilir (X-Title, X-Priority, X-Tags, X-Actions, ...). - Bearer/Basic Authorization header’ı otomatik oluşturulur (credentials varsa). Çıktı: Başarılı gönderimde boş JSON: `{}` ## Ntfy Trigger (Trigger Node) SSE kullanarak bir konuyu dinler ve her mesajı ayrı item olarak yayar. Zorunlu alanlar: - Base URL (varsayılan: https://ntfy.sh) - Topic Opsiyonel: - Reconnect Delay (ms): Bağlantı koptuğunda yeniden bağlanma gecikmesi (varsayılan 2000ms) Çalışma şekli: - /topic/<name>/sse endpoint’i ile SSE akışı başlatılır. - Akış kesildiğinde otomatik olarak retry yapılır. - Gelen JSON event verisi ham haliyle item.json’a yazılır ve downstream node’lara iletilir. - Workflow durdurulduğunda closeFunction ile bağlantı düzgün şekilde sonlandırılır. Çıktı örneği: ```json { "id": "string", "time": 1700000000, "event": "message", "topic": "my-topic", "title": "string", "message": "string", "priority": 3, "tags": ["tag1","tag2"], "click": "https://...", "actions": [], "attach": "https://...", "filename": "file.txt", "delay": "30m", "email": "x@y.z", "call": "+900000000", "cache": true, "firebase": false, "icon": "https://...", "up-time": 1700000000 } ``` ## n8n’de Kurulum ve Ayar Örnek Kurgusu Yükleme: - n8n çalıştığı makinede terminalden: ```bash npm install n8n-nodes-ntfy-ext ``` - n8n’i yeniden başlatın (Desktop: uygulamayı kapat/aç; Self-hosted: servis/PM2/Docker restart). n8n UI’de etkinleştirme: - Settings → Community Nodes → Install → “n8n-nodes-ntfy-ext” yazın ve yükleyin. - Güvenlik uyarısını onaylayın. Credentials oluşturma (opsiyonel ama önerilir): - Settings → Credentials → New → “Ntfy API” - Auth Type: Bearer (API Key) veya Basic - API Key veya Username/Password girin - Base URL: https://ntfy.sh (veya kendi ntfy sunucunuz) - Save Örnek 1: Basit Publish Akışı - Nodes: - Set: topic = "demo-topic", message = "Merhaba ntfy!" - Ntfy Send Message: - Base URL: https://ntfy.sh - Topic: {{$json.topic}} - Message: {{$json.message}} - Additional Options: Title = "Duyuru", Priority = 4, Tags = "info,ntfy" - Credentials: “Ntfy API” (Bearer/Basic) - Çalıştırın; ntfy client’ında bildirimi görün. Örnek 2: Trigger ile Otomasyon - Nodes: - Ntfy Trigger: - Base URL: https://ntfy.sh - Topic: demo-topic - Reconnect Delay (ms): 2000 - Credentials: “Ntfy API” (opsiyonel) - IF: - Condition: priority >= 4 - Slack/E-mail node’u: - IF TRUE koluna bağlayın, kritik mesajları bildirin. - Test: - Aşağıdaki curl ile mesaj yayınlayın: ```bash curl -H "X-Title: Kritik" -H "X-Priority: 5" -d "Sunucu hata verdi" https://ntfy.sh/demo-topic ``` - Workflow tetiklenir, IF TRUE dalı çalışır. Docker ile self-host n8n kullanımı: - docker-compose.yml’de community nodes izinli olmalı. Örnek env: ``` N8N_COMMUNITY_NODES_ENABLED=true ``` - Container içine girip paket kurabilir veya Host’ta volume ile node’u mount edebilirsiniz. Kurulum sonrası container’ı yeniden başlatın. Sorun giderme: - Publish HTTP hata kodları: Credentials ve topic/baseUrl değerlerini doğrulayın. - Trigger akmıyor: Topic doğru mu, ntfy sunucusu erişilebilir mi, SSE engelleniyor mu (proxy/firewall)? - Özel sunucu: Base URL sonuna slash koymayın; örn: https://ntfy.example.com - Actions/Headers JSON: Geçerli JSON olduğundan emin olun. ## n8n İçinde Örnek Akışlar 1) Basit Publish Akışı - Set node ile topic ve message belirleyin. - Ntfy Send Message node’una bağlayın. - Çalıştırın; ntfy mobil/desktop client üzerinden bildirimi görün. 2) Trigger ile Olay Tetikleme - Ntfy Trigger node’unu ekleyin; baseUrl ve topic girin. - Çıktıyı bir IF veya Switch node’una verip “priority” veya “tags” alanlarına göre dallandırın. - Uygun durumda e-posta/Slack gibi aksiyon node’larına bağlayın. ## Geliştirme Repo’yu klonladıktan sonra: ```bash npm install npm run build ``` Testler: ```bash npm test ``` ## Notlar - Publish istekleri text/plain body ile yapılır, gelişmiş parametreler header olarak gönderilir. - Trigger SSE bağlantısı hata durumunda otomatik yeniden bağlanır. - ntfy publish/subscribe API referansları: https://docs.ntfy.sh/publish/ ve https://docs.ntfy.sh/subscribe/ Lisans: MIT