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