# Correction N8N - RocketChat Channel ID ## 🔍 Problème identifié D'après la réponse du webhook N8N, la structure de `rocketChatChannel` est : ```json "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 : ```javascript // 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 : ```bash ./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.