Agents Module - TypeScript Functions

Angular Admin Panel Documentation

Agents Module - TypeScript Functions

🧩 AgentComponent Functions

Main component for managing agents with full CRUD operations, filtering, grouping, and performance tracking.

Component Properties

export class AgentComponent implements OnInit, OnDestroy {
  // Data Properties
  agents: Agent[] = [];
  filteredAgents: Agent[] = [];
  selectedAgent: Agent | null = null;
  currentUser: User | null = null;
  loading: boolean = false;
  error: string | null = null;
  
  // Filter and Search Properties
  searchTerm: string = '';
  statusFilter: AgentStatus = AgentStatus.ALL;
  groupFilter: string = '';
  skillFilter: string = '';
  
  // Pagination Properties
  currentPage: number = 1;
  itemsPerPage: number = 10;
  totalItems: number = 0;
  
  // Sorting Properties
  sortField: string = 'name';
  sortDirection: 'asc' | 'desc' = 'asc';
  
  // UI State Properties
  showDetails: boolean = false;
  showEditModal: boolean = false;
  isEditing: boolean = false;
  
  // Form Properties
  agentForm: FormGroup;
  editForm: FormGroup;
}

🔄 Lifecycle Methods

/**
 * Component initialization
 */
ngOnInit(): void

/**
 * Component cleanup
 */
ngOnDestroy(): void

/**
 * After view initialization
 */
ngAfterViewInit(): void

📥 Data Loading Methods

/**
 * Load all agents
 */
loadAgents(): void

/**
 * Load agents with pagination
 * @param page - Page number
 * @param pageSize - Items per page
 */
loadAgentsWithPagination(page: number, pageSize: number): void

/**
 * Load agent by ID
 * @param agentId - Agent ID
 */
loadAgentById(agentId: string): void

/**
 * Refresh agent list
 */
refreshAgents(): void

/**
 * Load agent performance metrics
 * @param agentId - Agent ID
 */
loadAgentPerformance(agentId: string): void

/**
 * Load agent communication history
 * @param agentId - Agent ID
 */
loadCommunicationHistory(agentId: string): void

👤 Agent Management Methods

/**
 * View agent details
 * @param agent - Agent to view
 */
viewAgentDetails(agent: Agent): void

/**
 * Edit agent information
 * @param agent - Agent to edit
 */
editAgent(agent: Agent): void

/**
 * Update agent status
 * @param agentId - Agent ID
 * @param status - New status
 */
updateAgentStatus(agentId: string, status: AgentStatus): void

/**
 * Deactivate agent
 * @param agentId - Agent ID
 */
deactivateAgent(agentId: string): void

/**
 * Activate agent
 * @param agentId - Agent ID
 */
activateAgent(agentId: string): void

/**
 * Assign agent to group
 * @param agentId - Agent ID
 * @param groupId - Group ID
 */
assignToGroup(agentId: string, groupId: string): void

/**
 * Remove agent from group
 * @param agentId - Agent ID
 * @param groupId - Group ID
 */
removeFromGroup(agentId: string, groupId: string): void

🔍 Search and Filter Methods

/**
 * Search agents by term
 * @param searchTerm - Search term
 */
searchAgents(searchTerm: string): void

/**
 * Filter agents by status
 * @param status - Agent status
 */
filterByStatus(status: AgentStatus): void

/**
 * Filter agents by group
 * @param groupId - Group ID
 */
filterByGroup(groupId: string): void

/**
 * Filter agents by skill
 * @param skill - Skill name
 */
filterBySkill(skill: string): void

/**
 * Apply all filters
 */
applyFilters(): void

/**
 * Clear all filters
 */
clearFilters(): void

🖱️ UI Interaction Methods

/**
 * Open agent details modal
 * @param agent - Agent to view
 */
openDetailsModal(agent: Agent): void

/**
 * Close details modal
 */
closeDetailsModal(): void

/**
 * Open edit modal
 * @param agent - Agent to edit
 */
openEditModal(agent: Agent): void

/**
 * Close edit modal
 */
closeEditModal(): void

/**
 * Toggle agent selection
 * @param agent - Agent to toggle
 */
toggleSelection(agent: Agent): void

👥 GroupComponent Functions

Component for managing agent groups, memberships, and group-level permissions.

Component Properties

export class GroupComponent implements OnInit, OnDestroy {
  // Data Properties
  groups: AgentGroup[] = [];
  selectedGroup: AgentGroup | null = null;
  groupAgents: Agent[] = [];
  loading: boolean = false;
  error: string | null = null;
  
  // UI State Properties
  showGroupDetails: boolean = false;
  showEditGroupModal: boolean = false;
  showAddMemberModal: boolean = false;
  
  // Form Properties
  groupForm: FormGroup;
  memberForm: FormGroup;
}

🔄 Lifecycle Methods

/**
 * Component initialization
 */
ngOnInit(): void

/**
 * Component cleanup
 */
ngOnDestroy(): void

📥 Data Loading Methods

/**
 * Load all agent groups
 */
loadGroups(): void

/**
 * Load group by ID
 * @param groupId - Group ID
 */
loadGroupById(groupId: string): void

/**
 * Load group members
 * @param groupId - Group ID
 */
loadGroupMembers(groupId: string): void

/**
 * Load group performance analytics
 * @param groupId - Group ID
 */
loadGroupAnalytics(groupId: string): void

👥 Group Management Methods

/**
 * View group details
 * @param group - Group to view
 */
viewGroupDetails(group: AgentGroup): void

/**
 * Edit group information
 * @param group - Group to edit
 */
editGroup(group: AgentGroup): void

/**
 * Delete group
 * @param groupId - Group ID
 */
deleteGroup(groupId: string): void

/**
 * Add member to group
 * @param groupId - Group ID
 * @param agentId - Agent ID
 */
addMemberToGroup(groupId: string, agentId: string): void

/**
 * Remove member from group
 * @param groupId - Group ID
 * @param agentId - Agent ID
 */
removeMemberFromGroup(groupId: string, agentId: string): void

/**
 * Update group permissions
 * @param groupId - Group ID
 * @param permissions - New permissions
 */
updateGroupPermissions(groupId: string, permissions: Permission[]): void

➕ AddagentComponent Functions

Multi-step form component for registering new agents with skills, groups, and validation.

Component Properties

export class AddagentComponent implements OnInit {
  // Form Properties
  agentForm: FormGroup;
  
  // Data Properties
  availableSkills: Skill[] = [];
  availableGroups: AgentGroup[] = [];
  selectedSkills: Skill[] = [];
  selectedGroups: AgentGroup[] = [];
  
  // UI State Properties
  currentStep: number = 1;
  totalSteps: number = 4;
  loading: boolean = false;
  error: string | null = null;
  
  // Validation Properties
  formErrors: FormErrors = {};
  isSubmitting: boolean = false;
}

🔄 Lifecycle Methods

/**
 * Component initialization
 */
ngOnInit(): void

📝 Form Management Methods

/**
 * Initialize agent registration form
 */
initializeForm(): void

/**
 * Validate current form step
 */
validateCurrentStep(): boolean

/**
 * Move to next step
 */
nextStep(): void

/**
 * Move to previous step
 */
previousStep(): void

/**
 * Submit agent registration
 */
submitForm(): void

/**
 * Reset form to initial state
 */
resetForm(): void

📥 Data Loading Methods

/**
 * Load available skills
 */
loadAvailableSkills(): void

/**
 * Load available groups
 */
loadAvailableGroups(): void

/**
 * Load registration templates
 */
loadRegistrationTemplates(): void

🎯 Skills Management Methods

/**
 * Add skill to agent
 * @param skill - Skill to add
 */
addSkill(skill: Skill): void

/**
 * Remove skill from agent
 * @param skill - Skill to remove
 */
removeSkill(skill: Skill): void

/**
 * Update skill level
 * @param skillId - Skill ID
 * @param level - Skill level
 */
updateSkillLevel(skillId: string, level: number): void

✅ Validation Methods

/**
 * Validate personal information
 */
validatePersonalInfo(): boolean

/**
 * Validate contact information
 */
validateContactInfo(): boolean

/**
 * Validate skills and capabilities
 */
validateSkills(): boolean

/**
 * Validate group assignments
 */
validateGroups(): boolean

/**
 * Check email uniqueness
 * @param email - Email to check
 */
checkEmailUniqueness(email: string): void

/**
 * Check username availability
 * @param username - Username to check
 */
checkUsernameAvailability(username: string): void

➕ AddgroupComponent Functions

Multi-step form component for creating new agent groups with permission templates and member assignments.

Component Properties

export class AddgroupComponent implements OnInit {
  // Form Properties
  groupForm: FormGroup;
  
  // Data Properties
  availablePermissions: Permission[] = [];
  selectedPermissions: Permission[] = [];
  availableAgents: Agent[] = [];
  selectedAgents: Agent[] = [];
  
  // UI State Properties
  currentStep: number = 1;
  totalSteps: number = 3;
  loading: boolean = false;
  error: string | null = null;
  
  // Template Properties
  permissionTemplates: PermissionTemplate[] = [];
  selectedTemplate: PermissionTemplate | null = null;
}

🔄 Lifecycle Methods

/**
 * Component initialization
 */
ngOnInit(): void

📝 Form Management Methods

/**
 * Initialize group creation form
 */
initializeForm(): void

/**
 * Validate current step
 */
validateCurrentStep(): boolean

/**
 * Move to next step
 */
nextStep(): void

/**
 * Move to previous step
 */
previousStep(): void

/**
 * Submit group creation
 */
submitForm(): void

/**
 * Reset form
 */
resetForm(): void

📥 Data Loading Methods

/**
 * Load available permissions
 */
loadAvailablePermissions(): void

/**
 * Load permission templates
 */
loadPermissionTemplates(): void

/**
 * Load available agents
 */
loadAvailableAgents(): void

🔐 Permission Management Methods

/**
 * Apply permission template
 * @param template - Permission template
 */
applyPermissionTemplate(template: PermissionTemplate): void

/**
 * Add permission to group
 * @param permission - Permission to add
 */
addPermission(permission: Permission): void

/**
 * Remove permission from group
 * @param permission - Permission to remove
 */
removePermission(permission: Permission): void

/**
 * Update permission level
 * @param permissionId - Permission ID
 * @param level - Permission level
 */
updatePermissionLevel(permissionId: string, level: PermissionLevel): void

⚙️ AccountSettingComponent Functions

Tabbed settings component for agent account management, security, and preferences.

Component Properties

export class AccountSettingComponent implements OnInit {
  // Form Properties
  personalForm: FormGroup;
  communicationForm: FormGroup;
  securityForm: FormGroup;
  preferencesForm: FormGroup;
  
  // Data Properties
  currentAgent: Agent | null = null;
  communicationChannels: CommunicationChannel[] = [];
  notificationSettings: NotificationSetting[] = [];
  
  // UI State Properties
  activeTab: string = 'personal';
  loading: boolean = false;
  saving: boolean = false;
  error: string | null = null;
  
  // Password Properties
  showChangePassword: boolean = false;
  passwordStrength: PasswordStrength = PasswordStrength.WEAK;
}

🔄 Lifecycle Methods

/**
 * Component initialization
 */
ngOnInit(): void

📝 Form Management Methods

/**
 * Initialize all forms
 */
initializeForms(): void

/**
 * Initialize personal information form
 */
initializePersonalForm(): void

/**
 * Initialize communication preferences form
 */
initializeCommunicationForm(): void

/**
 * Initialize security settings form
 */
initializeSecurityForm(): void

/**
 * Initialize preferences form
 */
initializePreferencesForm(): void

📥 Data Loading Methods

/**
 * Load current agent data
 */
loadAgentData(): void

/**
 * Load communication channels
 */
loadCommunicationChannels(): void

/**
 * Load notification settings
 */
loadNotificationSettings(): void

/**
 * Load security settings
 */
loadSecuritySettings(): void

💾 Settings Management Methods

/**
 * Save personal information
 */
savePersonalInfo(): void

/**
 * Save communication preferences
 */
saveCommunicationPreferences(): void

/**
 * Save security settings
 */
saveSecuritySettings(): void

/**
 * Save general preferences
 */
savePreferences(): void

/**
 * Change password
 */
changePassword(): void

/**
 * Update profile picture
 * @param file - Image file
 */
updateProfilePicture(file: File): void

📑 Tab Management Methods

/**
 * Switch to tab
 * @param tabName - Tab name
 */
switchTab(tabName: string): void

/**
 * Check if tab is active
 * @param tabName - Tab name
 */
isTabActive(tabName: string): boolean

✅ Validation Methods

/**
 * Validate password strength
 * @param password - Password to validate
 */
validatePasswordStrength(password: string): PasswordStrength

/**
 * Validate email format
 * @param email - Email to validate
 */
validateEmail(email: string): boolean

/**
 * Validate phone number
 * @param phone - Phone number to validate
 */
validatePhoneNumber(phone: string): boolean

📞 ChannelRequestsComponent Functions

Component for managing channel access requests with approval workflows and filtering.

Component Properties

export class ChannelRequestsComponent implements OnInit, OnDestroy {
  // Data Properties
  channelRequests: ChannelRequest[] = [];
  filteredRequests: ChannelRequest[] = [];
  selectedRequest: ChannelRequest | null = null;
  
  // Filter Properties
  statusFilter: RequestStatus = RequestStatus.ALL;
  channelTypeFilter: ChannelType = ChannelType.ALL;
  dateFilter: DateRange | null = null;
  
  // UI State Properties
  showRequestDetails: boolean = false;
  showApprovalModal: boolean = false;
  showRejectModal: boolean = false;
  
  // Pagination Properties
  currentPage: number = 1;
  itemsPerPage: number = 10;
  totalItems: number = 0;
  
  // Form Properties
  approvalForm: FormGroup;
  rejectionForm: FormGroup;
}

🔄 Lifecycle Methods

/**
 * Component initialization
 */
ngOnInit(): void

/**
 * Component cleanup
 */
ngOnDestroy(): void

📥 Data Loading Methods

/**
 * Load channel requests
 */
loadChannelRequests(): void

/**
 * Load request by ID
 * @param requestId - Request ID
 */
loadRequestById(requestId: string): void

/**
 * Refresh requests list
 */
refreshRequests(): void

/**
 * Load request history
 * @param requestId - Request ID
 */
loadRequestHistory(requestId: string): void

📋 Request Management Methods

/**
 * View request details
 * @param request - Request to view
 */
viewRequestDetails(request: ChannelRequest): void

/**
 * Approve channel request
 * @param requestId - Request ID
 * @param approvalData - Approval data
 */
approveRequest(requestId: string, approvalData: ApprovalData): void

/**
 * Reject channel request
 * @param requestId - Request ID
 * @param rejectionData - Rejection data
 */
rejectRequest(requestId: string, rejectionData: RejectionData): void

/**
 * Update request status
 * @param requestId - Request ID
 * @param status - New status
 */
updateRequestStatus(requestId: string, status: RequestStatus): void

/**
 * Assign request to reviewer
 * @param requestId - Request ID
 * @param reviewerId - Reviewer ID
 */
assignToReviewer(requestId: string, reviewerId: string): void

🔍 Filter Methods

/**
 * Filter requests by status
 * @param status - Request status
 */
filterByStatus(status: RequestStatus): void

/**
 * Filter requests by channel type
 * @param channelType - Channel type
 */
filterByChannelType(channelType: ChannelType): void

/**
 * Filter requests by date range
 * @param dateRange - Date range
 */
filterByDateRange(dateRange: DateRange): void

/**
 * Apply all filters
 */
applyFilters(): void

/**
 * Clear all filters
 */
clearFilters(): void

⚙️ AgentserviceService Functions

Main service for agent data management, authentication, performance tracking, and group operations.

Service Properties

export class AgentserviceService {
  // Private properties
  private readonly apiUrl = 'api/agents';
  private agentsSubject = new BehaviorSubject<Agent[]>([]);
  private loadingSubject = new BehaviorSubject<boolean>(false);
  private errorSubject = new BehaviorSubject<string | null>(null);
  
  // Public observables
  public agents$ = this.agentsSubject.asObservable();
  public loading$ = this.loadingSubject.asObservable();
  public error$ = this.errorSubject.asObservable();
}

📊 CRUD Operations

/**
 * Get all agents
 */
getAllAgents(): Observable<Agent[]>

/**
 * Get agent by ID
 * @param agentId - Agent ID
 */
getAgentById(agentId: string): Observable<Agent>

/**
 * Create new agent
 * @param agentData - Agent data
 */
createAgent(agentData: CreateAgentRequest): Observable<Agent>

/**
 * Update agent
 * @param agentId - Agent ID
 * @param agentData - Updated agent data
 */
updateAgent(agentId: string, agentData: UpdateAgentRequest): Observable<Agent>

/**
 * Delete agent
 * @param agentId - Agent ID
 */
deleteAgent(agentId: string): Observable<void>

/**
 * Activate agent
 * @param agentId - Agent ID
 */
activateAgent(agentId: string): Observable<void>

/**
 * Deactivate agent
 * @param agentId - Agent ID
 */
deactivateAgent(agentId: string): Observable<void>

🔐 Authentication Methods

/**
 * Authenticate agent
 * @param credentials - Login credentials
 */
authenticateAgent(credentials: AgentCredentials): Observable<AuthResponse>

/**
 * Refresh agent token
 * @param refreshToken - Refresh token
 */
refreshAgentToken(refreshToken: string): Observable<AuthResponse>

/**
 * Logout agent
 * @param agentId - Agent ID
 */
logoutAgent(agentId: string): Observable<void>

/**
 * Validate agent session
 * @param sessionToken - Session token
 */
validateAgentSession(sessionToken: string): Observable<boolean>

📈 Performance Tracking

/**
 * Get agent performance metrics
 * @param agentId - Agent ID
 * @param period - Time period
 */
getAgentPerformance(agentId: string, period: TimePeriod): Observable<PerformanceMetrics>

/**
 * Update agent performance
 * @param agentId - Agent ID
 * @param metrics - Performance metrics
 */
updatePerformanceMetrics(agentId: string, metrics: PerformanceMetrics): Observable<void>

/**
 * Get performance summary
 * @param agentId - Agent ID
 */
getPerformanceSummary(agentId: string): Observable<PerformanceSummary>

/**
 * Track agent activity
 * @param agentId - Agent ID
 * @param activity - Activity data
 */
trackAgentActivity(agentId: string, activity: AgentActivity): Observable<void>

📋 Status Management

/**
 * Update agent status
 * @param agentId - Agent ID
 * @param status - New status
 */
updateAgentStatus(agentId: string, status: AgentStatus): Observable<void>

/**
 * Get agent status
 * @param agentId - Agent ID
 */
getAgentStatus(agentId: string): Observable<AgentStatus>

/**
 * Set agent availability
 * @param agentId - Agent ID
 * @param availability - Availability status
 */
setAgentAvailability(agentId: string, availability: AvailabilityStatus): Observable<void>

/**
 * Get agents by status
 * @param status - Agent status
 */
getAgentsByStatus(status: AgentStatus): Observable<Agent[]>

👥 Group Management

/**
 * Get agent groups
 * @param agentId - Agent ID
 */
getAgentGroups(agentId: string): Observable<AgentGroup[]>

/**
 * Assign agent to group
 * @param agentId - Agent ID
 * @param groupId - Group ID
 */
assignAgentToGroup(agentId: string, groupId: string): Observable<void>

/**
 * Remove agent from group
 * @param agentId - Agent ID
 * @param groupId - Group ID
 */
removeAgentFromGroup(agentId: string, groupId: string): Observable<void>

/**
 * Get group members
 * @param groupId - Group ID
 */
getGroupMembers(groupId: string): Observable<Agent[]>

🛠️ AgentsMaintainService Functions

Specialized service for system maintenance, health monitoring, and data optimization.

Service Properties

export class AgentsMaintainService {
  // Private properties
  private readonly maintenanceApiUrl = 'api/agents/maintenance';
  private systemHealthSubject = new BehaviorSubject<SystemHealth>({});
  
  // Public observables
  public systemHealth$ = this.systemHealthSubject.asObservable();
}

🗂️ Data Maintenance

/**
 * Cleanup inactive agents
 * @param inactiveDays - Days of inactivity
 */
cleanupInactiveAgents(inactiveDays: number): Observable<CleanupResult>

/**
 * Archive old agent data
 * @param archiveDate - Date before which to archive
 */
archiveAgentData(archiveDate: Date): Observable<ArchiveResult>

/**
 * Optimize agent database
 */
optimizeAgentDatabase(): Observable<OptimizationResult>

/**
 * Validate agent data integrity
 */
validateDataIntegrity(): Observable<ValidationResult>

/**
 * Repair corrupted agent data
 * @param agentIds - Agent IDs to repair
 */
repairCorruptedData(agentIds: string[]): Observable<RepairResult>

💚 System Health Monitoring

/**
 * Get system health status
 */
getSystemHealth(): Observable<SystemHealth>

/**
 * Monitor agent service performance
 */
monitorServicePerformance(): Observable<ServicePerformance>

/**
 * Check database connectivity
 */
checkDatabaseHealth(): Observable<DatabaseHealth>

/**
 * Monitor memory usage
 */
monitorMemoryUsage(): Observable<MemoryUsage>

/**
 * Check API response times
 */
checkApiResponseTimes(): Observable<ApiPerformance>

⚡ Performance Optimization

/**
 * Optimize agent queries
 */
optimizeAgentQueries(): Observable<QueryOptimization>

/**
 * Update performance indexes
 */
updatePerformanceIndexes(): Observable<IndexUpdate>

/**
 * Cache frequently accessed data
 */
cacheFrequentData(): Observable<CacheResult>

/**
 * Clean temporary data
 */
cleanTemporaryData(): Observable<CleanupResult>

💾 Backup and Recovery

/**
 * Backup agent data
 * @param backupType - Type of backup
 */
backupAgentData(backupType: BackupType): Observable<BackupResult>

/**
 * Restore agent data
 * @param backupId - Backup ID
 */
restoreAgentData(backupId: string): Observable<RestoreResult>

/**
 * Get backup history
 */
getBackupHistory(): Observable<BackupHistory[]>

/**
 * Verify backup integrity
 * @param backupId - Backup ID
 */
verifyBackupIntegrity(backupId: string): Observable<IntegrityCheck>

🔄 OrderPipe Functions

Angular pipe for sorting arrays by various field types with configurable direction.

Pipe Implementation

export class OrderPipe implements PipeTransform {
  /**
   * Transform array with sorting
   * @param array - Array to sort
   * @param field - Field to sort by
   * @param direction - Sort direction
   */
  transform(array: any[], field: string, direction: 'asc' | 'desc' = 'asc'): any[]

  /**
   * Sort by string field
   * @param array - Array to sort
   * @param field - String field
   * @param direction - Sort direction
   */
  private sortByString(array: any[], field: string, direction: string): any[]

  /**
   * Sort by number field
   * @param array - Array to sort
   * @param field - Number field
   * @param direction - Sort direction
   */
  private sortByNumber(array: any[], field: string, direction: string): any[]

  /**
   * Sort by date field
   * @param array - Array to sort
   * @param field - Date field
   * @param direction - Sort direction
   */
  private sortByDate(array: any[], field: string, direction: string): any[]

  /**
   * Get nested property value
   * @param obj - Object
   * @param path - Property path
   */
  private getNestedProperty(obj: any, path: string): any
}

📋 Interface Definitions

Core Interfaces

interface Agent {
  id: string;
  employeeId: string;
  firstName: string;
  lastName: string;
  email: string;
  phone: string;
  username: string;
  status: AgentStatus;
  availability: AvailabilityStatus;
  skills: Skill[];
  groups: AgentGroup[];
  performance: PerformanceMetrics;
  createdAt: Date;
  updatedAt: Date;
  lastLoginAt?: Date;
  profilePicture?: string;
}

interface AgentGroup {
  id: string;
  name: string;
  description: string;
  permissions: Permission[];
  members: Agent[];
  supervisor: Agent;
  createdAt: Date;
  updatedAt: Date;
}

interface Skill {
  id: string;
  name: string;
  category: string;
  level: number;
  certified: boolean;
  certificationDate?: Date;
}

interface ChannelRequest {
  id: string;
  agentId: string;
  channelType: ChannelType;
  requestType: RequestType;
  status: RequestStatus;
  priority: Priority;
  description: string;
  justification: string;
  requestedAt: Date;
  reviewedAt?: Date;
  reviewerId?: string;
  reviewComments?: string;
}

Enums

enum AgentStatus {
  ACTIVE = 'active',
  INACTIVE = 'inactive',
  SUSPENDED = 'suspended',
  TRAINING = 'training'
}

enum AvailabilityStatus {
  AVAILABLE = 'available',
  BUSY = 'busy',
  AWAY = 'away',
  OFFLINE = 'offline'
}

enum RequestStatus {
  PENDING = 'pending',
  APPROVED = 'approved',
  REJECTED = 'rejected',
  UNDER_REVIEW = 'under_review'
}

enum ChannelType {
  VOICE = 'voice',
  EMAIL = 'email',
  CHAT = 'chat',
  SMS = 'sms',
  VIDEO = 'video'
}

Related Documentation

📦 Module Overview