var status = data.status || 'unknown'; var emoji = status === 'firing' ? '🔴' : (status === 'resolved' ? '🟢' : '🟡'); var title = data.title || ('[' + status.toUpperCase() + '] Grafana Alert'); var alerts = data.alerts || []; var lines = [emoji + ' ' + title]; var htmlParts = ['' + emoji + ' ' + title + '']; for (var i = 0; i < alerts.length && i < 5; i++) { var a = alerts[i]; var labels = a.labels || {}; var ann = a.annotations || {}; var name = labels.alertname || ''; var summary = ann.summary || ann.description || ''; var instance = labels.instance || labels.job || ''; var severity = labels.severity || ''; var aStatus = a.status || ''; var genURL = a.generatorURL || ''; var aEmoji = aStatus === 'resolved' ? '🟢' : '🔴'; if (alerts.length > 1) { var alertLine = aEmoji + ' ' + (name || 'Alert') + (severity ? ' [' + severity + ']' : '') + (instance ? ' \u2014 ' + instance : '') + (summary ? ': ' + summary : ''); lines.push(alertLine); htmlParts.push(alertLine + (genURL ? ' \u2197' : '')); } else { if (name && name !== title) { lines.push('Alert: ' + name); htmlParts.push('Alert: ' + name); } if (severity) { lines.push('Severity: ' + severity); htmlParts.push('Severity: ' + severity); } if (instance) { lines.push('Instance: ' + instance); htmlParts.push('Instance: ' + instance); } if (summary) { lines.push(summary); htmlParts.push(summary); } if (genURL) { lines.push('View: ' + genURL); htmlParts.push('View in Grafana'); } } } if (alerts.length === 0 && data.message) { lines.push(data.message); htmlParts.push(data.message); } if (alerts.length > 5) { var more = '(+' + (alerts.length - 5) + ' more alerts)'; lines.push(more); htmlParts.push('' + more + ''); } result = { version: 'v2', plain: lines.join('\n'), html: htmlParts.join('
'), msgtype: 'm.notice' };