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
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. |
{
"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
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.
"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.
{
"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". |
{
"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
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-Signaturepara verificar las peticiones - Usa
params.querypara 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_uuidpara rastreo