import assert from "assert"; import { RawEvent, NormalizedEvent } from "../../types"; const getText = (event: RawEvent) => ({ slack: "Slack Message Sent" }[event.delivery_type] || event.type); export default (event: RawEvent): NormalizedEvent<"customer_io"> => { assert(event, `Customer.io:Messages null event: ${event}`); assert( event.id, `Customer.io:Messages event is missing the required field id ${event}` ); assert( event.created, `Customer.io:Messages event is missing the required field created ${event}` ); return { id: `customer_io|${event.id}`, ts: 1000 * event.created, user_info: { user_id: event.customer_id, source_user_id: null, name: null, email: null, ip: null, avatar: null, nickname: null, phone: null, city: null, continent_code: null, country: null, postal_code: null, region: null, timezone: null, country_code: null, address_line1: null, address_line2: null, user_agent: null, is_employee: null, title: null, birthday: null, company: { name: null, id: null, industry: null, employee_count: null, plan: null }, created_at: null, age: null, gender: null, website: null, custom_attributes: null }, text: `${getText(event)}${ event.subject || event.failure_message ? ` : ${event.subject || event.failure_message}` : "" }`, href: `https://fly.customer.io/env/1/people/${event.customer_id}/sent`, is_bad: Boolean(event.failure_message), direction: null, source: "customer_io", stream: "messages" }; };