Creando un nodo de N8N (I)

Cómo crear un nodo custom en N8N partiendo del ejemplo de uProc.io


4 min de lectura
Creando un nodo de N8N (I)

Este es el primer post de una serie de entradas donde explicaré como crear un nodo personalizado para utilizarlo dentro de un flujo de trabajo en vuestra instalación de N8N fácilmente.

Todo lo que explicaré a continuación se ha utilizado para crear el nodo de uProc.io, que en su momento se creó para uso interno, y que posteriormente fué publicado de forma oficial por parte del equipo de N8N.

¿Qué es uProc?

uProc es una navaja suiza que permite el acceso a bastantes herramientas que resuelven diferentes situaciones, como por ejemplo:

  • Audio: generar locuciones personalizadas multidioma.
  • Comunicación: enviar SMS, correos, invitaciones/mensajes en LinkedIn, verificar correos y teléfonos, descubrir correos profesionales, extraer datos desde LinkedIn ...
  • Empresa: obtener datos de empresas por nombre o geolocalizar las empresas, obtener empleados, ...
  • Finanzas: obtener IVAs según regiones/IPs o códigos postales, verificar tarjetas de crédito o cuentas bancarias, ...
  • Geográfico: localizar negocios locales, resolver geolocalizaciones por IP o direcciones parcial, ....
  • Imagen: generar capturas de páginas web, códigos QR, ...
  • Internet: obtener tecnologías, visitas o analizar la salud de cualquier sitio web o certificado SSL o datos de registros DNS.
  • Personal: enriquecer personas por correo, localizar LinkedIns de contactos, separar nombres completos, ...
  • Producto: enriquecer productos para ECommerce y verificar UPC/EAN...

Entre muchas otras capacidades.

¿Para qué necesitamos un nodo en N8N?

Desde N8N es posible conectarnos con cualquier API con el nodo HTTP.

Crear ese nodo normalmente requiere de unos conocimientos técnicos, y eso puede ser bloqueante para usuarios sin el conocimiento necesario.

Creando un nodo adaptado a tus necesidades puedes:

  • Facilitar el acceso a usuarios finales a tu API.
  • Poder utilizar tu API sin consultar la especificación técnica.
  • Crear procesos complejos que dependan de tu API.

Así pues, la idea es aprovechar una API ya existente, y crear un nodo para poder montar las llamadas de forma visual sin consultar la documentación técnica cada vez que se quiere hacer una consulta concreta.

Una vez creado el nodo, lo veremos disponible dentro de N8N y lo podremos agregar en nuestros flujos visuales con un simple click.

A continuación tenéis un ejemplo de un flujo complejo creado con el nodo de uProc, que envía invitaciones/mensajes a los nuevos usuarios dados de alta en una base de datos NoSQL Mongo:

Enviamos invitaciones o mensajes desde LinkedIn a los nuevos usuarios de uProc

Entendiendo la estructura de N8N

Para poder crear un nodo personalizado, es necesario entender en qué partes se divide un nodo de N8N.

Un nodo se divide en dos partes:

Credencial

Donde se define mediante código el tipo de credencial (Basic, Digest, Header, OAuth1, OAuth2, ...) que vamos a utilizar para poder llamar a la API desde nuestro nuevo nodo. El tipo de credencial definida aparece en la sección "Credentials":

Nodo

Donde se guarda el código que permite definir el comportamiento del nodo a nivel de UI y lo que pasará cuando le demos al botón "Execute Workflow".

Cada nodo está formado por diferentes secciones:

  • Resource:
    La sección es un desplegable que permite mostrar los diferentes tipos de operaciones que disponibles en el nodo.

    En el caso de uProc, un recurso es una de las categorías existentes dentro del sistema. Tenemos diferentes categorías, como por ejemplo: Communication, Geographical, Personal ...

  • Operation:
    Son las acciones u operaciones que podremos llamar dentro de cada recurso seleccionado.

    En nuestro caso, si hemos seleccionado el recurso/categoría "Communication", podremos llamar a herramientas del área de comunicación, como por ejemplo: comprobar si un correo existe, visitar un perfil de LinkedIn, obtener los correos genéricos de una empresa, ...

  • Parámetros:
    Una vez seleccionada la operación, aparecen los parámetros necesarios para ejecutar esa operación/acción. Los parámetros son completamente variables y dependen de cada acción.

  • Additional Options:
    Permite definir las opciones adicionales de la operación seleccionada.

    En nuestro caso, crearemos una opción para todas las acciones que permitirá enviar los resultados de la llamada a la API de uProc a un webhook creado en N8N.
Recurso, Operación, Parámetros y Opciones

Todos los puntos comentados anteriormente deberán de definirse mediante código Typescript dentro del nodo.

Analizando las necesidades del nodo


Es muy probable que inicialmente necesitéis solo algunas de las funcionalidades de vuestra API. O que queráis mostrar un montón de recursos y operaciones.

En los dos casos hay que analizar bien qué opciones queréis priorizar en el momento de crear vuestro nodo. Básicamente, es necesario saber quién utilizará inicialmente el nodo, y para que lo necesitará dentro de un flujo.

Una vez definido su uso futuro, es más fácil concretar qué opciones iniciales ha de tener el nodo.

Además, más adelante os explicaré como una gran cantidad de Recursos y Operaciones sin necesidad de tocar el código del nodo.

Esto os irá bien cuando tengáis muchos Recursos y Operaciones que van creciendo con el tiempo en vuestra API. Nuestro objetivo será separar la parte genérica y estática del nodo, de los datos variables como Recursos, Operaciones, Parámetros y Opciones adicionales.

Para lograrlo, os enseñaré cómo generar ficheros .ts de Recursos y Operaciones de forma dinámica, que contendrán todas los detalles de vuestra API.

En mi caso, ha sido necesario crear el nodo de esta forma para uProc, al existir más de 10 recursos y 420 operaciones, con múltiples parámetros para cada operación. Eso me obligó a crear un nodo genérico que cargaba los Recursos, Operaciones y Parámetros de forma dinámica desde ficheros .ts externos al código del nodo.

Próximamente...


En la próxima entrada mostraré el código básico necesario para crear los Recursos y Operaciones de un nodo para N8N.

Artículos Relacionados

¿Cómo configurar un nodo custom con n8n?
3 min de lectura
Tratamiento de textos con N8N
4 min de lectura
Instalación con Docker
3 min de lectura
Instalación con NPM
3 min de lectura

SUBIR

🎉 Te has suscrito con éxito a Comunidad N8N!
OK