Saltar al contenido principal
Integraciones

Discord

Conecta el agente a Discord mediante el interactions endpoint, para responder slash commands y componentes.

Discord

La integración con Discord permite que el agente responda a slash commands y message components en servidores de Discord, mediante el interactions endpoint.

Accede desde el icono Configuración → pestaña Integraciones → tarjeta Discord.


Activar la integración

Activa el interruptor de la tarjeta de Discord. Los campos de configuración aparecen una vez activado.


Cómo funciona

  1. Un usuario ejecuta un comando (un slash command o un botón) en un servidor donde el bot está instalado.
  2. Discord envía la interacción al endpoint público de Roberty.
  3. Roberty valida la firma Ed25519 con la public key de la aplicación.
  4. El agente se ejecuta y la respuesta vuelve en la misma petición.
información

Esta integración no usa el gateway de WebSocket; funciona solo con el modelo HTTP de interactions. Eso simplifica la operación (no hay que mantener una conexión viva) pero la limita a comandos y componentes: los mensajes de los canales normales no se procesan.


Los campos de configuración

CampoObligatorioQué es
Bot TokenEl token de la pestaña Bot del Discord Developer Portal
Public KeyLa clave pública de la aplicación, en la pestaña General Information
Guild IDNoRestringe el bot a un único servidor (el ID del servidor de Discord)
Channel IDNoRestringe el bot a un único canal dentro de ese servidor

Crear el bot en el Discord Developer Portal

1. Crear la aplicación

  1. Entra en el Discord Developer Portal y crea una aplicación nueva.
  2. En la pestaña Bot, haz clic en Reset Token y anota el valor (se muestra una sola vez): ese es el Bot Token.
  3. En la pestaña General Information, copia la Public Key y el Application ID.

2. Configurar el interactions endpoint

En la pestaña General Information de la aplicación, pon en Interactions Endpoint URL:

https://agent-backend.roberty.app/integrations/discord/<AGENT_ID>

Sustituye <AGENT_ID> por el ID del agente de Roberty que recibirá las interacciones: usa Copiar ID en la parte superior de la pestaña Integraciones.

Al guardar, Discord envía un PING y exige una respuesta válida; el endpoint de Roberty ya responde correctamente, siempre que la public key esté configurada en el agente.

3. Configurar el agente en Roberty

Rellena Bot Token, Public Key y, opcionalmente, Guild ID y Channel ID para restringir el bot.

4. Añadir el bot al servidor

  1. En el portal de Discord, ve a OAuth2 → URL Generator.
  2. Marca el ámbito bot applications.commands y los permisos que quieras.
  3. Abre la URL generada y elige el servidor.

5. Registrar los slash commands

Regístralos mediante la API de Discord (con curl, por ejemplo):

bash
curl -X POST \
-H "Authorization: Bot TU_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"ask","description":"Preguntar al agente","options":[{"type":3,"name":"mensaje","description":"Tu pregunta","required":true}]}' \
"https://discord.com/api/v10/applications/APPLICATION_ID/commands"

Roberty toma el valor del primer parámetro de texto (tipo 3) como entrada del agente.


Validación de seguridad

Cada petición debe llevar:

  • X-Signature-Ed25519
  • X-Signature-Timestamp

Roberty comprueba la firma con la publicKey del agente y responde 401 Invalid signature si no cuadra.


Los tipos de interacción que atiende

TipoQué ocurre
1 PINGSe responde { type: 1 } automáticamente.
2 APPLICATION_COMMANDEjecuta el agente con el primer parámetro de texto.
3 MESSAGE_COMPONENTEjecuta el agente usando el custom_id como entrada.

La respuesta del agente se trunca a 2000 caracteres (el límite de Discord para un solo mensaje).


Referencias