Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
TypeScript
at incident-api
123456789101112131415161718192021222324252627282930import { Events, setupAnalytics } from "@openstatus/analytics";import { type ServiceContext, tryGetActorUserId } from "@openstatus/services";
const EVENTS = { declare: Events.DeclareManagedIncident, status: Events.ChangeManagedIncidentStatus, note: Events.AddManagedIncidentNote, postmortem: Events.DraftManagedPostmortem, approved: Events.ApproveManagedPostmortem, closed: Events.CloseManagedIncident,} as const;
/** Fire-and-forget: analytics never fails a Slack action. */export function trackSlackIncident( ctx: ServiceContext, kind: keyof typeof EVENTS, props: Record<string, string> = {},): void { const userId = tryGetActorUserId(ctx.actor); setupAnalytics({ userId: userId ? `usr_${userId}` : `slack_${ctx.workspace.id}`, workspaceId: String(ctx.workspace.id), plan: ctx.workspace.plan, }) .then((analytics) => analytics.track({ ...EVENTS[kind], source: "slack", ...props }), ) .catch(() => undefined);}