Dale a cada solicitud un ciclo de vida real, no solo un envío
Crea el formulario, agrega estados de workflow como Draft → Review → Released, adjunta un botón de chat que lo abre con un clic, y luego envía, actualiza y transiciona respuestas hasta que estén listas — todo scripteable desde la terminal.
Los formularios en Dailybot no son de “llenar una vez y olvidar.” Dale a uno un workflow — Draft → Review → Released, o cualquier secuencia hasta 20 estados — y cada respuesta lleva su propio current_state, los movimientos que su remitente puede hacer a continuación (allowed_transitions) y un historial completo de quién lo movió y cuándo.
Esta página recorre todo el ciclo: crea el formulario y sus preguntas, define permisos y un atajo de chat, ábrelo con un solo clic desde un mensaje, y luego envía, actualiza y transiciona respuestas hasta que el workflow diga que están listas. Constrúyelo con la CLI, la API, o pidiéndole a un agente que tenga instalado el skill pack de Dailybot.
Constrúyelo paso a paso
Crea el formulario y siembra su primera pregunta
dailybot form create -n "Nombre" necesita al menos una pregunta al momento de crear — pasa --questions-file con un array JSON de preguntas text, multiple_choice, boolean o numeric, o agrégalas una a una después con dailybot form questions add. Un formulario sin preguntas se rechaza con 400 questions_required.
Define los estados de workflow, los permisos y un comando de chat
dailybot form config <form_uuid> --state "Draft:#9CA3AF" --state "Review:#F59E0B" --state "Released:#10B981" activa un workflow; --can-change-states restricted junto con --change-states-team define quién puede avanzarlo, y --command abre el formulario desde el chat como @dailybot <comando>.
Ábrelo directo desde un botón de chat
Adjunta callback_form a un botón interactivo — en la API send-message o en el JSON de --buttons de la CLI — y al hacer clic se abre el formulario para esa persona, sin necesidad del comando @dailybot. callback_form toma el UUID del formulario y es mutuamente excluyente con los otros cuatro tipos de callback.
Complétalo, o continúa un borrador
dailybot form responses <form_uuid> --latest busca una respuesta en progreso antes de empezar una nueva. Envía una nueva con dailybot form submit --content '{...}', o continúa con dailybot form update — ambos aceptan --automation y --source para marcar envíos scripteados.
Mueve la respuesta por sus estados
Lee allowed_transitions y can_change_state de la respuesta antes de moverla. dailybot form transition <form_uuid> <response_uuid> <to_state> solo acepta los movimientos que la audiencia del llamante permite — pasa la clave del estado o su etiqueta, la CLI la resuelve.
Ve qué se completó, filtrado como necesites
dailybot form responses --source automation --flow-status pending --search "proveedor" filtra por origen del envío, estado de aprobación y palabra clave — además de lo que los canales de reporte del formulario ya publicaron cuando llegaron las respuestas.
Míralo en acción
Una respuesta de formulario simulada avanzando por sus estados de workflow — no se envía ningún formulario o mensaje real.
Nueva solicitud de proveedor lista para intake
Haz clic en "Abrir formulario" para iniciar la respuesta.
Recetas para copiar y pegar
curl -sS -X POST 'https://api.dailybot.com/v1/send-message/' \
-H 'X-API-KEY: $DAILYBOT_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"message":"Nueva solicitud de proveedor lista para recepción","target_channels":["C0123456789"],"buttons":[{"label":"Abrir formulario","button_type":"interactive","value":"open_vendor_form","callback_form":"$VENDOR_FORM_UUID"}]}'
dailybot form create -n "Vendor Request" \
--questions-file ./vendor-questions.json \
--state "Draft:#9CA3AF" --state "Review:#F59E0B" --state "Released:#10B981" \
--can-change-states restricted --change-states-team "Procurement" \
--report-channel $PROCUREMENT_CHANNEL_UUID \
--command vendor-request
RID=$(dailybot form responses $VENDOR_FORM_UUID --latest --json | jq -r '.[0].uuid // empty')
if [ -z "$RID" ]; then
RID=$(dailybot form submit $VENDOR_FORM_UUID \
--content '{"'"$VENDOR_NAME_QID"'":"Acme Supplies"}' --yes --json | jq -r '.uuid')
fi
dailybot form transition $VENDOR_FORM_UUID "$RID" review --yes
dailybot chat send -c C0123456789 -m "Nueva solicitud de proveedor lista para recepción" \
--buttons '[{"label":"Abrir formulario","button_type":"interactive","value":"open_vendor_form",
"callback_form":"$VENDOR_FORM_UUID"}]'
Crea un formulario Vendor Request con estados Draft, Review y Released, siémbralo
con tres preguntas, restringe los cambios de estado al equipo de Procurement, y
publica un botón en #procurement que lo abra directamente.
¿Listo para transformar cómo trabaja tu equipo?
Únete a miles de equipos que usan Dailybot para ahorrar tiempo, impulsar el engagement y tomar mejores decisiones.