Skip to content

Comandos Personalizados - Dailybot Desarrolladores

Construye comandos ChatOps personalizados para Dailybot: comandos de texto, formularios en chat y comandos HTTP con respuestas dinámicas.

Comandos Personalizados

Los comandos personalizados te permiten extender Dailybot con tus propias interacciones ChatOps. Los usuarios activan comandos escribiendo una palabra clave en el chat, y Dailybot responde con texto, formularios o contenido dinámico desde tus endpoints.

Tipos de Comandos

Dailybot soporta tres tipos de comandos personalizados:

  • Comandos de Texto — Devuelven una respuesta de texto predefinida
  • Comandos de Formulario en Chat — Activan formularios nativos que recopilan datos
  • Comandos HTTP — Envían peticiones a tus endpoints para respuestas dinámicas

Comandos de Texto

Los comandos de texto devuelven una respuesta simple y predefinida. Son útiles para información de acceso frecuente como valores de empresa, horarios de guardia o enlaces de referencia rápida.

Comandos de Formulario en Chat

Los comandos de formulario activan formularios nativos de Dailybot que recopilan datos estructurados. Las respuestas se almacenan en tablas de Dailybot. Los usuarios pueden buscar respuestas escribiendo el nombre del comando seguido de "search" y un término de búsqueda.

Comandos HTTP

Los comandos HTTP son el tipo más poderoso. Cuando un usuario activa el comando, Dailybot envía una petición POST a tu endpoint con contexto sobre el usuario y el comando, y tu endpoint devuelve la respuesta para mostrar en el chat.

HTTPS Requerido

Tu endpoint debe usar HTTPS. Dailybot no enviará peticiones a endpoints HTTP.

Header de Autenticación

Dailybot envía un header X-Dailybot-Signature con cada petición. Este contiene la firma del comando para que tu endpoint pueda verificar que la petición proviene de Dailybot.

Payload de la Petición

El cuerpo POST incluye los siguientes campos de contexto:

Campos del Payload

Name Type Required Description
intent string Required Nombre del intent del comando configurado en Dailybot.
event_timestamp string Required Marca de tiempo ISO 8601 de cuando se activó el comando.
organization_uuid string Required UUID de la organización.
user_uuid string Required UUID del usuario que activó el comando.
user_full_name string Required Nombre completo del usuario que activó el comando.
user_role string Required Rol del usuario (admin, member, etc.).
is_channel_message boolean Required Si el comando se activó en un canal (true) o mensaje directo (false).
platform string Required Plataforma de chat (slack, msteams, google_chat, etc.).
params.query string Optional Texto adicional pasado después del nombre del comando.
Ejemplo de payload de petición
{
  "intent": "deploy",
  "event_timestamp": "2026-02-14T12:00:00Z",
  "organization_uuid": "org-1234-abcd",
  "user_uuid": "usr-5678-efgh",
  "user_full_name": "María García",
  "user_role": "admin",
  "is_channel_message": true,
  "platform": "slack",
  "params": {
    "query": "production v2.1.0"
  }
}

Tip

Usa params.query para construir comandos flexibles. Los usuarios pueden agregar parámetros después del nombre del comando (ej., /deploy production v2.1.0), y el texto adicional se convierte en el query string.

Formatos de Respuesta

Texto Plano

La respuesta más simple: devuelve un cuerpo de texto como cadena JSON válida. Dailybot lo mostrará directamente en el chat.

Respuesta de texto plano
"Despliegue iniciado para production v2.1.0 ✅"

Campo JSON

Devuelve un objeto JSON y especifica qué campo renderizar como respuesta en la configuración de tu comando.

Respuesta JSON
{
  "status": "success",
  "message": "Despliegue iniciado para production v2.1.0",
  "build_id": "build-789"
}

Botones Interactivos

Devuelve un objeto JSON con un mensaje, imagen opcional y un array de botones para flujos de trabajo interactivos.

Campos de Botón

Name Type Required Description
label string Required Texto visible en el botón.
label_after_click string Required Texto mostrado después de hacer clic.
value string Required Debe incluir el nombre del intent del comando. Texto adicional se convierte en params.query.
button_type string Required Debe ser "Command".
Respuesta con botones interactivos
{
  "message": "Elige un entorno para desplegar:",
  "buttons": [
    {
      "label": "Production",
      "label_after_click": "Desplegando en production...",
      "value": "deploy production",
      "button_type": "Command"
    },
    {
      "label": "Staging",
      "label_after_click": "Desplegando en staging...",
      "value": "deploy staging",
      "button_type": "Command"
    }
  ]
}

Tiempo Límite de Respuesta

Timeout de 10 Segundos

Tu endpoint debe responder en menos de 10 segundos. Si tu operación toma más tiempo, contacta al equipo de soporte de Dailybot para discutir opciones de respuesta asíncrona.

Ejemplo de Código

Dailybot proporciona un ejemplo en CodeSandbox que demuestra una implementación Node.js de un endpoint de comando HTTP.

Mejores Prácticas

  • Siempre valida el header X-Dailybot-Signature para verificar las peticiones
  • Usa params.query para comandos flexibles y multipropósito
  • Mantiene las respuestas bajo 10 segundos — delega el procesamiento pesado a trabajos en segundo plano
  • Usa botones interactivos para construir flujos de trabajo de múltiples pasos
  • Devuelve mensajes de error útiles cuando los inputs son inválidos
  • Registra las peticiones para depuración — incluye el user_uuid para rastreo