dograh/api/services/campaign/errors.py

28 lines
951 B
Python
Raw Permalink Normal View History

"""
Campaign service exceptions.
"""
class ConcurrentSlotAcquisitionError(Exception):
"""Raised when a concurrent call slot cannot be acquired within the timeout period."""
def __init__(self, organization_id: int, campaign_id: int, wait_time: float):
self.organization_id = organization_id
self.campaign_id = campaign_id
self.wait_time = wait_time
super().__init__(
f"Failed to acquire concurrent slot for org {organization_id}, "
f"campaign {campaign_id} after waiting {wait_time:.1f}s"
)
class PhoneNumberPoolExhaustedError(Exception):
"""Raised when no phone numbers are available in the pool for outbound calls."""
def __init__(self, organization_id: int):
self.organization_id = organization_id
super().__init__(
f"All phone numbers are in use for org {organization_id}. "
f"No available from_number in pool."
)