From 6d7a4def312bafcf58e1a2fd2b0ef3739d5af635 Mon Sep 17 00:00:00 2001 From: eddie murphy Date: Thu, 14 Sep 2023 12:18:16 +0800 Subject: [PATCH 1/3] feat: fire sipEvent on RTCSession when STATUS_WAITING_FOR_ANSWER --- lib/RTCSession.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/RTCSession.js b/lib/RTCSession.js index df9e50a56..83c1870af 100644 --- a/lib/RTCSession.js +++ b/lib/RTCSession.js @@ -1598,7 +1598,7 @@ module.exports = class RTCSession extends EventEmitter } break; case JsSIP_C.NOTIFY: - if (this._status === C.STATUS_CONFIRMED) + if (this._status === C.STATUS_CONFIRMED || this._status === C.STATUS_WAITING_FOR_ANSWER) { this._receiveNotify(request); } @@ -2540,6 +2540,14 @@ module.exports = class RTCSession extends EventEmitter break; } + case 'talk': { + request.reply(200); + this.emit('sipEvent', { + event: request.event, + request: request + }); + break; + } default: { request.reply(489); From daaf71924a43017007b4fb3b38f7d11489bb9dd0 Mon Sep 17 00:00:00 2001 From: eddie murphy Date: Thu, 14 Sep 2023 14:24:07 +0800 Subject: [PATCH 2/3] add event type --- lib/RTCSession.d.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/RTCSession.d.ts b/lib/RTCSession.d.ts index edff17102..0f7e29541 100644 --- a/lib/RTCSession.d.ts +++ b/lib/RTCSession.d.ts @@ -176,6 +176,11 @@ export interface IncomingAckEvent { ack: IncomingRequest; } +export interface SipEvent { + event: string; + request: IncomingRequest; +} + // listener export type PeerConnectionListener = (event: PeerConnectionEvent) => void; export type ConnectingListener = (event: ConnectingEvent) => void; @@ -200,6 +205,7 @@ export type UpdateListener = ReInviteListener; export type ReferListener = (event: ReferEvent) => void; export type SDPListener = (event: SDPEvent) => void; export type IceCandidateListener = (event: IceCandidateEvent) => void; +export type SipEventListener = (event: SipEvent) => void; export interface RTCSessionEventMap { 'peerconnection': PeerConnectionListener; @@ -227,6 +233,7 @@ export interface RTCSessionEventMap { 'peerconnection:createanswerfailed': Listener; 'peerconnection:setlocaldescriptionfailed': Listener; 'peerconnection:setremotedescriptionfailed': Listener; + 'sipEvent': SipEventListener } declare enum SessionStatus { From bd8922f28a9604ff5bfd638fc2f9c9089f7a83d0 Mon Sep 17 00:00:00 2001 From: eddie murphy Date: Thu, 14 Sep 2023 14:24:53 +0800 Subject: [PATCH 3/3] add miss ; --- lib/RTCSession.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/RTCSession.d.ts b/lib/RTCSession.d.ts index 0f7e29541..8b262944c 100644 --- a/lib/RTCSession.d.ts +++ b/lib/RTCSession.d.ts @@ -233,7 +233,7 @@ export interface RTCSessionEventMap { 'peerconnection:createanswerfailed': Listener; 'peerconnection:setlocaldescriptionfailed': Listener; 'peerconnection:setremotedescriptionfailed': Listener; - 'sipEvent': SipEventListener + 'sipEvent': SipEventListener; } declare enum SessionStatus {