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 usuários activan comandos escribiendo una palabra clave en el chat, y Dailybot responde con texto, formularios o conteúdo dinámico desde tus endpoints.

Tipos de Comandos

Dailybot soporta tres tipos de comandos personalizados:

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

Comandos de Texto

Los comandos de texto devuelven una resposta 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 respostas se almacenan en tablas de Dailybot. Los usuários pueden buscar respostas 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 usuário activa el comando, Dailybot envía una petición POST a tu endpoint con contexto sobre el usuário y el comando, y tu endpoint retorna la resposta para exibição en el chat.

HTTPS Obrigatório

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 contém 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.
Exemplo de payload de requisição
{
  "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 usuários 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 Resposta

Texto Plano

La resposta más simple: retorna un cuerpo de texto como cadena JSON válida. Dailybot lo exibiçãoá directamente en el chat.

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

Campo JSON

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

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

Botones Interactivos

Retorna un objeto JSON con un mensagem, 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".
Resposta 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 Resposta

Timeout de 10 Segundos

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

Exemplo de Código

Dailybot proporciona un exemplo 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 respostas bajo 10 segundos — delega el procesamiento pesado a trabajos en segundo plano
  • Usa botones interactivos para construir flujos de trabajo de múltiples pasos
  • Retorna mensagens de error útiles cuando los inputs son inválidos
  • Registra las peticiones para depuración — incluye el user_uuid para rastreo