Ir al contenido

Conector Notification

El conector Notification entrega cargas como mensajes a canales externos. El cuerpo del mensaje es o bien la carga serializada como JSON o una cadena renderizada desde una plantilla Go text/template.

Tipo de Conector: MeddleNotification

Canales Admitidos: slack, teams, email, microsoft365, webhook

  • channel (obligatorio): Uno de slack, teams, email, microsoft365, webhook
  • template: Cadena opcional de plantilla Go text/template. Los campos de la carga son accesibles como {{ .field }}. Si está vacía, la carga se codifica como JSON.
  • webhookUrl: URL de destino (usada por el canal webhook)
  • slackConfig: Opciones específicas de Slack
  • teamsConfig: Opciones específicas de Teams
  • emailConfig: Opciones de email SMTP
  • microsoft365Config: Opciones de la API Microsoft Graph
{
"type": "MeddleNotification",
"config": {
"channel": "slack",
"template": "Temperature alert: {{ .temperature }}°C on sensor {{ .sensor_id }}",
"slackConfig": {
"botToken": "xoxb-...",
"channel": "#alerts"
}
}
}

Campos de slackConfig:

  • botToken (obligatorio): Token OAuth del bot de Slack
  • channel (obligatorio): ID o nombre del canal (ej. #alerts)
{
"type": "MeddleNotification",
"config": {
"channel": "teams",
"template": "Machine {{ .machine_id }} stopped. Status: {{ .status }}",
"teamsConfig": {
"webhookUrl": "https://outlook.office.com/webhook/..."
}
}
}

Campos de teamsConfig:

  • webhookUrl (obligatorio): URL del webhook entrante configurado en Teams
{
"type": "MeddleNotification",
"config": {
"channel": "email",
"template": "Alert from sensor {{ .sensor_id }}: {{ .message }}",
"emailConfig": {
"smtpHost": "smtp.example.com",
"smtpPort": 587,
"from": "alerts@example.com",
"to": ["ops@example.com", "manager@example.com"],
"username": "alerts@example.com",
"password": "app-specific-password"
}
}
}

Campos de emailConfig:

  • smtpHost (obligatorio), smtpPort (obligatorio)
  • from (obligatorio, debe ser un email válido)
  • to (obligatorio, mínimo 1 destinatario)
  • username, password: Autenticación SMTP opcional

Envía correo a través de Microsoft Graph usando credenciales de cliente OAuth2. Requiere un registro de aplicación en Azure AD con el permiso de aplicación Mail.Send (consentido por administrador).

{
"type": "MeddleNotification",
"config": {
"channel": "microsoft365",
"template": "Production halted on line {{ .line_id }}",
"microsoft365Config": {
"tenantId": "00000000-0000-0000-0000-000000000000",
"clientId": "11111111-1111-1111-1111-111111111111",
"authMethod": "secret",
"clientSecret": "your-client-secret",
"fromAddress": "alerts@yourtenant.onmicrosoft.com",
"to": ["ops@yourtenant.onmicrosoft.com"],
"subject": "Production Alert",
"saveToSentItems": true
}
}
}

Campos de microsoft365Config:

  • tenantId (obligatorio), clientId (obligatorio)
  • authMethod: secret (por defecto) o certificate
  • clientSecret: Obligatorio cuando authMethod es secret
  • certificate: Obligatorio cuando authMethod es certificate. Proporciona o bien certificateFile + privateKeyFile (PEM) o pfxFile (+ pfxPassword opcional).
  • fromAddress (obligatorio, debe ser un email válido correspondiente a un buzón con licencia)
  • to (obligatorio, mínimo 1 destinatario)
  • subject: Asunto del email (por defecto Meddle Notification)
  • saveToSentItems: Cuando es true, el mensaje se guarda en los Elementos Enviados del buzón
{
"type": "MeddleNotification",
"config": {
"channel": "webhook",
"webhookUrl": "https://hooks.example.com/incoming",
"template": "{{ .machine_id }}: {{ .status }}"
}
}

Envía un cuerpo JSON { "message": "...", "data": { ...payload... } } a webhookUrl.

Las plantillas usan la sintaxis text/template de Go. Patrones comunes:

Temperature: {{ .temperature }}°C
{{ if gt .pressure 100.0 }}Pressure HIGH{{ end }}
Sensor {{ .sensor_id }} reported {{ .status }} at {{ .timestamp }}

Si no se configura ninguna plantilla, la carga completa se codifica como JSON como mensaje.

  1. Notificaciones a operadores ante violaciones de umbral
  2. Enrutamiento de incidentes a canales de guardia vía Slack o Teams
  3. Registro de auditoría vía webhook a un SIEM o endpoint HTTP
  4. Alertas de correo corporativo con OAuth de Microsoft 365 (sin contraseña SMTP necesaria)
  • Usa plantillas para mantener los mensajes cortos, legibles y accionables
  • Coloca Trigger o Rate Limiter por delante para evitar inundar los canales
  • Para Microsoft 365, prefiere autenticación por certificado en producción; rota los secretos regularmente
  • Usa el canal webhook al enviar a sistemas internos que no requieren una integración específica del proveedor
  • Alert - Alertas con estado, duración y enfriamiento
  • Trigger - Filtrar notificaciones por condición
  • Rate Limiter - Limitar la frecuencia de notificación