@@ -140,6 +140,7 @@ def __init__(self) -> None:
140140 self ._ongoing_response : bool  =  False 
141141 self ._tracing_config : RealtimeModelTracingConfig  |  Literal ["auto" ] |  None  =  None 
142142 self ._playback_tracker : RealtimePlaybackTracker  |  None  =  None 
143+  self ._created_session : OpenAISessionObject  |  None  =  None 
143144
144145 async  def  connect (self , options : RealtimeModelConfig ) ->  None :
145146 """Establish a connection to the model and keep it alive.""" 
@@ -349,7 +350,14 @@ async def _send_interrupt(self, event: RealtimeModelSendInterrupt) -> None:
349350 int (elapsed_ms ),
350351 )
351352 await  self ._send_raw_message (converted )
352-  await  self ._cancel_response ()
353+ 
354+  automatic_response_cancellation_enabled  =  (
355+  self ._created_session 
356+  and  self ._created_session .turn_detection 
357+  and  self ._created_session .turn_detection .interrupt_response 
358+  )
359+  if  not  automatic_response_cancellation_enabled :
360+  await  self ._cancel_response ()
353361
354362 self ._audio_state_tracker .on_interrupted ()
355363 if  self ._playback_tracker :
@@ -483,6 +491,9 @@ async def _handle_ws_event(self, event: dict[str, Any]):
483491 await  self ._emit_event (RealtimeModelTurnEndedEvent ())
484492 elif  parsed .type  ==  "session.created" :
485493 await  self ._send_tracing_config (self ._tracing_config )
494+  self ._update_created_session (parsed .session ) # type: ignore 
495+  elif  parsed .type  ==  "session.updated" :
496+  self ._update_created_session (parsed .session ) # type: ignore 
486497 elif  parsed .type  ==  "error" :
487498 await  self ._emit_event (RealtimeModelErrorEvent (error = parsed .error ))
488499 elif  parsed .type  ==  "conversation.item.deleted" :
@@ -532,6 +543,13 @@ async def _handle_ws_event(self, event: dict[str, Any]):
532543 ):
533544 await  self ._handle_output_item (parsed .item )
534545
546+  def  _update_created_session (self , session : OpenAISessionObject ) ->  None :
547+  self ._created_session  =  session 
548+  if  session .output_audio_format :
549+  self ._audio_state_tracker .set_audio_format (session .output_audio_format )
550+  if  self ._playback_tracker :
551+  self ._playback_tracker .set_audio_format (session .output_audio_format )
552+ 
535553 async  def  _update_session_config (self , model_settings : RealtimeSessionModelSettings ) ->  None :
536554 session_config  =  self ._get_session_config (model_settings )
537555 await  self ._send_raw_message (
0 commit comments