Workflow n8n

Automatisation Discord avec n8n : notifications d'incidents

Ce workflow n8n a pour objectif d'automatiser l'envoi de notifications sur Discord en cas d'incidents détectés via une API. Dans un contexte où la réactivité est cruciale, notamment pour les équipes techniques et de support, ce type d'automatisation permet de gagner un temps précieux et d'améliorer la communication interne. Les cas d'usage incluent la surveillance de systèmes, l'alerte sur des erreurs critiques ou des mises à jour importantes à partager avec l'équipe. Étape 1 : le déclencheur est un cron qui exécute le workflow à intervalles réguliers. Étape 2 : le noeud '@Get Issue' interroge une API pour récupérer les informations sur les incidents récents. Étape 3 : une fonction permet de traiter ces données et de déterminer si une alerte doit être envoyée. Étape 4 : un noeud 'IF' vérifie les conditions pour décider de l'envoi d'une notification. Si une alerte est nécessaire, le noeud 'Discord' envoie un message sur le canal approprié. Ce workflow offre une valeur ajoutée significative en réduisant le temps de réponse aux incidents et en assurant une meilleure coordination au sein des équipes. Tags clés : automatisation, Discord, notifications.

Catégorie: Scheduled · Tags: automatisation, Discord, notifications, n8n, API0

Vue d'ensemble du workflow n8n

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Détail des nœuds du workflow n8n

  • @Get Issue

    Ce noeud effectue une requête HTTP pour obtenir des informations sur un problème.

  • Cron

    Ce noeud déclenche le workflow à des intervalles définis selon un calendrier.

  • Discord

    Ce noeud envoie un message texte sur un canal Discord.

  • Function

    Ce noeud exécute un code JavaScript personnalisé pour traiter des données.

  • IF

    Ce noeud évalue des conditions pour déterminer le chemin à suivre dans le workflow.

  • @Get Date 1 min ago

    Ce noeud calcule et retourne la date d'une minute en arrière.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "nodes": [
    {
      "name": "@Get Issue",
      "type": "n8n-nodes-base.httpRequest",
      "maxTries": 3,
      "position": [
        1050,
        590
      ],
      "parameters": {
        "url": "https://api.github.com/notifications",
        "options": {},
        "authentication": "basicAuth",
        "queryParametersUi": {
          "parameter": [
            {
              "name": "since",
              "value": "={{$node[\"@Get Date 1 min ago\"].json[\"since\"]}}"
            }
          ]
        },
        "headerParametersUi": {
          "parameter": [
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246"
            }
          ]
        }
      },
      "credentials": {
        "httpBasicAuth": "Github Auth"
      },
      "retryOnFail": true,
      "typeVersion": 1
    },
    {
      "name": "Cron",
      "type": "n8n-nodes-base.cron",
      "position": [
        710,
        590
      ],
      "parameters": {
        "triggerTimes": {
          "item": [
            {
              "mode": "everyX",
              "unit": "minutes",
              "value": 1
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Discord",
      "type": "n8n-nodes-base.discord",
      "position": [
        1610,
        580
      ],
      "parameters": {
        "text": "=Notifications In last minutes: <@userIdForTagging>\n{{$node[\"Function\"].json[\"reportMessage\"]}}"
      },
      "typeVersion": 1
    },
    {
      "name": "Function",
      "type": "n8n-nodes-base.function",
      "position": [
        1230,
        590
      ],
      "parameters": {
        "functionCode": "const newItems = [];\n\nfor (const item of items[0].json) {\n     newItems.push(`- [${item.reason}] => ${item.subject.title} @ ${item.subject.url.replace('api.','').replace('/repos','')}`);\n  }\n\nreturn [{json: {reportMessage: `${newItems.join('\\r\\n')}`, hasNotifications: items[0].json.length > 0}}];\n"
      },
      "typeVersion": 1
    },
    {
      "name": "IF",
      "type": "n8n-nodes-base.if",
      "position": [
        1400,
        590
      ],
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": "={{$node[\"Function\"].json[\"hasNotifications\"]}}",
              "value2": true
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "@Get Date 1 min ago",
      "type": "n8n-nodes-base.function",
      "position": [
        860,
        590
      ],
      "parameters": {
        "functionCode": "const date = new Date(new Date().setMinutes(new Date().getMinutes() - (1))).toISOString()\nreturn [{json: {since: date}}];"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "IF": {
      "main": [
        [
          {
            "node": "Discord",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Cron": {
      "main": [
        [
          {
            "node": "@Get Date 1 min ago",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Function": {
      "main": [
        [
          {
            "node": "IF",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "@Get Issue": {
      "main": [
        [
          {
            "node": "Function",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "@Get Date 1 min ago": {
      "main": [
        [
          {
            "node": "@Get Issue",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Pour qui est ce workflow ?

Ce workflow s'adresse aux équipes techniques et de support au sein d'entreprises de taille moyenne à grande, qui souhaitent améliorer leur réactivité face aux incidents. Un niveau technique intermédiaire est recommandé pour la personnalisation de ce workflow.

Problème résolu

Ce workflow résout le problème de la lenteur dans la communication des incidents critiques au sein des équipes. En automatisant l'envoi de notifications sur Discord, il élimine les frustrations liées aux alertes manuelles et réduit le risque de délais dans la prise de décision. Les utilisateurs peuvent ainsi se concentrer sur la résolution des problèmes plutôt que sur la gestion des alertes.

Étapes du workflow

Étape 1 : le workflow est déclenché par un cron qui s'exécute à des intervalles définis. Étape 2 : le noeud '@Get Issue' effectue une requête HTTP pour récupérer les informations sur les incidents. Étape 3 : une fonction traite ces données pour déterminer si une alerte est nécessaire. Étape 4 : le noeud 'IF' évalue les conditions pour décider de l'envoi d'une notification. Étape 5 : si une alerte est requise, le noeud 'Discord' envoie un message au canal approprié, informant l'équipe des incidents récents.

Guide de personnalisation du workflow n8n

Pour personnaliser ce workflow, vous pouvez modifier l'URL de l'API dans le noeud '@Get Issue' pour qu'elle corresponde à votre système de gestion des incidents. Le texte du message envoyé sur Discord peut être ajusté dans le noeud 'Discord' pour refléter le ton et le style de votre équipe. Vous pouvez également adapter la fréquence d'exécution du cron en fonction de vos besoins. Pour une meilleure sécurité, envisagez d'ajouter des mécanismes d'authentification dans le noeud '@Get Issue'.