Files
helix-engage-server/src/exotel/exotel.service.ts

32 lines
1.2 KiB
TypeScript

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;
}
}