Transforme um botão de chat em um formulário de registro de incidentes
Pule a aba da ferramenta de incidentes dedicada: um botão Registrar incidente abre um modal curto direto no chat, e as respostas chegam para onde você as rotear.
Incidentes não esperam alguém abrir a ferramenta de plantão. Um botão Registrar incidente coleta exatamente o que a resposta precisa — severidade, serviço, um resumo de uma linha — em um modal que abre bem onde o incidente foi notado pela primeira vez, e então encaminha as respostas para onde vive seu processo de incidentes.
Esta página cobre o contrato do modal (modal_body, seus blocks, a marcação required em cada campo) e os dois lugares para onde você pode rotear o envio: seu próprio callback_url, ou direto para um workflow api_trigger via callback_workflow.
Construa passo a passo
Adicione um botão Registrar incidente
Anexe modal_body a um botão interativo. No Slack o modal é renderizado nativamente; no Microsoft Teams, Discord e Google Chat, o Dailybot coleta os mesmos campos de forma conversacional.
Desenhe os campos do modal
modal_body é { title, submit_label?, blocks[] } — de 1 a 10 blocos do tipo text, input ou divider, com tamanho serializado abaixo de 8 KiB. Cada bloco input precisa de um name que corresponda a ^[a-z][a-z0-9_]{0,62}$ e seja único dentro do modal, mais um label; marque-o como required para exigir o preenchimento.
Roteie as respostas
Os valores enviados chegam como modal_fields.<name> no callback que o botão carrega — callback_url para seu próprio servidor de gestão de incidentes, ou callback_workflow para entregar o incidente diretamente a um workflow api_trigger. Apenas um dos dois, como em qualquer outro botão.
Confirme o recebimento
Adicione uma auto-resposta response para que quem reportou veja a confirmação imediatamente — "Incidente registrado, plantão notificado" — sem esperar o sistema que recebe o callback responder.
Como flui
Um diagrama estático — nada aqui é clicável ou ao vivo.
Algo quebrou? Registre aqui.
Ilustrativo — respostas encaminhadas
{
"button_id": "[button-id]",
"modal_fields": {
"severity": "sev2",
"service": "checkout-api",
"summary": "Elevated 500s on checkout"
}
}Apenas ilustrativo — encaminhado para callback_url ou callback_workflow dependendo de como o botão está configurado. Veja a referência da API send-message para o contrato completo.
Receitas para copiar e colar
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":"Algo quebrou? Registre aqui.","target_channels":["C0123456789"],"buttons":[{"label":"Registrar incidente","button_type":"interactive","value":"report_incident","callback_url":"https://ops.example.com/hooks/incident","callback_auth":{"type":"bearer","token":"$INCIDENT_CALLBACK_TOKEN"},"modal_body":{"title":"Registrar um incidente","submit_label":"Enviar","blocks":[{"type":"input","name":"severity","label":"Severidade (sev1-sev4)","required":true},{"type":"input","name":"service","label":"Serviço afetado","required":true},{"type":"input","name":"summary","label":"Resumo","multiline":true,"required":true}]},"response":{"message":"Incidente registrado, plantão notificado."}}]}'
dailybot chat send -c C0123456789 -m "Algo quebrou? Registre aqui." \
--buttons '[{"label":"Registrar incidente","button_type":"interactive","value":"report_incident",
"callback_workflow":"$INCIDENT_WORKFLOW_UUID",
"modal_body":{"title":"Registrar um incidente","submit_label":"Enviar",
"blocks":[{"type":"input","name":"severity","label":"Severidade (sev1-sev4)","required":true},
{"type":"input","name":"service","label":"Serviço afetado","required":true},
{"type":"input","name":"summary","label":"Resumo","multiline":true,"required":true}]}}]'
Publique uma mensagem em #incidents com um botão Registrar incidente
que abra um modal pedindo severidade, serviço afetado e um resumo, e
então encaminhe as respostas para https://ops.example.com/hooks/incident.
Pronto para transformar como sua equipe trabalha?
Junte-se a milhares de equipes que usam o Dailybot para economizar tempo, impulsionar o engajamento e tomar melhores decisões.