Saltearse al contenido

Webhook

Este componente actúa como el punto de entrada para conectar acciones realizadas en Discord con tu sistema de automatización Nappai. Cuando un usuario interactúa con tu bot en Discord (por ejemplo, haciendo clic en un botón, usando un comando o reaccionando a un mensaje), este receptor captura esos datos y los pone a disposición para que puedas construir flujos de trabajo automatizados. Es como un “oído” que escucha lo que sucede en tus servidores de Discord y los transmite a Nappai para tomar acciones.

¿Cómo funciona?

El componente opera capturando las peticiones que Discord envía cuando ocurre una interacción en tu bot. Discord envía una señal (webhook) con un mensaje JSON que contiene la información de lo que el usuario hizo.

Internamente, el receptor:

  1. Recibe y Validar: Confirma que la petición proviene de Discord y que el token de verificación es válido y no ha caducado (Discord impone un límite de tiempo muy estricto).
  2. Extrae Datos: Lee los campos importantes como el canal donde ocurrió la acción, el mensaje original y el contenido enviado por el usuario.
  3. Procesa: Pasa estos datos a los siguientes nodos de tu flujo para que puedas decidir qué hacer (guardar en una base de datos, enviar un correo, responder en el chat, etc.).
  4. Responde: Envía una confirmación rápida a Discord para evitar errores de tiempo de espera, asegurando que la interacción se procese correctamente.

Además, cuenta con una opción para guardar el mensaje en el historial del flujo, lo cual es útil para auditorías o para revisar interacciones pasadas.

Conexión y Credenciales

Este componente requiere configurar previamente una credencial en el panel de Nappai para poder interactuar con el servicio de Discord:

  1. Dirígete a la sección de Credenciales en tu panel de Nappai.
  2. Crea una nueva credencial del tipo Discord API y guarda los campos requeridos:
  3. En tu flujo de trabajo, selecciona la credencial guardada en el campo de entrada Credential de este nodo.

Entradas

Campos de Entrada

Los siguientes campos están disponibles para configurar este componente. Cada campo puede estar visible en diferentes operaciones:

  • Channel ID: Identificador único del canal de Discord donde ocurrió la interacción. Útil para aplicar reglas diferentes según el canal de origen.
  • Message ID: Identificador del mensaje original que generó la acción. Permite mantener el rastro de la conversación para ediciones posteriores o seguimientos.
  • Content: Texto o datos asociados a la interacción del usuario. Proporciona el contexto de lo que el usuario envió o solicitó.
  • Interaction Token: Token de verificación temporal necesario para responder a la interacción dentro del límite de tiempo impuesto por Discord.
  • Store Messages: Al activar esta opción, el componente guarda el mensaje en el historial del flujo para su registro y auditoría.

Salidas

Después de procesar la interacción, este componente genera los siguientes resultados que puedes conectar a nodos siguientes en tu flujo:

  • HTTP Response: Estructura de respuesta válida para Discord que confirma la recepción y evita errores de tiempo de espera.
  • Status: Indica el estado de la operación (ej. “success” o “acknowledged”), útil para saber si todo salió bien o para manejar errores.
  • Message ID: Identificador del mensaje original o editado, que puedes usar en nodos posteriores para editar respuestas o enviar seguimientos.

Ejemplo de Respuesta JSON

A continuación se muestra un ejemplo de lo que devuelve este componente al ejecutarse con éxito. Estas variables están disponibles para mapear en el siguiente nodo: json { “response”: { “status”: “acknowledged”, “headers”: { “Content-Type”: “application/json” }, “body”: { “type”: 0, “data”: { “content”: “Interacción recibida y procesada correctamente.” } } }, “status”: “success”, “message_id”: “1234567890123456789” }

Conectividad

Como nodo receptor, este componente se conecta lógicamente al primer nodo de acción o lógica que desees ejecutar después de una interacción en Discord. Por ejemplo:

  • Puedes conectar la salida a un nodo de Base de Datos para guardar el registro de la interacción.
  • Puedes conectarlo a un nodo de Enviar Mensaje para responder en el chat basado en lo que el usuario hizo.
  • También puede conectarse a otros webhooks o APIs si necesitas reenviar la información a otra plataforma externa.

La lógica de conexión suele ser: Discord WebhookLógica/AcciónRespuesta/Resultado.

Ejemplo de Uso

Escenario: Confirmación de Pedido desde Discord

  1. Un usuario hace clic en el botón “Confirmar Pedido” en un mensaje de tu bot en Discord.
  2. El componente Webhook detecta la acción y captura el Channel ID, Message ID y el Content con el texto “Confirmar Pedido”.
  3. Conectas este nodo a un nodo de Base de Datos donde mapeas el contenido para buscar el ID del pedido y marcarlo como “Pendiente de Confirmación”.
  4. El flujo continúa y envía una respuesta de confirmación al usuario en Discord.
  5. Gracias al message_id, el siguiente nodo puede editar el mensaje original en el chat para mostrar el estado actualizado “Confirmado”.

Consejos y Mejores Prácticas

  • Utiliza el campo Store Messages si necesitas mantener un registro histórico de las interacciones para auditorías o análisis posteriores.
  • Asegúrate de que el Channel ID coincida con el canal donde esperas recibir las interacciones; si tu bot está en múltiples canales, puedes usar este ID para aplicar lógica diferente según el origen.
  • El componente está optimizado para responder dentro del límite de 3 segundos de Discord; evita poner procesos muy pesados en el primer nodo conectado para mantener la fluidez.
  • Para flujos complejos, utiliza el Message ID de la salida para editar el mensaje original o enviar respuestas de seguimiento desde nodos posteriores.

Consideraciones de Seguridad

  • Nunca expongas los tokens ni las claves de API directamente en el código o flujos públicos; utiliza siempre el sistema de Credenciales de Nappai para gestionar la información sensible de forma segura.
  • El componente valida internamente las firmas de las peticiones de Discord para asegurar que solo se procesen interacciones legítimas de tu aplicación, protegiendo contra falsificaciones.
  • Al configurar la credencial, asegura que el Bot Token y la Public Key sean los correctos para tu aplicación en el portal de desarrolladores, ya que una configuración incorrecta impedirá la validación de las interacciones.