@@ -2366,6 +2366,12 @@ impl SipSession {
23662366 digit = %digit,
23672367 "✓ Successfully injected DTMF event from SIP INFO"
23682368 ) ;
2369+ // Emit typed RWI DTMF event
2370+ self . emit_typed_rwi_event ( & crate :: rwi:: Dtmf {
2371+ call_id : self . context . session_id . clone ( ) ,
2372+ digit : digit. chars ( ) . next ( ) . unwrap ( ) . to_string ( ) ,
2373+ leg_id : Some ( "caller" . to_string ( ) ) ,
2374+ } ) ;
23692375 }
23702376 }
23712377 }
@@ -5179,6 +5185,7 @@ impl SipSession {
51795185 let session_id = self . context . session_id . clone ( ) ;
51805186 let app_runtime = self . app_runtime . clone ( ) ;
51815187 let caller_leg_id = "caller" . to_string ( ) ;
5188+ let rwi_gateway = self . server . rwi_gateway . clone ( ) ;
51825189
51835190 if self . media . caller_answer_uses_media_bridge {
51845191 if self . media . caller_ingress_monitor . is_some ( ) {
@@ -5213,6 +5220,16 @@ impl SipSession {
52135220 digit = %digit,
52145221 "Injected RTP DTMF from bridge sink"
52155222 ) ;
5223+ // Emit RWI DTMF event
5224+ if let Some ( ref gw) = rwi_gateway {
5225+ let ev = crate :: rwi:: Dtmf {
5226+ call_id : session_id. clone ( ) ,
5227+ digit : digit. to_string ( ) ,
5228+ leg_id : Some ( caller_leg. clone ( ) ) ,
5229+ } ;
5230+ let g = gw. read ( ) ;
5231+ g. send_to_owner ( & ev) ;
5232+ }
52165233 }
52175234 } ) ,
52185235 ) ;
0 commit comments