xmpp-english-fixed

Fixed version of n8n-nodes-xmpp-english - Component for sending files and messages using the XMPP protocol (FIXES JID DOUBLE DOMAIN BUG)

Package Information

Released: 9/4/2025
Downloads: 13 weekly / 31 monthly
Latest Version: 1.0.6
Author: mcnug

Documentation

n8n-nodes-xmpp-english-fixed

Fixed version of n8n-nodes-xmpp-english that resolves the JID double domain bug.

Custom n8n node for integrating with XMPP servers (Openfire and Spark).
This node allows you to send and receive messages via XMPP, making it easier to automate workflows using instant messaging.

🐛 Bug Fixed

The original package had a critical bug where entering a full JID (like user@domain.com) in the "JID User" field would result in a double domain error:

  • Input: nuggy@skyn3t.lol
  • Result: nuggy@skyn3t.lol@skyn3t.lol

This fixed version properly parses the JID field and extracts only the username part.

✨ Features

  • 🔄 Send XMPP messages to a given JID
  • 📥 Listen for incoming messages (webhook-like behavior)
  • 📎 Support for file transfer with XEP-0047 (In-Band Bytestreams)
  • 🛠️ Fully compatible with Openfire
  • FIXED: Proper JID parsing to prevent double domain issues

📦 Installation

Install the package globally so that n8n can detect it:

npm install -g n8n-nodes-xmpp-english-fixed

Restart n8n and refresh the browser. You should now see the XMPP and XMPP Trigger nodes available in the node palette.

🚀 Usage

XMPP Credentials

  • XMPP Service: WebSocket URL of your XMPP server (e.g., wss://your-server:5280/ws)
  • XMPP Domain: Domain of your XMPP server (e.g., skyn3t.lol)
  • Username: ⚠️ IMPORTANT: Enter ONLY the username part (e.g., nuggy) NOT the full JID (nuggy@skyn3t.lol)
  • Password: Password for the XMPP user

🔧 What Was Fixed

Original Bug

// If you entered: nuggy@skyn3t.lol
username: "nuggy@skyn3t.lol"  // ❌ Wrong
domain: "skyn3t.lol"
// Result: nuggy@skyn3t.lol@skyn3t.lol ❌

The Fix

// Parse JID properly to extract username
const jidInput = String(xmppCredentials.jid);
const username = jidInput.includes('@') ? jidInput.split('@')[0] : jidInput;
// Now works with both "nuggy" and "nuggy@skyn3t.lol" inputs ✅

📝 Working Configuration Examples

Method 1 (Recommended)

XMPP Service: wss://skyn3t.lol/ws
XMPP Domain: skyn3t.lol
Username: nuggy                    ✅ Just the username
Password: your_password

Method 2 (Also Works Now)

XMPP Service: wss://skyn3t.lol/ws
XMPP Domain: skyn3t.lol
Username: nuggy@skyn3t.lol         ✅ Will extract "nuggy"
Password: your_password

🙏 Credits

📄 License

MIT

Discussion