import { Injectable, Logger } from '@nestjs/common'; import type { ExotelWebhookPayload, CallEvent } from './exotel.types'; @Injectable() export class ExotelService { private readonly logger = new Logger(ExotelService.name); parseWebhook(payload: ExotelWebhookPayload): CallEvent { const { event_details, call_details } = payload; const eventType = event_details.event_type === 'answered' ? 'answered' : event_details.event_type === 'terminal' ? 'ended' : 'ringing'; const callEvent: CallEvent = { exotelCallSid: call_details.call_sid, eventType, direction: call_details.direction, callerPhone: call_details.customer_details?.number ?? '', agentName: call_details.assigned_agent_details?.name ?? 'Unknown', agentPhone: call_details.assigned_agent_details?.number ?? '', duration: call_details.total_talk_time, recordingUrl: call_details.recordings?.[0]?.url, callStatus: call_details.call_status, timestamp: new Date().toISOString(), }; this.logger.log(`Parsed Exotel event: ${eventType} for call ${call_details.call_sid}`); return callEvent; } }