99 lines
3.2 KiB
Markdown
99 lines
3.2 KiB
Markdown
# 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.
|