import assert from "assert"; import { RawEvent, NormalizedEvent } from "../../types"; export default (event: RawEvent): NormalizedEvent<"twilio"> => { assert(event, `Twilio:Messages null event: ${event}`); assert( event.sid, `Twilio:Messages event is missing the required field sid ${event}` ); assert( event.date_sent, `Twilio:Messages event is missing the required field date_sent ${event}` ); return { id: `twilio|${event.sid}`, ts: Date.parse(event.date_sent), user_info: { source_user_id: null, user_id: null, name: null, email: null, ip: null, avatar: null, nickname: null, phone: event.direction.includes("outbound") ? event.to : event.from, 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: event.body || null, href: `https://www.twilio.com/console/sms/logs/${ event.uri .split("/") .pop() .split(".")[0] }`, is_bad: Boolean(event.error_code), direction: event.direction.includes("outbound") ? "outbound" : "inbound", source: "twilio", stream: "messages" }; };