FRESHCHAT_RATE_LIMIT = 350 FRESHDESK_RATE_LIMIT = 300 FRESHDESK_RATE_LIMIT_ENTERPRISE = 500 MAX_RETRIES = 3 DEFAULT_TIMEOUT = 30.0 MAX_ATTACHMENT_SIZE_MB = 20 MAX_MESSAGE_LENGTH = 40000 FRESHCHAT_STATUS_VALUES = ("new", "active", "assigned", "resolved") FRESHDESK_STATUS_MAP = { 2: "Open", 3: "Pending", 4: "Resolved", 5: "Closed", } FRESHDESK_PRIORITY_MAP = { 1: "Low", 2: "Medium", 3: "High", 4: "Urgent", } MESSAGE_PART_TYPES = frozenset({ "text", "image", "file", "quick_replies", "card", "carousel", "location", "private_note", }) VALID_FRESHCHAT_EVENTS = frozenset({ "message_create", "message_update", "message_delete", "conversation_create", "conversation_update", "conversation_assignment", "conversation_resolution", "conversation_reopen", }) VALID_FRESHDESK_EVENTS = frozenset({ "ticket_created", "ticket_updated", "ticket_reply", "ticket_note_added", "ticket_assigned", "ticket_deleted", }) FRESHDESK_RETRY_MAX = 3 FRESHDESK_RETRY_BASE = 1.0 FRESHDESK_RETRY_MAX_DELAY = 10.0 RECONCILE_INTERVAL_SECONDS = 300 FRESHDESK_BLOCK_STREAMING_CHUNK_MIN_CHARS = 300 FRESHDESK_BLOCK_STREAMING_CHUNK_MAX_CHARS = 1500