Skip to content

Commit 495361d

Browse files
committed
feat: emit RWI DTMF events in SipSession for better call handling[latest]
1 parent b14401c commit 495361d

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

src/addons/cc

Submodule cc updated from 0f8da33 to 95d2c9e

src/proxy/proxy_call/sip_session.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)