NeahStable/N8N_ROCKETCHAT_FIX.md
2026-01-14 11:15:51 +01:00

3.2 KiB

Correction N8N - RocketChat Channel ID

🔍 Problème identifié

D'après la réponse du webhook N8N, la structure de rocketChatChannel est :

"rocketChatChannel": {
  "id": "6966cbb6c8e9627bcb87daad",
  "name": "seffirouuuuuu",
  "exists": true,
  "error": null
}

Mais dans le node "Save Mission To API", le code cherche :

$node['Combine Results'].json.rocketChatChannel?.channel?._id

Ce qui ne correspond pas à la structure réelle qui est rocketChatChannel.id (pas rocketChatChannel.channel._id).


Solution : Modifier dans N8N

Étape 1 : Ouvrir le workflow N8N

  1. Connectez-vous à N8N
  2. Ouvrez le workflow qui gère la création de missions
  3. Trouvez le node "Save Mission To API"

Étape 2 : Modifier le paramètre rocketchatChannelId

Dans le node "Save Mission To API", dans la section Body Parameters, trouvez le paramètre :

Nom : rocketchatChannelId

Valeur actuelle (INCORRECTE) :

={{ $node['Combine Results'].json.rocketChatChannel?.channel?._id || '' }}

Valeur à mettre (CORRECTE) :

={{ $node['Combine Results'].json.rocketChatChannel?.id || $node['Combine Results'].json.rocketChatChannel?.channel?._id || '' }}

Cette expression essaie d'abord rocketChatChannel.id (la structure réelle), puis fait un fallback sur rocketChatChannel.channel._id (ancienne structure) si la première n'existe pas.


🔍 Vérification dans "Combine Results"

Vérifiez aussi que le node "Combine Results" structure correctement les données.

Dans le code JavaScript de "Combine Results", la ligne qui traite RocketChat devrait extraire l'ID correctement. Vérifiez que cette partie du code gère bien les deux structures :

// Process RocketChat channel result
if (rocketChatResult.error?.includes('error-duplicate-channel-name')) {
  console.log('RocketChat channel already exists');
  rocketChatResult = { exists: true };
} else if (rocketChatResult.body?.channel?._id) {
  resourceStatus.rocketChatChannel = true;
}

// ...

// Dans la construction du résultat
rocketChatChannel: rocketChatResult.error ? { error: ... } : (rocketChatResult.body || rocketChatResult || {})

Si la réponse de RocketChat est directement dans rocketChatResult.body.channel._id, alors rocketChatResult.body contiendra { channel: { _id: "..." } }.

Mais d'après votre réponse, il semble que "Combine Results" transforme déjà la structure en { id: "...", name: "...", exists: true }.


🧪 Test après modification

Après avoir modifié le node "Save Mission To API", testez avec :

./test-n8n-python.py [MISSION_ID] [PROJECT_NAME]

Vérifiez dans les logs Next.js que rocketchatChannelId est bien reçu avec la valeur "6966cbb6c8e9627bcb87daad" (ou l'ID réel du channel).


📝 Résumé des changements

Node à modifier : "Save Mission To API"
Paramètre : rocketchatChannelId
Ancienne valeur : ={{ $node['Combine Results'].json.rocketChatChannel?.channel?._id || '' }}
Nouvelle valeur : ={{ $node['Combine Results'].json.rocketChatChannel?.id || $node['Combine Results'].json.rocketChatChannel?.channel?._id || '' }}

Cette modification permet de supporter les deux structures (ancienne et nouvelle) pour plus de robustesse.