
Requisitos previos
- Acceso de administrador en Corgea
- Permiso para crear flujos de trabajo en tu espacio de trabajo de Slack
Configurar Slack Workflow Builder
Utiliza Slack Workflow Builder para asignar los campos de nivel superior del payload de Corgea a un mensaje del canal.1
Crear un flujo de trabajo
- En Slack, abre el menú de tu espacio de trabajo
- Ve a Herramientas → Generador de Flujos de Trabajo
- Haz clic en Crear
- Elige Webhook como disparador
- Nombra el flujo de trabajo y continúa
2
Configurar pasos del flujo de trabajo
- Copia la URL del webhook de Workflow Builder (
hooks.slack.com/triggers/...) - En el paso del desencadenador Webhook, añade variables cuyos nombres coincidan con las claves de nivel superior de Corgea (Slack no detecta automáticamente los campos del payload). Añade al menos:
message,pull_request_id,scan_url,true_positive_count,scan_id,event_type,project_name,status,branch,company - Añade un paso Enviar un mensaje (es obligatorio: Corgea no publica por sí solo en Slack)
- Utiliza Insertar una variable para insertar esas variables del webhook en el mensaje; escribir el texto
{message}no funcionará
scan.completed que Corgea envía a Workflow Builder (los campos anidados project, summary y scheduled_scan_ids no se incluyen):scan.failed, el cuerpo plano también incluye error en el nivel superior cuando está disponible.Empieza por message para obtener un resumen listo para enviar y añade pull_request_id, scan_url y true_positive_count para el triaje de pull requests.El texto de message para un escaneo completado utiliza el número de verdaderos positivos (no el total de hallazgos):
Scan completed for {project} (PR #N): X true-positive finding(s) [(Y with fixes)]. View: {scan_url}
Y with fixes cuenta correcciones solo entre esos hallazgos realmente positivos.- Termina y publica el flujo de trabajo
3
Configurar en Corgea
- Ve a Integraciones → Webhooks
- Crea un webhook
- Establece Tipo en
Slack - Introduce un nombre y pega la URL del Workflow Builder
- Suscríbete a
scan.completed,scan.failedo ambos; también puedes añadirscan.started - En Filtros de eventos de escaneo, de forma opcional:
- Solo escaneos de pull request / merge request — omite los escaneos que no son de PR
- Solo escaneos completados con hallazgos verdaderos positivos — omite
scan.completedcuandotrue_positive_countes 0 (scan.failedno se ve afectado)
- Haz clic en Crear Webhook y guarda la clave secreta de un solo uso
- Haz clic en Test para confirmar la entrega
Resultado esperado de la prueba del webhook
Cuando haces clic en Probar Webhook en un destino de Slack Workflow Builder, Corgea envía una muestra plana como:company coincide con los eventos de escaneo reales. company_id contiene el mismo valor para los consumidores antiguos de Test. Los destinos que no son de Slack reciben los mismos campos anidados en data dentro del sobre habitual.
Espera:
- HTTP 2xx de Slack (no 400
invalid_workflow_input) - Un mensaje de Slack no vacío cuando asignes la variable de nivel superior
message - Nombres de variables que coincidan con los eventos de producción, para poder asignar durante la prueba el número de PR, el enlace al escaneo y el recuento de verdaderos positivos
Contenido de notificaciones
Para el generador de flujos de trabajo de Slack (Type = Slack + hooks.slack.com/triggers/...), mapea estos campos de nivel superior:
true_positive_count coincide con el recuento de seguridad de la interfaz de escaneo: excluye status=false_positive, hold_reason=false_positive y detected_by=code-quality. Los campos anidados como summary, project, scheduled_scan_ids, scan_errors, created_at y processed_at permanecen disponibles en data para Zapier/Other (y en el historial de entregas), pero no se aplanan para Slack Workflow Builder.
Notas de compatibilidad
- Zapier / Otros: siguen recibiendo el sobre anidado (
event_id,event_type,timestamp,data), incluyendodata.message,data.summary, y los nuevos campos de triaje bajodata. - Configuraciones existentes de Slack Workflow Builder que asignaban campos
data.*anidados dejarán de funcionar; vuelve a asignarlos a claves de nivel superior (message, nodata.message). - Historial de entregas en Corgea almacena el sobre anidado incluso cuando Slack recibe un cuerpo HTTP plano.
- Los eventos que no son de escaneo de un webhook de Slack Workflow Builder no se aplanan; mantenlos en Zapier/Other o utiliza un Custom Body si necesitas variables de Slack.
Incoming Webhooks frente a Workflow Builder
- Recomendado: URL de Workflow Builder (
hooks.slack.com/triggers/...) con un paso Enviar un mensaje. Corgea aplanascan.*ywebhook.testcuandoType = Slack. - Incoming Webhooks (
hooks.slack.com/services/...): no se pueden guardar a menos que añadas un Custom Body cuyo JSON renderizado contenga una cadenatextno vacía en el nivel superior (texto alternativo de Slack; también se permiteblocks).{"text": "{{message}}"}solo funciona si el webhook se limita ascan.started/scan.completed/scan.failed/scheduled_scan.daily_report({{message}}está vacío en los demás eventos). Sin un cuerpo válido, las entregas fallan y el webhook puede pausarse automáticamente.
Gestión de integraciones existentes de Slack
Si aún tienes integraciones en la fila obsoleta de Slack, abre Ver todo para probarlas o eliminarlas:
Opciones de personalización
Con Workflow Builder, puedes:- Enruta mensajes a diferentes canales por gravedad o proyecto
- Añadir recordatorios o pasos de seguimiento
- Construye lógica condicional alrededor de los resultados del escaneo (por ejemplo, solo notifica cuando
true_positive_countes mayor que 0) - Reutilizar las mismas variables del payload en varias acciones
