Automatisation Slack avec n8n : récupération d'infos GitHub
Ce workflow n8n a pour objectif d'automatiser la récupération d'informations utilisateur depuis GitHub et de les envoyer sur Slack. Il est particulièrement utile pour les équipes de développement qui souhaitent centraliser les notifications et les mises à jour concernant les utilisateurs de leur projet GitHub. Grâce à cette automatisation n8n, les équipes peuvent gagner du temps et améliorer leur communication en évitant les recherches manuelles d'informations. Le workflow commence par un déclencheur de type Webhook, qui permet de recevoir des requêtes HTTP. Ensuite, il utilise un nœud GraphQL pour interroger l'API de GitHub et récupérer les données utilisateur nécessaires. Les informations obtenues sont ensuite traitées par un nœud Function, qui permet d'adapter les données au format souhaité avant de les envoyer. Enfin, un nœud Slack envoie les informations formatées dans un canal spécifique, facilitant ainsi le partage d'informations au sein de l'équipe. Cette automatisation apporte une valeur ajoutée significative en réduisant les délais de communication et en centralisant les informations pertinentes dans un seul canal accessible à tous les membres de l'équipe.
Workflow n8n Slack, GitHub, communication : vue d'ensemble
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Workflow n8n Slack, GitHub, communication : détail des nœuds
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"id": "5",
"name": "Slack-GitHub User Info",
"nodes": [
{
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
300,
300
],
"webhookId": "dacd64a7-a83e-4492-b8fe-363453906d0d",
"parameters": {
"path": "dacd64a7-a83e-4492-b8fe-363453906d0d",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 1
},
{
"name": "GraphQL",
"type": "n8n-nodes-base.graphql",
"position": [
500,
300
],
"parameters": {
"query": "=query {\nuser(login:\"{{$node[\"Webhook\"].json[\"body\"][\"text\"]}}\"){\nname\ncompany\nlocation\navatarUrl\nemail\npullRequests(last: 25) {\nedges {\nnode {\ncommits(last:25) {\nnodes {\ncommit {\nauthor {\nemail\nname\n}\n}\n}\n}\n}\n}\n}\n}\n}",
"endpoint": "https://api.github.com/graphql",
"requestFormat": "json",
"responseFormat": "string",
"headerParametersUi": {
"parameter": [
{
"name": "User-Agent",
"value": "n8n"
},
{
"name": "Authorization",
"value": "bearer <Personal Token>"
}
]
}
},
"typeVersion": 1
},
{
"name": "Function",
"type": "n8n-nodes-base.function",
"position": [
700,
300
],
"parameters": {
"functionCode": "let emails = [];\nlet tempEmails = [];\nconst name = $node[\"GraphQL\"].json[\"data\"][\"data\"][\"user\"][\"name\"];\nconst publicEmail = $node[\"GraphQL\"].json[\"data\"][\"data\"][\"user\"][\"email\"];\nconst username = $node[\"Webhook\"].json[\"body\"][\"text\"];\nconst nameRegex = new RegExp(name,\"g\")\n\nif(publicEmail){\n// if public email address exists, push it to the tempEmails array\n tempEmails.push(publicEmail)\n}\n\n// looping through the pull requests\nfor(const edge of items[0].json.data.data.user.pullRequests.edges){\n // looping through the commits\n for(node of edge.node.commits.nodes){\n\n // Checks the name associated with the email address\n if(nameRegex.test(node.commit.author.name)|| node.commit.author.name == username) {\n // if name equals to contributors name or username, push the email address in tempEmails\n tempEmails.push(node.commit.author.email)\n }\n }\n}\n\n// Remove duplicates\nemails = [...new Set(tempEmails)]\n\n// RegEx Pattern for email address generated by GitHub\nlet re = /^\\w+(.)*@users.noreply.github.com/\n\n// Remove the email addresses Generated by GitHub\nemails = emails.filter(email => !re.test(email))\n\n\nreturn [{json:{emails,}}]\n"
},
"typeVersion": 1
},
{
"name": "Slack",
"type": "n8n-nodes-base.slack",
"position": [
900,
300
],
"parameters": {
"channel": "={{$node[\"Webhook\"].json[\"body\"][\"channel_id\"]}}",
"attachments": [
{
"title": "=GitHub Details for: {{$node[\"Webhook\"].json[\"body\"][\"text\"]}}"
},
{
"text": "=*Name:* {{$node[\"GraphQL\"].json[\"data\"][\"data\"][\"user\"][\"name\"]}}\n*Email:* {{$node[\"Function\"].json[\"emails\"].join(', ')}}\n*Company:* {{$node[\"GraphQL\"].json[\"data\"][\"data\"][\"user\"][\"company\"]}}\n*Location:* {{$node[\"GraphQL\"].json[\"data\"][\"data\"][\"user\"][\"location\"]}}"
},
{
"thumb_url": "={{$node[\"GraphQL\"].json[\"data\"][\"data\"][\"user\"][\"avatarUrl\"]}}"
}
],
"otherOptions": {},
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": "Slack OAuth2"
},
"typeVersion": 1
}
],
"active": false,
"settings": {},
"connections": {
"GraphQL": {
"main": [
[
{
"node": "Function",
"type": "main",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "GraphQL",
"type": "main",
"index": 0
}
]
]
},
"Function": {
"main": [
[
{
"node": "Slack",
"type": "main",
"index": 0
}
]
]
}
}
}Workflow n8n Slack, GitHub, communication : pour qui est ce workflow ?
Ce workflow s'adresse principalement aux équipes de développement et aux entreprises qui utilisent GitHub et Slack pour la gestion de projets. Il est idéal pour les organisations de taille moyenne à grande, qui cherchent à améliorer leur efficacité opérationnelle et leur communication interne. Un niveau technique intermédiaire est recommandé pour la mise en place et la personnalisation du workflow.
Workflow n8n Slack, GitHub, communication : problème résolu
Ce workflow résout le problème de la dispersion des informations entre différentes plateformes. Les équipes de développement passent souvent beaucoup de temps à chercher des informations sur les utilisateurs dans GitHub, ce qui peut entraîner des retards dans la communication et la prise de décision. En automatisant ce processus, les utilisateurs peuvent recevoir des mises à jour en temps réel sur Slack, réduisant ainsi le temps perdu et améliorant la réactivité de l'équipe face aux changements. Cela permet également de minimiser les risques d'erreurs humaines lors de la transmission d'informations.
Workflow n8n Slack, GitHub, communication : étapes du workflow
Étape 1 : Le workflow est déclenché par un Webhook, qui reçoit une requête HTTP.
- Étape 1 : Les données sont ensuite envoyées à un nœud GraphQL, qui interroge l'API de GitHub pour récupérer les informations utilisateur.
- Étape 2 : Les données obtenues sont traitées par un nœud Function, permettant de les formater selon les besoins.
- Étape 3 : Enfin, les informations formatées sont envoyées à un canal Slack via un nœud Slack, facilitant ainsi leur partage avec l'équipe.
Workflow n8n Slack, GitHub, communication : guide de personnalisation
Pour personnaliser ce workflow, vous pouvez modifier l'URL du Webhook pour l'adapter à vos besoins spécifiques. Dans le nœud GraphQL, ajustez la requête pour récupérer les informations utilisateur pertinentes selon vos critères. Vous pouvez également personnaliser le format des données dans le nœud Function pour qu'elles soient présentées de manière optimale sur Slack. Enfin, n'oubliez pas de spécifier le canal Slack dans le nœud correspondant pour diriger les notifications vers le bon endroit. Assurez-vous également de configurer les paramètres d'authentification nécessaires pour accéder à l'API de GitHub.