Aller au contenu

n8n

3 articles avec l'étiquette « n8n »

n8n : utiliser l'API SMS de Free mobile pour vos workflows

Saviez-vous que Free met à disposition une API SMS pour envoyer des notifications SMS directement sur votre téléphone ?

Note : L’API permet d’envoyer des notifications uniquement à votre numéro de téléphone Free, elle ne permet pas d’envoyer des SMS à d’autres numéros, mais c’est parfait pour un système de notification.

Activer la fonctionnalité “notification par sms”

Bien entendu, il faut disposer d’un numéro de téléphone Free pour accéder à cette fonctionnalité. Ensuite, il faut vous rendre dans les paramètres de votre compte Free mobile (https://mobile.free.fr/account/mes-options):

Activer la fonctionnalité (dans “mes options > notification par sms”) :

Copier la clé API pour le besoin juste après.

Utiliser l’API dans n8n

Pour l’exemple, on va créer un workflow qui notifie par sms. On va faire en sorte que ce workflow s’exécute, par le biais d’un autre workflow.

On va créer ceci :

Faire un node Set avec les variables suivantes :

On va définir :

  • user => votre numéro d’utilisateur Free mobile
  • pass => la clé API de notification SMS

Pourquoi ne pas définir sous forme de Credential ?

Les variables, user, pass et mess sont directement encoder dans l’url, pour le moment d’après mes recherches, on peut pas créer de Credential n8n pour les mettre directement dans une URL. Si j’ai faux, merci de me le signaler en commentaire 😄.

Comme nous allons envoyer le message comme variable dans l’url, nous allons créer un node pour encoder le message dans l’url :

Le code :

{{ encodeURIComponent( $json["mess"]) }}

Ensuite, un node HTTP request :

L’URL avec les variables :

https://smsapi.free-mobile.fr/sendmsg?user={{$json.user}}&pass={{$json.pass}}&msg={{$json.mess}}

Pour pouvoir l’utiliser à partir d’un autre workflow on va utiliser le trigger “Execute Workflow Trigger”. Ce trigger prend en paramètre le résultat d’un node précédent, on va le voir après, lors d’un déclenchement à partir d’un autre workflow.

Test avec un autre workflow

Dans le node “Envoi message” on crée une variable “mess” avec notre message test qui sera pris en paramètre du précédent workflow.

Pour le node execute Workflow :

Dans Workflow ID on va mette l’ID du workflow.

Comment obtenir l’ID ?

Tout simplement avec l’URL du Workflow en question :

https://n8n.monlab.fr/workflow/4LjGtoFyzPKgn2xr

Voici un exemple de résultat si c’est ok :

Conclusion

On a vu dans ce tutoriel :

  • Comment activer les notification SMS avec Free mobile
  • Comment envoyer un SMS de notification avec l’API
  • Comment exécuter un workflow avec un autre

Sources :

n8n : Peut-on créer des tâches Notion à partir d'un shortcut IOS ?

n8n : Peut-on créer des tâches Notion à partir d’un shortcut IOS ?

Introduction

Nous pouvons faire bien des choses avec n8n. Dans cet article nous allons voir comment on peut lancer un workflow n8n à partir d’un shortcut sur ios (l’application Raccourcis en français 😄), mais également ce que l’on peut faire avec. Si vous ne connaissez pas encore n8n je vous invites à lire mon article sur celui-ci.

L’intérêt de cette exercice est par exemple de déclencher un Workflow depuis un iphone/ipad/mac 🍎.

Note : utilisation en direct de l’API Notion

Nous pouvons en effet utiliser directement l’API de Notion depuis un shortcut, mais l’avantage d’utiliser n8n va être dans l’utilisation d’autres outils, tel que Telegram pour envoyer une notification ou encore utiliser une variable “choix” pour choisir de créer une tâche dans Notion ou Trello par exemple.

Voici le résultat :

Lancer un workflow à partir d’un shortcut ios ?

Pour commencer, nous allons donc lancer un workflow n8n à partir d’un shortcut. Une manière simple d’y parvenir est d’utiliser un appel webhook. Un webhook est une fonction de rappel basée sur le protocole HTTP.

Sur n8n, on va utiliser le déclencheur “on webhook call” :

Je vais vous détailler certains paramètres car ceci peuvent être utile pour votre workflow :

  1. Test URL” -> Quand vous appuyer sur le “Listen For Test event” c’est l’url qui faudra appeler pour déclencher le Workflow pendant vos tests.
  2. Production URL-> L’URL qu’il faudrait appelé quand votre workflow sera en production, par “production” n8n veut dire quand le workflow sera “actif”.
  3. Authentification” -> comme son nom l’indique cela permet de rajouter une authentification à votre appel webhook typiquement pour éviter que n’importe qui puisse déclencher le workflow.
  4. HTTP Method” -> Vous pouvez indiquer ici, s’il s’agit d’un GET, POST ou autres méthodes HTTP.
  5. Path” -> Permet de personnaliser l’url d’appel du webhook.

On va personnaliser le Path en “test-webhook” (1) pour simplifier un peu et rajouter une authentification (2-3) :

Pour l’authentification basique, ajouter un utilisateur et un mot de passe (dans mon authentification, j’ai utilisé login: test, password : test) :

Maintenant, allons du côté de l’application shortcut :

  1. Je défini une variable “login” qui servira pour les identifiants de l’API, il faudra ensuite l’encoder en base64.
  2. Je défini ensuite mon url en méthode GET dans mon cas, n’oubliez pas d’adapter le l’url par rapport à votre path. On va ensuite utiliser “obtenir le contenu de l’url” (prendre l’url précédente en variable). Ajouter les 2 clés d’en-têtes (Content-Type : application/json & Authorization : Basic suivi de votre variable login).

Cliquer ensuite sur “Listen for test Event” sur n8n, pour lancer le test, puis exécuter le shortcut sur votre iphone.

Félicitation, vous venez dans lancer un workflow n8n depuis un shortcut ios ! 😄

On peut maintenant envoyer de la donnée au Workflow.

Dans le shortcut nous allons :

  • Demander du texte (1)
  • Définir une variable “tache” avec l’entrée indiquée (2)
  • Dans “obtenir le contenu url”, on va envoyer notre variable “tache” pour la récupérer dans n8n. Passer la requête en “POST” pour pouvoir envoyer de la données et mettre la variable dans le corps de la requête. (3)
  • Pareil dans n8n.

Vous pouvez à présent cliquer sur “listen for test event” dans n8n , puis exécuter le Workflow, définir votre texte. Vous pouvez retrouver ensuite vos données dans n8n comme ceci :

Créer une tâche et renvoyer le lien vers celle-ci

On va maintenant envoyer des données dans Notion pour créer une tâche et renvoyer le lien de la tâche précédemment crée vers le shortcut.

Dans Shortcuts :

A la suite du shortcut précédent :

  1. On va obtenir le contenu de l’URL pour récupérer “le retour” de n8n.
  2. On va mettre l’étape “URL” sur “Décoder” puis la variable sur “Contenu de l’URL”, on va ensuite “obtenir la valeur du dictionnaire” une fois pour url et pour tache que l’on va ensuite définir dans la variable url-respond et tache-respond.
  3. On va ensuite envoyer une alerte à l’utilisateur une alerte avec le nom de la tâche et lui proposer d’ouvrir le lien vers la tâche.

Dans n8n :

Dans n8n, nous allons donc récupérer l’appel API et les données, ainsi que répondre avec l’url de la tâche Notion crée :

On va modifier notre webhook :

  1. HTTP Method -> Passer à POST
  2. Respond -> Passer à “Using ‘respond to Webhook’ Node”

On rajouter d’ailleurs, le node en question :

On va renvoyer les données en json à notre shortcut avec les bonnes variables :

Conclusion

Nous venons de voir :

  • Comment déclencher une action dans n8n avec un shortcut IOS et transmettre des données
  • Comment fonctionne les webhook sur n8n
  • Comment renvoyer des données a un shortcut IOS

Un éventail de possibilité s’offre maintenant à vous pour vos workflows 🤩

n8n : Une alternative à Zapier, Make et IFTTT ? (avec installation docker et exemple d'utilisation)

/!\ Article non sponsorisé /!\

Aujourd’hui je vous présente N8N, un outil que j’utilise souvent dans le cadre de projet personnel ou professionnel qui permet d’interconnecté différentes API et d’effectuer des transformation, insertion et suppressions par le biais d’une interface facile à prendre en main. Un outil très utiliser par les “no-codeur”. En NO-CODE on parle également d’outil d’automatisation.

Capture d’écran d’un exemple de Workflow sur le site de N8N

L’intérêt de N8N est qu’il s’agit d’un projet “faircode” (on reviendra après sur cette licence) souvent mis à jours et que vous pouvez avoir une version héberger chez vous.

Un marché très concurrentiel

N8N n’est pas le seul sur le marché, bien au contraire. Il existe bon nombre d’outil plus où moins cher sur le marché voici quelques exemples :

  • Zapier (0€ pour 100 tâches par mois, puis à partir de 18,26€ par mois pour 750 tâches par mois)
  • Make (0$ par mois pour 1000 ops, puis à partir de 9$ par mois pour 10 000 ops)
  • IFTTT (0€ par mois pour 2 Applets, puis à partir 2,30€ par mois)
  • Microsoft Power Automate (à partir de 15$ par mois/utilisateurs ou 0,60$ par run)
  • …bien d’autres

Les prix qui sont notés ici sont datés de l’écriture de ce billet. Il faut également faire attention, la “tâche”, “opération” ou “workflow” ce défini de façon différente selon les outils, il est important de faire différents tests d’un même workflow sur plusieurs outils pour comparer. Par exemple, une “ops” sous Make va représenter souvent simplement l’envoi d’une ligne alors que sous Zapier il s’agit d’une exécution d’un workflow (ou Zaps) en entier.

Je vais pas faire de comparaison pousser ici, mais de ce que j’ai pu voir, Zapier à plus de paramètres et il conviendra mieux aux développeurs, Make est très “user friendly” avec une interface facile à prendre en main et donc idéal pour les débutants. Pour IFTTT (ou définition), il dispose de beaucoup d’intégration disponible pour IOT, il conviendra donc mieux à ceux qui cherchent à automatiser leurs objets connectés. Pour Microsoft Power Automate, il sera forcément mieux intégré à un environnement Microsoft.

Pourquoi utiliser N8N ?

Du coup, pourquoi choisir N8N qui n’est pas dans la liste précédente ? 😄

  • Le prix est le premier argument : en hébergeant la solution moi-même avec du docker, je ne paye pas l’exécution d’un Workflow et j’ai un nombre de Workflow illimités. Par contre si vous souhaitez ne pas héberger la solution, vous pouvez toujours prendre un instance chez N8N voici les prix (selon les modèles, vous pouvez bénéficier d’autres fonctionnalités tel que le versionning, la sauvegarde des identifiants dans un vault ou le SSO pour le modèle entreprise par exemple.) :

Tarification sur le site de N8N

  • FairCode” (pas d’open-source mais l’accès au code) : Et oui vous pouvez accéder au code source de N8N (lien vers le github). Vous pouvez contribuer, à la documentation mais également proposer vos propre node sur npm (les nodes sont les nœuds qui permettent de communiquer avec une API existante ou effectuer des transformation de données).

“Faircode licence” ? N8N est un logiciel Fair-code, c’est à dire qu’il est qu’il est libre d’utilisation, son code est généralement publique mais il peut être limité en fonctionnalité par ces auteurs. Pour plus information vous pouvez allez à la page dédié sur la documentation de N8N

Pourquoi ne pas utiliser N8N ?

Il y a aussi des mauvais côtés que j’ai noté :

  • Pas de possibilité de testé N8N sur leurs serveurs sans payer (comme noté plus haut sauf si vous utilisez du docker, l’intérêt est de l’installer sous cette configuration.)
  • Les applications de bureau sont arrivées en fin de support : avant on pouvez installer N8N directement sous Windows avec un .exe ou sur MacOS avec une application, mais N8N a arrêter le support.
  • Certains node ne dispose pas de tous les appels API et ne sont pas toujours mis à jours.
  • Il est possible d’insérer du code mais uniquement en Javascript pour le moment (le python en bêta).
  • Peut ce montrer moins “user friendly” que Make ou Zapier par moment.

Installation de N8N avec docker-compose

💡

Passer cette étape si vous souhaité utiliser la version SAAS de l’outil

Maintenant que les présentation sont fait avec N8N, on va passer à l’installation. La suite, dans le cadre où vous n’utilisez pas la version SAAS de l’outil.

Prérequis

Lancer un conteneur N8N :

Fenêtre de terminal
docker run -it --rm --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n docker.n8n.io/n8nio/n8n

Docker-compose avec Postgres :

On peut aussi avec docker-compose relier N8N à une base de données Postgres pour plus de performance.

Voici le squelette :

Le .env va permettre de définir les mot de passes, nom d’utilisateurs et nom de la BDD :

POSTGRES_USER=changeUser POSTGRES_PASSWORD=changePassword POSTGRES_DB=n8n POSTGRES_NON_ROOT_USER=changeUser POSTGRES_NON_ROOT_PASSWORD=changePassword

On va créer une instance de N8N avec Postgres avec docker-compose :

version: '3.8'
volumes:
db_storage:
n8n_storage:
services:
postgres:
image: postgres:11
restart: always
environment:
- POSTGRES_USER
- POSTGRES_PASSWORD
- POSTGRES_DB
- POSTGRES_NON_ROOT_USER
- POSTGRES_NON_ROOT_PASSWORD
volumes:
- db_storage:/var/lib/postgresql/data
- ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
healthcheck:
test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
interval: 5s
timeout: 5s
retries: 10
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
- DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
ports:
- 5678:5678
links:
- postgres
volumes:
- n8n_storage:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy

Le init-data.sh permet de crée les utilisateurs :

#!/bin/bash
set -e
if [ -n "${POSTGRES_NON_ROOT_USER:-}" ] && [ -n "${POSTGRES_NON_ROOT_PASSWORD:-}" ]; then
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE USER ${POSTGRES_NON_ROOT_USER} WITH PASSWORD '${POSTGRES_NON_ROOT_PASSWORD}';
GRANT ALL PRIVILEGES ON DATABASE ${POSTGRES_DB} TO ${POSTGRES_NON_ROOT_USER};
EOSQL
else
echo "SETUP INFO: No Environment variables given!"
fi

N’oublier pas de changer les droits du fichier :

chmod 755 init-data.sh

Utilisation de N8N

Bon maintenant que l’installation de nos conteneurs docker est terminé, si on passé aux choses intéressantes ?

Un peu de vocabulaire :

  • Les workflows -> Un workflow est un ensemble nodes qui sont exécutés pour effectuer des actions qui permettent de faire des choses. Il sont exécutés par un “trigger”
  • Les triggers -> Les triggers sont des nodes permettent de déclencher des Workflows (Ex: Toutes les heures, quand un webhook est appelé ou via un autre workflow 😊)
  • Les nodes -> les nodes, c’est un peu coeur de N8N, si c’était de la programmation ce serait des fonctions. il permettent d’effectuer une action sur une API (récupérer des informations, poster un message…etc) ou une transformation (convertir une date, enlever du texte dans une phrase…etc)
  • Les credentials -> La où vous enregistrerez vos identifiants pour vous connecter aux applications.

Après que vous aillez crée votre compte et que vous vous soyez connectez. Voici l’interface d’accueil :

Interface d’accueil d’N8N

Exemple de Workflow N8N (Notion + Telegram)

Dans cette exemple “basique” de Workflow je vous montre comment envoyer une notification Telegram quand une nouvelle page est ajouté à Notion.

D’abord les credentials :

Pour Notion : rendez-vous ici pour créer votre première intégration. En cliquant sur le ”+” :

Création d’une intégration dans Notion

Une fois l’intégration crée, pensez à copier l’integration secret nous en aurons besoin juste après.

Dans Notion les intégrations n’accède pas à toutes les BDD (et tant mieux 😊) il va falloir lui dire à qu’elle BDD nous souhaitons lui donner accès.

Prenons par exemple une liste des tâches simple. Vous pouvez en cliquant sur les options de la BDD ajouter une nouvelle connections vers votre integration :

Une fois ceci fait vous pouvez voir les droits que l’integration a sur votre BDD :

Ajouter le credential Notion dans N8N :

Allez dans credentials (menu à gauche) > add credentials :

Ajouter un credential dans N8N

Entrer votre secret que vous avez précédemment récupéré (vous pouvez renommer le credential pour ne pas vous y perdre quand vous en avez beaucoup) :

Une fois entrée, un test confirme la connexion.

On va tout de suite tester que notre BDD remonte bien :

Dans Workflows > add Workflow :

On va ensuite rajouter notre premier node : un trigger manually. Ceci va permettre d’executer le Workflow lors de l’appui du bouton en bas au centre.

Création du trigger “manually”

Cliquer ensuite sur le ”+” à coté du node “Manually” pour relier un nouveau node et chercher les nodes Notion :

Choisir “get many database pages” pour récupérer toutes les pages d’une BDD.

Dans “credential” choisir le credential que vous venez de créer :

Choix du credential dans le node

Choisir ensuite votre BDD Notion (seul les BDD que vous avez autorisé préalablement peuvent remonter). Le “Return All” permet de remonter tous les éléments d’une BDD (par défaut 50 éléments ) :

Choix de la BDD Notion dans le node Notion

Vous pouvez quitter l’édition du node (en cliquant en dehors de celui-ci).

Il ne vous reste plus qu’à executer :

Execution du Workflow

Si vous double cliquer sur notion vous pouvez voir dans l’édition du node :

  • 1. L’entrée des données dans le node (ici rien car il s’agit d’un trigger manually)
  • 2. La sortie du node Notion avec nos différentes page de notre Base de données
  • 3. Les boutons permettant de voir les données avec différentes vue (sous format Table, sous format JSON ou sous format de schema)

Interface d’un node

Félicitation vous venez de remonter des données de Notion dans N8N ! 👏

Passons à la phase suivante -> Le bot Telegram.

La première étape est d’entamé la conversation avec le BotFather, c’est l’outil de Telegram pour créer les bots 🤠 (un bot pour crée des bot en somme).

Le BotFather

Commencé par lui demander de crée un nouveau bot avec la commande :

Fenêtre de terminal
/newbot

création du bot

Une fois ceci fait, donner un nom à votre bot (attention celui-ci doit finir par bot à la fin). Vous obtenez alors une clé api :

Clé API pour pouvoir utiliser un bot Telegram

Copier cette clé en cliquant dessus et ajouter la aux credentials N8N :

Une fois ceci fait lancer une conversation avec votre nouveau bot :

Première échange avec notre chatbot

Ce /start que nous venons d’envoyer en débutant la conversation va nous permettre de récupérer l’id de cette conversation avec notre bot.

Pour récupérer l’id de la conversation avec notre bot, on peut utiliser N8N avec un Telegram Trigger connecté à notre credential précédemment rajouté. Il faut cliquer sur le bouton “Listen for Event” pour récupérer l’évènement du /start écris à notre bot. L’ID de la conversation sera dans la sortie

Vous allez pouvoir ensuite envoyer un message test avec un node Telegram send message comme ceci :

Envoi d’un message test dans Telegram

Si tout ce passe bien vous devriez recevoir ceci via Telegram :

Pour désactiver le “This message was sent automatically with n8n” regarder du côté des Additional Fields.

Revenons à notre but principal : envoyé une notification Telegram quand une tâche dans Notion est crée.

Pour cela on va faire un algorithme très simple avec N8N :

Algorithme de notre Workflow pour N8N

⁉️

Pourquoi décochée la notif Telegram dans Notion ? Tout simplement pour éviter de recevoir plusieurs fois la notification. Comme notre Workflow va s’executer plusieurs fois (exemple : toutes les 5 minutes) il faut empêcher le Workflow de renvoyer la même notification.

Dans Notion on va crée un nouveau champ “Notif Telegram” :

Création du nouveau champ Notif Telegram

Dans N8N on va rajouter un if juste après notre Node Notion qui permet de récupérer la BDD :

Ajout du if dans N8N

Puis dans notre “if” :

  • 1. On va mettre une condition type “Boolean” (car la case à cochée sous Notion retourne True ou False).
  • 2. On va utiliser une valeur de type “Expression” ceci pour permettre d’utiliser les variables dans N8N.
  • 3. On clique/glisse notre variable qui contient la case à cochée
  • 4. On clique sur le bouton pour l’activer, cela permet de passer la valeur qui répondra à l’opération “Equal” à “True”

En conclusion de cette étape cela permet de dire “si la case est cochée dans Notion pour notre page, alors on continu vers le prochain node”.

Si “Notif Telegram” est cochée

💡

Pour l’exemple, cochée une case de la base Notion et cliquer sur “Execute Workflow

On va ensuite relier nos différents N_odes_ comme ceci :

Notre Workflow qui avance

Dans le node Telegram on va faire quelques modification pour ajouter des indications 😎 :

Avec les expressions nous rajoutons des informations à notre notification

On peut exécuter pour tester :

Génial vous avez votre belle notification 👏 !!!

Il nous manque une chose pour que la notification de tâche ne s’exécute qu’une fois, pour cela rien de plus simple, on va rajouter un node pour modifier une propriété de la page :

modifier une page d’un database

Ensuite on va mettre le node de modification de notre page à la suite du “if” comme ceci :

Ensuite il suffit d’indiquer l’url de la page Notion à modifier puis de mettre notre propriété “Notif Telegram” en décochée :

Il ne vous reste plus qu’à remplacer le trigger Manually par un trigger “On a schedule” pour exécuter notre Workflow toutes les 5 minutes (par exemple, mais selon votre besoin).

Mise en place du Cron

Votre Workflow final est enfin celui-ci :

Le Workflow final

Conclusion

N8N est un outil puissant permettant d’automatiser des tâches et de transformer la donnée. Les workflow sont simple à mettre en place, mais demandes plus de base en programmation que ces concurrents (notamment pour l’utilisation des expressions). Dans les autres avantages que l’on pourra citer, la capacité d’être selfHosted et un coût mieux maîtriser que ces concurrents.

Je continuerai à faire des articles dédiés à des Workflow N8N dans les prochaines semaines pour vous montrer les possibilités de l’outil.