diff --git a/services/asterisk_bridge_service/voice_ai.py b/services/asterisk_bridge_service/voice_ai.py index 615ff82..97f2958 100644 --- a/services/asterisk_bridge_service/voice_ai.py +++ b/services/asterisk_bridge_service/voice_ai.py @@ -721,15 +721,25 @@ def create_escalation(call_id: str, body: EscalationRequestIn, actor: dict) -> E session.commit() raise HTTPException(status_code=409, detail=f"No available {body.target_level} agent right now") - bridge._ami_action( - "Redirect", - { - "Channel": channel, - "Context": bridge._transfer_context(), - "Exten": reserved_extension, - "Priority": 1, - }, - ) + try: + bridge._ami_action( + "Redirect", + { + "Channel": channel, + "Context": bridge._transfer_context(), + "Exten": reserved_extension, + "Priority": 1, + }, + ) + except Exception as exc: + try: + bridge._release_routing_agent(call_id) + except Exception: + LOGGER.warning("bridge.escalation_release_agent_failed call_id=%s", call_id) + escalation.status = "failed" + escalation.completed_at = utc_now_iso() + session.commit() + raise HTTPException(status_code=502, detail=f"Failed to redirect call to agent: {exc}") from exc escalation.status = "ringing" escalation.assigned_agent_id = reserved_extension