@wazo/sdk 1.0.0-alpha.10 → 1.0.0-alpha.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/wazo-sdk.js +2 -2
- package/esm/state-machine/utils.js +2 -1
- package/esm/types/state-machine/utils.d.ts.map +1 -1
- package/esm/types/utils/webrtc.d.ts.map +1 -1
- package/esm/types/voice/call.d.ts +1 -0
- package/esm/types/voice/call.d.ts.map +1 -1
- package/esm/utils/webrtc.js +4 -1
- package/esm/voice/call.js +10 -5
- package/lib/state-machine/utils.js +2 -1
- package/lib/types/state-machine/utils.d.ts.map +1 -1
- package/lib/types/utils/webrtc.d.ts.map +1 -1
- package/lib/types/voice/call.d.ts +1 -0
- package/lib/types/voice/call.d.ts.map +1 -1
- package/lib/utils/webrtc.js +6 -2
- package/lib/voice/call.js +9 -4
- package/package.json +1 -1
- package/src/state-machine/utils.ts +2 -1
- package/src/utils/webrtc.ts +5 -1
- package/src/voice/call.ts +12 -5
|
@@ -31,7 +31,8 @@ export const waitUntilState = (actor, state, timeout = 5000) => {
|
|
|
31
31
|
export const assertCan = (actor, action) => {
|
|
32
32
|
if (!can(actor, action)) {
|
|
33
33
|
const currentState = actor.getSnapshot().value;
|
|
34
|
-
const
|
|
34
|
+
const currentStateString = typeof currentState === 'object' ? JSON.stringify(currentState) : currentState;
|
|
35
|
+
const message = `Invalid state transition from ${currentStateString} with action ${action}`;
|
|
35
36
|
logger.warn(message);
|
|
36
37
|
throw new InvalidStateTransition(message, action, currentState);
|
|
37
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/state-machine/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,WAAW,IAAI,gBAAgB,EAAE,KAAK,UAAU,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC7I,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,IAAI,WAAW,EAAE,KAAK,sBAAsB,IAAI,sBAAsB,EAAE,KAAK,UAAU,IAAI,UAAU,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAQ5M,eAAO,MAAM,QAAQ,UAAW,iBAAiB,GAAG,YAAY,KAAG,eAAe,GAAG,UAAU,GAAG,qBAAqB,GAAG,OAAO,UAAU,EAAE,qBAAqB,CAEjK,CAAC;AAEF,eAAO,MAAM,GAAG,UAAW,iBAAiB,GAAG,YAAY,UAAU,gBAAgB,GAAG,WAAW,GAAG,sBAAsB,KAAG,OAE9H,CAAC;AAEF,eAAO,MAAM,QAAQ,UAAW,iBAAiB,GAAG,YAAY,SAAS,eAAe,GAAG,UAAU,eAAe,qBAAqB,KAAG,OAS3I,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,iBAAiB,GAAG,YAAY,SAAS,eAAe,GAAG,UAAU,uBAAmB,QAAQ,OAAO,CAW5I,CAAC;AAEF,eAAO,MAAM,SAAS,UAAW,iBAAiB,GAAG,YAAY,UAAU,gBAAgB,GAAG,WAAW,GAAG,sBAAsB,KAAG,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/state-machine/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,WAAW,IAAI,gBAAgB,EAAE,KAAK,UAAU,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC7I,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,IAAI,WAAW,EAAE,KAAK,sBAAsB,IAAI,sBAAsB,EAAE,KAAK,UAAU,IAAI,UAAU,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAQ5M,eAAO,MAAM,QAAQ,UAAW,iBAAiB,GAAG,YAAY,KAAG,eAAe,GAAG,UAAU,GAAG,qBAAqB,GAAG,OAAO,UAAU,EAAE,qBAAqB,CAEjK,CAAC;AAEF,eAAO,MAAM,GAAG,UAAW,iBAAiB,GAAG,YAAY,UAAU,gBAAgB,GAAG,WAAW,GAAG,sBAAsB,KAAG,OAE9H,CAAC;AAEF,eAAO,MAAM,QAAQ,UAAW,iBAAiB,GAAG,YAAY,SAAS,eAAe,GAAG,UAAU,eAAe,qBAAqB,KAAG,OAS3I,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,iBAAiB,GAAG,YAAY,SAAS,eAAe,GAAG,UAAU,uBAAmB,QAAQ,OAAO,CAW5I,CAAC;AAEF,eAAO,MAAM,SAAS,UAAW,iBAAiB,GAAG,YAAY,UAAU,gBAAgB,GAAG,WAAW,GAAG,sBAAsB,KAAG,IASpI,CAAC;AAEF,eAAO,MAAM,WAAW,UAAW,iBAAiB,GAAG,YAAY,SAAS,eAAe,GAAG,UAAU,KAAG,IAO1G,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webrtc.d.ts","sourceRoot":"","sources":["../../../src/utils/webrtc.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAkB,gBAAgB,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAKpH,KAAK,SAAS,GAAG;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAC;AAEF,KAAK,UAAU,GAAG,uBAAuB,GAAG,OAAO,GAAG,SAAS,CAAC;AAUhE,eAAO,MAAM,KAAK,QAAO,OAAqE,CAAC;AAE/F,eAAO,MAAM,SAAS,QAAO,OAA+E,CAAC;AAE7G,eAAO,MAAM,YAAY,OAAQ,MAAM,KAAG,OAA0C,CAAC;AAErF,eAAO,MAAM,aAAa,OAAQ,MAAM,KAAG,MAAM;IAAE,IAAI,EAAE,MAAM,MAAM,CAAC,CAAA;CAAE,CAQvE,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,MAAM,cA0C1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAAa,OAAO,KAAG,iBAAiB,GAAG,IAAI,GAAG,SAM/E,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,OAAO,KAAG,WAAW,GAAG,IAE/D,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,OAAO,KAAG,gBAAgB,EAQjE,CAAC;AAEF,eAAO,MAAM,eAAe,YAAa,OAAO,KAAG,WAAW,GAAG,IAEhE,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,gBAAgB,KAAG,OAAgE,CAAC;AAExH,eAAO,MAAM,aAAa,YAAa,OAAO,KAAG,OAAqD,CAAC;AAEvG,eAAO,MAAM,mBAAmB,YAAa,OAAO,KAAG,OAAwE,CAAC;AAEhI,eAAO,MAAM,mBAAmB,YAAa,OAAO,KAAG,WAAW,GAAG,IAAI,GAAG,SAAsE,CAAC;AAEnJ,eAAO,MAAM,eAAe,YAAa,OAAO,KAAG,gBAAgB,EAQlE,CAAC;AAEF,eAAO,MAAM,mBAAmB,YAAa,OAAO,KAAG,OAUtD,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,OAAO,KAAG,OAAsD,CAAC;AAEzG,eAAO,MAAM,oBAAoB,YAAa,OAAO,KAAG,OAAyE,CAAC;AAElI,eAAO,MAAM,oBAAoB,YAAa,OAAO,KAAG,WAAW,GAAG,IAAI,GAAG,SAM5E,CAAC;AAEF,eAAO,MAAM,0BAA0B,YAAa,OAAO,KAAG,WAAW,GAAG,IAAI,GAAG,SAQlF,CAAC;AAEF,eAAO,MAAM,aAAa,YAAa,OAAO,KAAG,OAA4D,CAAC;AAE9G,eAAO,MAAM,cAAc,YAAa,OAAO,KAAG,OAAwE,CAAC;AAG3H,eAAO,MAAM,qBAAqB,YAAa,OAAO,KAAG,
|
|
1
|
+
{"version":3,"file":"webrtc.d.ts","sourceRoot":"","sources":["../../../src/utils/webrtc.ts"],"names":[],"mappings":"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"}
|
|
@@ -106,6 +106,7 @@ declare class Call extends EventEmitter {
|
|
|
106
106
|
getRemoteVideoStream(): MediaStream | null | undefined;
|
|
107
107
|
hasRemoteVideo(): boolean;
|
|
108
108
|
hasLocalVideo(): boolean;
|
|
109
|
+
wantsToDoVideo(): boolean;
|
|
109
110
|
getLocalStream(): MediaStream | null;
|
|
110
111
|
getLocalVideoStream(): MediaStream | null | undefined;
|
|
111
112
|
hasALocalVideoTrack(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../../src/voice/call.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../../src/voice/call.ts"],"names":[],"mappings":"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"}
|
package/esm/utils/webrtc.js
CHANGED
|
@@ -121,6 +121,9 @@ export const sessionWantsToDoVideo = (sipCall) => {
|
|
|
121
121
|
const { body, } = sipCall.request || sipCall;
|
|
122
122
|
// Sometimes with InviteClientContext the body is in the body attribute ...
|
|
123
123
|
const sdp = typeof body === 'object' && body ? body.body : body;
|
|
124
|
+
if (!sdp) {
|
|
125
|
+
return sipCall.sessionDescriptionHandler?.localMediaStreamConstraints?.video;
|
|
126
|
+
}
|
|
124
127
|
return hasAnActiveVideo(sdp);
|
|
125
128
|
};
|
|
126
129
|
export const getWebRtcStats = async (sipCall) => {
|
|
@@ -241,7 +244,7 @@ export const getVideoConstraints = (video = false) => {
|
|
|
241
244
|
return false;
|
|
242
245
|
}
|
|
243
246
|
// @ts-ignore: media constraints
|
|
244
|
-
return
|
|
247
|
+
return video?.deviceId?.exact ? video : true;
|
|
245
248
|
};
|
|
246
249
|
// eslint-disable-next-line no-unused-vars
|
|
247
250
|
const getRtcOptions = () => {
|
package/esm/voice/call.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* eslint-disable no-underscore-dangle */
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
3
|
import { createActor } from 'xstate';
|
|
4
|
+
import { Inviter } from 'sip.js/lib/api/inviter';
|
|
4
5
|
import { Invitation } from 'sip.js/lib/api/invitation';
|
|
5
6
|
import { SessionState } from 'sip.js/lib/api/session-state';
|
|
6
7
|
import callStateMachine, { Actions, EstablishedActions, States, EstablishedStates } from '../state-machine/call-state-machine';
|
|
@@ -10,7 +11,7 @@ import IssueReporter from '../service/IssueReporter';
|
|
|
10
11
|
import softphone from './softphone';
|
|
11
12
|
import { getCallDisplayName, getCallNumber, getSipCallId } from '../utils/sdp';
|
|
12
13
|
import { assertCan, assertState, getState } from '../state-machine/utils';
|
|
13
|
-
import { downgradeToAudio, getLocalStream, getLocalVideoStream, getPeerConnection, getRemoteStream, getRemoteVideoStream, getStreamFromConstraints, getWebRtcStats, hasALocalVideoTrack, hasLocalVideo, hasRemoteVideo, isVideoMuted, isVideoRemotelyHeld, setLocalMediaStream, toggleVideo, upgradeToVideo } from '../utils/webrtc';
|
|
14
|
+
import { downgradeToAudio, getLocalStream, getLocalVideoStream, getPeerConnection, getRemoteStream, getRemoteVideoStream, getStreamFromConstraints, getWebRtcStats, hasALocalVideoTrack, hasLocalVideo, hasRemoteVideo, isVideoMuted, isVideoRemotelyHeld, sessionWantsToDoVideo, setLocalMediaStream, toggleVideo, upgradeToVideo } from '../utils/webrtc';
|
|
14
15
|
const logger = IssueReporter.loggerFor('call');
|
|
15
16
|
// Events
|
|
16
17
|
export const EVENT_CALL_REMOTLY_ACCEPTED = 'remotelyAccepted';
|
|
@@ -74,7 +75,7 @@ class Call extends EventEmitter {
|
|
|
74
75
|
// Mock sdk so `hasLocalVideo` will return true.
|
|
75
76
|
sessionDescriptionHandler: {
|
|
76
77
|
localMediaStream: {
|
|
77
|
-
getTracks: () => (apiCall.isVideo ? [{ kind: 'video', readyState: 'live' }] : []),
|
|
78
|
+
getTracks: () => (apiCall.isVideo ? [{ id: 'mocked', kind: 'video', readyState: 'live' }] : []),
|
|
78
79
|
},
|
|
79
80
|
},
|
|
80
81
|
};
|
|
@@ -232,13 +233,13 @@ class Call extends EventEmitter {
|
|
|
232
233
|
turnCameraOn() {
|
|
233
234
|
assertState(this.callActor, States.ESTABLISHED);
|
|
234
235
|
logger.info('call - turn camera on', { id: this.id });
|
|
235
|
-
toggleVideo(this.sipCall,
|
|
236
|
+
toggleVideo(this.sipCall, false);
|
|
236
237
|
this.emit(EVENT_CAMERA_RESUMED);
|
|
237
238
|
}
|
|
238
239
|
turnCameraOff() {
|
|
239
240
|
assertState(this.callActor, States.ESTABLISHED);
|
|
240
241
|
logger.info('call - turn camera off', { id: this.id });
|
|
241
|
-
toggleVideo(this.sipCall,
|
|
242
|
+
toggleVideo(this.sipCall, true);
|
|
242
243
|
this.emit(EVENT_CAMERA_DISABLED);
|
|
243
244
|
}
|
|
244
245
|
isMuted() {
|
|
@@ -260,7 +261,7 @@ class Call extends EventEmitter {
|
|
|
260
261
|
return this.state === States.RINGING;
|
|
261
262
|
}
|
|
262
263
|
isOutgoing() {
|
|
263
|
-
return this.sipCall instanceof
|
|
264
|
+
return this.sipCall instanceof Inviter;
|
|
264
265
|
}
|
|
265
266
|
isIncoming() {
|
|
266
267
|
return !this.isOutgoing();
|
|
@@ -405,6 +406,7 @@ class Call extends EventEmitter {
|
|
|
405
406
|
this._sendAction(Actions.MAKE_CALL);
|
|
406
407
|
}
|
|
407
408
|
onAccepted() {
|
|
409
|
+
this.answerTime = new Date();
|
|
408
410
|
this._sendAction(Actions.REMOTLY_ACCEPTED);
|
|
409
411
|
this.emit(EVENT_CALL_REMOTLY_ACCEPTED);
|
|
410
412
|
}
|
|
@@ -444,6 +446,9 @@ class Call extends EventEmitter {
|
|
|
444
446
|
hasLocalVideo() {
|
|
445
447
|
return hasLocalVideo(this.sipCall);
|
|
446
448
|
}
|
|
449
|
+
wantsToDoVideo() {
|
|
450
|
+
return sessionWantsToDoVideo(this.sipCall);
|
|
451
|
+
}
|
|
447
452
|
getLocalStream() {
|
|
448
453
|
return getLocalStream(this.sipCall);
|
|
449
454
|
}
|
|
@@ -41,7 +41,8 @@ exports.waitUntilState = waitUntilState;
|
|
|
41
41
|
const assertCan = (actor, action) => {
|
|
42
42
|
if (!(0, exports.can)(actor, action)) {
|
|
43
43
|
const currentState = actor.getSnapshot().value;
|
|
44
|
-
const
|
|
44
|
+
const currentStateString = typeof currentState === 'object' ? JSON.stringify(currentState) : currentState;
|
|
45
|
+
const message = `Invalid state transition from ${currentStateString} with action ${action}`;
|
|
45
46
|
logger.warn(message);
|
|
46
47
|
throw new InvalidStateTransition_1.default(message, action, currentState);
|
|
47
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/state-machine/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,WAAW,IAAI,gBAAgB,EAAE,KAAK,UAAU,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC7I,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,IAAI,WAAW,EAAE,KAAK,sBAAsB,IAAI,sBAAsB,EAAE,KAAK,UAAU,IAAI,UAAU,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAQ5M,eAAO,MAAM,QAAQ,UAAW,iBAAiB,GAAG,YAAY,KAAG,eAAe,GAAG,UAAU,GAAG,qBAAqB,GAAG,OAAO,UAAU,EAAE,qBAAqB,CAEjK,CAAC;AAEF,eAAO,MAAM,GAAG,UAAW,iBAAiB,GAAG,YAAY,UAAU,gBAAgB,GAAG,WAAW,GAAG,sBAAsB,KAAG,OAE9H,CAAC;AAEF,eAAO,MAAM,QAAQ,UAAW,iBAAiB,GAAG,YAAY,SAAS,eAAe,GAAG,UAAU,eAAe,qBAAqB,KAAG,OAS3I,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,iBAAiB,GAAG,YAAY,SAAS,eAAe,GAAG,UAAU,uBAAmB,QAAQ,OAAO,CAW5I,CAAC;AAEF,eAAO,MAAM,SAAS,UAAW,iBAAiB,GAAG,YAAY,UAAU,gBAAgB,GAAG,WAAW,GAAG,sBAAsB,KAAG,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/state-machine/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,WAAW,IAAI,gBAAgB,EAAE,KAAK,UAAU,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC7I,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,IAAI,WAAW,EAAE,KAAK,sBAAsB,IAAI,sBAAsB,EAAE,KAAK,UAAU,IAAI,UAAU,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAQ5M,eAAO,MAAM,QAAQ,UAAW,iBAAiB,GAAG,YAAY,KAAG,eAAe,GAAG,UAAU,GAAG,qBAAqB,GAAG,OAAO,UAAU,EAAE,qBAAqB,CAEjK,CAAC;AAEF,eAAO,MAAM,GAAG,UAAW,iBAAiB,GAAG,YAAY,UAAU,gBAAgB,GAAG,WAAW,GAAG,sBAAsB,KAAG,OAE9H,CAAC;AAEF,eAAO,MAAM,QAAQ,UAAW,iBAAiB,GAAG,YAAY,SAAS,eAAe,GAAG,UAAU,eAAe,qBAAqB,KAAG,OAS3I,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,iBAAiB,GAAG,YAAY,SAAS,eAAe,GAAG,UAAU,uBAAmB,QAAQ,OAAO,CAW5I,CAAC;AAEF,eAAO,MAAM,SAAS,UAAW,iBAAiB,GAAG,YAAY,UAAU,gBAAgB,GAAG,WAAW,GAAG,sBAAsB,KAAG,IASpI,CAAC;AAEF,eAAO,MAAM,WAAW,UAAW,iBAAiB,GAAG,YAAY,SAAS,eAAe,GAAG,UAAU,KAAG,IAO1G,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webrtc.d.ts","sourceRoot":"","sources":["../../../src/utils/webrtc.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAkB,gBAAgB,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAKpH,KAAK,SAAS,GAAG;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAC;AAEF,KAAK,UAAU,GAAG,uBAAuB,GAAG,OAAO,GAAG,SAAS,CAAC;AAUhE,eAAO,MAAM,KAAK,QAAO,OAAqE,CAAC;AAE/F,eAAO,MAAM,SAAS,QAAO,OAA+E,CAAC;AAE7G,eAAO,MAAM,YAAY,OAAQ,MAAM,KAAG,OAA0C,CAAC;AAErF,eAAO,MAAM,aAAa,OAAQ,MAAM,KAAG,MAAM;IAAE,IAAI,EAAE,MAAM,MAAM,CAAC,CAAA;CAAE,CAQvE,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,MAAM,cA0C1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAAa,OAAO,KAAG,iBAAiB,GAAG,IAAI,GAAG,SAM/E,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,OAAO,KAAG,WAAW,GAAG,IAE/D,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,OAAO,KAAG,gBAAgB,EAQjE,CAAC;AAEF,eAAO,MAAM,eAAe,YAAa,OAAO,KAAG,WAAW,GAAG,IAEhE,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,gBAAgB,KAAG,OAAgE,CAAC;AAExH,eAAO,MAAM,aAAa,YAAa,OAAO,KAAG,OAAqD,CAAC;AAEvG,eAAO,MAAM,mBAAmB,YAAa,OAAO,KAAG,OAAwE,CAAC;AAEhI,eAAO,MAAM,mBAAmB,YAAa,OAAO,KAAG,WAAW,GAAG,IAAI,GAAG,SAAsE,CAAC;AAEnJ,eAAO,MAAM,eAAe,YAAa,OAAO,KAAG,gBAAgB,EAQlE,CAAC;AAEF,eAAO,MAAM,mBAAmB,YAAa,OAAO,KAAG,OAUtD,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,OAAO,KAAG,OAAsD,CAAC;AAEzG,eAAO,MAAM,oBAAoB,YAAa,OAAO,KAAG,OAAyE,CAAC;AAElI,eAAO,MAAM,oBAAoB,YAAa,OAAO,KAAG,WAAW,GAAG,IAAI,GAAG,SAM5E,CAAC;AAEF,eAAO,MAAM,0BAA0B,YAAa,OAAO,KAAG,WAAW,GAAG,IAAI,GAAG,SAQlF,CAAC;AAEF,eAAO,MAAM,aAAa,YAAa,OAAO,KAAG,OAA4D,CAAC;AAE9G,eAAO,MAAM,cAAc,YAAa,OAAO,KAAG,OAAwE,CAAC;AAG3H,eAAO,MAAM,qBAAqB,YAAa,OAAO,KAAG,
|
|
1
|
+
{"version":3,"file":"webrtc.d.ts","sourceRoot":"","sources":["../../../src/utils/webrtc.ts"],"names":[],"mappings":"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"}
|
|
@@ -106,6 +106,7 @@ declare class Call extends EventEmitter {
|
|
|
106
106
|
getRemoteVideoStream(): MediaStream | null | undefined;
|
|
107
107
|
hasRemoteVideo(): boolean;
|
|
108
108
|
hasLocalVideo(): boolean;
|
|
109
|
+
wantsToDoVideo(): boolean;
|
|
109
110
|
getLocalStream(): MediaStream | null;
|
|
110
111
|
getLocalVideoStream(): MediaStream | null | undefined;
|
|
111
112
|
hasALocalVideoTrack(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../../src/voice/call.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../../src/voice/call.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/webrtc.js
CHANGED
|
@@ -176,12 +176,16 @@ const hasAVideoTrack = (sipCall) => (0, exports.hasALocalVideoTrack)(sipCall) ||
|
|
|
176
176
|
exports.hasAVideoTrack = hasAVideoTrack;
|
|
177
177
|
// eslint-disable-next-line no-unused-vars
|
|
178
178
|
const sessionWantsToDoVideo = (sipCall) => {
|
|
179
|
+
var _a, _b;
|
|
179
180
|
if (!sipCall) {
|
|
180
181
|
return false;
|
|
181
182
|
}
|
|
182
183
|
const { body, } = sipCall.request || sipCall;
|
|
183
184
|
// Sometimes with InviteClientContext the body is in the body attribute ...
|
|
184
185
|
const sdp = typeof body === 'object' && body ? body.body : body;
|
|
186
|
+
if (!sdp) {
|
|
187
|
+
return (_b = (_a = sipCall.sessionDescriptionHandler) === null || _a === void 0 ? void 0 : _a.localMediaStreamConstraints) === null || _b === void 0 ? void 0 : _b.video;
|
|
188
|
+
}
|
|
185
189
|
return (0, sdp_1.hasAnActiveVideo)(sdp);
|
|
186
190
|
};
|
|
187
191
|
exports.sessionWantsToDoVideo = sessionWantsToDoVideo;
|
|
@@ -308,12 +312,12 @@ exports.isAudioOnly = isAudioOnly;
|
|
|
308
312
|
const getAudioConstraints = (audio) => { var _a; return (((_a = audio === null || audio === void 0 ? void 0 : audio.deviceId) === null || _a === void 0 ? void 0 : _a.exact) ? audio : true); };
|
|
309
313
|
exports.getAudioConstraints = getAudioConstraints;
|
|
310
314
|
const getVideoConstraints = (video = false) => {
|
|
311
|
-
var _a
|
|
315
|
+
var _a;
|
|
312
316
|
if (!video) {
|
|
313
317
|
return false;
|
|
314
318
|
}
|
|
315
319
|
// @ts-ignore: media constraints
|
|
316
|
-
return ((
|
|
320
|
+
return ((_a = video === null || video === void 0 ? void 0 : video.deviceId) === null || _a === void 0 ? void 0 : _a.exact) ? video : true;
|
|
317
321
|
};
|
|
318
322
|
exports.getVideoConstraints = getVideoConstraints;
|
|
319
323
|
// eslint-disable-next-line no-unused-vars
|
package/lib/voice/call.js
CHANGED
|
@@ -39,6 +39,7 @@ exports.MESSAGE_TRACK_UPDATED = exports.MESSAGE_TYPE_SIGNAL = exports.MESSAGE_TY
|
|
|
39
39
|
/* eslint-disable no-underscore-dangle */
|
|
40
40
|
const events_1 = require("events");
|
|
41
41
|
const xstate_1 = require("xstate");
|
|
42
|
+
const inviter_1 = require("sip.js/lib/api/inviter");
|
|
42
43
|
const invitation_1 = require("sip.js/lib/api/invitation");
|
|
43
44
|
const session_state_1 = require("sip.js/lib/api/session-state");
|
|
44
45
|
const call_state_machine_1 = __importStar(require("../state-machine/call-state-machine"));
|
|
@@ -98,7 +99,7 @@ class Call extends events_1.EventEmitter {
|
|
|
98
99
|
// Mock sdk so `hasLocalVideo` will return true.
|
|
99
100
|
sessionDescriptionHandler: {
|
|
100
101
|
localMediaStream: {
|
|
101
|
-
getTracks: () => (apiCall.isVideo ? [{ kind: 'video', readyState: 'live' }] : []),
|
|
102
|
+
getTracks: () => (apiCall.isVideo ? [{ id: 'mocked', kind: 'video', readyState: 'live' }] : []),
|
|
102
103
|
},
|
|
103
104
|
},
|
|
104
105
|
};
|
|
@@ -270,13 +271,13 @@ class Call extends events_1.EventEmitter {
|
|
|
270
271
|
turnCameraOn() {
|
|
271
272
|
(0, utils_1.assertState)(this.callActor, call_state_machine_1.States.ESTABLISHED);
|
|
272
273
|
logger.info('call - turn camera on', { id: this.id });
|
|
273
|
-
(0, webrtc_1.toggleVideo)(this.sipCall,
|
|
274
|
+
(0, webrtc_1.toggleVideo)(this.sipCall, false);
|
|
274
275
|
this.emit(exports.EVENT_CAMERA_RESUMED);
|
|
275
276
|
}
|
|
276
277
|
turnCameraOff() {
|
|
277
278
|
(0, utils_1.assertState)(this.callActor, call_state_machine_1.States.ESTABLISHED);
|
|
278
279
|
logger.info('call - turn camera off', { id: this.id });
|
|
279
|
-
(0, webrtc_1.toggleVideo)(this.sipCall,
|
|
280
|
+
(0, webrtc_1.toggleVideo)(this.sipCall, true);
|
|
280
281
|
this.emit(exports.EVENT_CAMERA_DISABLED);
|
|
281
282
|
}
|
|
282
283
|
isMuted() {
|
|
@@ -298,7 +299,7 @@ class Call extends events_1.EventEmitter {
|
|
|
298
299
|
return this.state === call_state_machine_1.States.RINGING;
|
|
299
300
|
}
|
|
300
301
|
isOutgoing() {
|
|
301
|
-
return this.sipCall instanceof
|
|
302
|
+
return this.sipCall instanceof inviter_1.Inviter;
|
|
302
303
|
}
|
|
303
304
|
isIncoming() {
|
|
304
305
|
return !this.isOutgoing();
|
|
@@ -453,6 +454,7 @@ class Call extends events_1.EventEmitter {
|
|
|
453
454
|
this._sendAction(call_state_machine_1.Actions.MAKE_CALL);
|
|
454
455
|
}
|
|
455
456
|
onAccepted() {
|
|
457
|
+
this.answerTime = new Date();
|
|
456
458
|
this._sendAction(call_state_machine_1.Actions.REMOTLY_ACCEPTED);
|
|
457
459
|
this.emit(exports.EVENT_CALL_REMOTLY_ACCEPTED);
|
|
458
460
|
}
|
|
@@ -492,6 +494,9 @@ class Call extends events_1.EventEmitter {
|
|
|
492
494
|
hasLocalVideo() {
|
|
493
495
|
return (0, webrtc_1.hasLocalVideo)(this.sipCall);
|
|
494
496
|
}
|
|
497
|
+
wantsToDoVideo() {
|
|
498
|
+
return (0, webrtc_1.sessionWantsToDoVideo)(this.sipCall);
|
|
499
|
+
}
|
|
495
500
|
getLocalStream() {
|
|
496
501
|
return (0, webrtc_1.getLocalStream)(this.sipCall);
|
|
497
502
|
}
|
package/package.json
CHANGED
|
@@ -43,7 +43,8 @@ export const waitUntilState = (actor: SoftphoneActorRef | CallActorRef, state: S
|
|
|
43
43
|
export const assertCan = (actor: SoftphoneActorRef | CallActorRef, action: SoftphoneActions | CallActions | EstablishedCallActions): void => {
|
|
44
44
|
if (!can(actor, action)) {
|
|
45
45
|
const currentState = actor.getSnapshot().value;
|
|
46
|
-
const
|
|
46
|
+
const currentStateString = typeof currentState === 'object' ? JSON.stringify(currentState) : currentState;
|
|
47
|
+
const message = `Invalid state transition from ${currentStateString} with action ${action}`;
|
|
47
48
|
logger.warn(message);
|
|
48
49
|
|
|
49
50
|
throw new InvalidStateTransition(message, action, currentState as string);
|
package/src/utils/webrtc.ts
CHANGED
|
@@ -187,6 +187,10 @@ export const sessionWantsToDoVideo = (sipCall: SipCall): boolean => {
|
|
|
187
187
|
} = sipCall.request || sipCall;
|
|
188
188
|
// Sometimes with InviteClientContext the body is in the body attribute ...
|
|
189
189
|
const sdp = typeof body === 'object' && body ? body.body : body;
|
|
190
|
+
if (!sdp) {
|
|
191
|
+
return (sipCall.sessionDescriptionHandler as any)?.localMediaStreamConstraints?.video;
|
|
192
|
+
}
|
|
193
|
+
|
|
190
194
|
return hasAnActiveVideo(sdp);
|
|
191
195
|
};
|
|
192
196
|
|
|
@@ -327,7 +331,7 @@ export const getVideoConstraints = (video: Constraint = false): MediaTrackConstr
|
|
|
327
331
|
}
|
|
328
332
|
|
|
329
333
|
// @ts-ignore: media constraints
|
|
330
|
-
return
|
|
334
|
+
return video?.deviceId?.exact ? video : true;
|
|
331
335
|
};
|
|
332
336
|
|
|
333
337
|
// eslint-disable-next-line no-unused-vars
|
package/src/voice/call.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* eslint-disable no-underscore-dangle */
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
3
|
import { createActor } from 'xstate';
|
|
4
|
+
import { Inviter } from 'sip.js/lib/api/inviter';
|
|
4
5
|
import { Invitation } from 'sip.js/lib/api/invitation';
|
|
5
6
|
import { SessionState } from 'sip.js/lib/api/session-state';
|
|
6
7
|
import { OutgoingInviteRequest } from 'sip.js/lib/core';
|
|
@@ -17,7 +18,7 @@ import IssueReporter from '../service/IssueReporter';
|
|
|
17
18
|
import softphone, { Softphone } from './softphone';
|
|
18
19
|
import { getCallDisplayName, getCallNumber, getSipCallId } from '../utils/sdp';
|
|
19
20
|
import { assertCan, assertState, getState } from '../state-machine/utils';
|
|
20
|
-
import { downgradeToAudio, getLocalStream, getLocalVideoStream, getPeerConnection, getRemoteStream, getRemoteVideoStream, getStreamFromConstraints, getWebRtcStats, hasALocalVideoTrack, hasLocalVideo, hasRemoteVideo, isVideoMuted, isVideoRemotelyHeld, setLocalMediaStream, toggleVideo, upgradeToVideo } from '../utils/webrtc';
|
|
21
|
+
import { downgradeToAudio, getLocalStream, getLocalVideoStream, getPeerConnection, getRemoteStream, getRemoteVideoStream, getStreamFromConstraints, getWebRtcStats, hasALocalVideoTrack, hasLocalVideo, hasRemoteVideo, isVideoMuted, isVideoRemotelyHeld, sessionWantsToDoVideo, setLocalMediaStream, toggleVideo, upgradeToVideo } from '../utils/webrtc';
|
|
21
22
|
|
|
22
23
|
const logger = IssueReporter.loggerFor('call');
|
|
23
24
|
|
|
@@ -110,7 +111,7 @@ class Call extends EventEmitter {
|
|
|
110
111
|
// Mock sdk so `hasLocalVideo` will return true.
|
|
111
112
|
sessionDescriptionHandler: {
|
|
112
113
|
localMediaStream: {
|
|
113
|
-
getTracks: () => (apiCall.isVideo ? [{ kind: 'video', readyState: 'live' }] : []),
|
|
114
|
+
getTracks: () => (apiCall.isVideo ? [{ id: 'mocked', kind: 'video', readyState: 'live' }] : []),
|
|
114
115
|
},
|
|
115
116
|
},
|
|
116
117
|
} as any;
|
|
@@ -325,7 +326,7 @@ class Call extends EventEmitter {
|
|
|
325
326
|
turnCameraOn(): void {
|
|
326
327
|
assertState(this.callActor, States.ESTABLISHED);
|
|
327
328
|
logger.info('call - turn camera on', { id: this.id });
|
|
328
|
-
toggleVideo(this.sipCall,
|
|
329
|
+
toggleVideo(this.sipCall, false);
|
|
329
330
|
|
|
330
331
|
this.emit(EVENT_CAMERA_RESUMED);
|
|
331
332
|
}
|
|
@@ -333,7 +334,7 @@ class Call extends EventEmitter {
|
|
|
333
334
|
turnCameraOff(): void {
|
|
334
335
|
assertState(this.callActor, States.ESTABLISHED);
|
|
335
336
|
logger.info('call - turn camera off', { id: this.id });
|
|
336
|
-
toggleVideo(this.sipCall,
|
|
337
|
+
toggleVideo(this.sipCall, true);
|
|
337
338
|
|
|
338
339
|
this.emit(EVENT_CAMERA_DISABLED);
|
|
339
340
|
}
|
|
@@ -363,7 +364,7 @@ class Call extends EventEmitter {
|
|
|
363
364
|
}
|
|
364
365
|
|
|
365
366
|
isOutgoing() {
|
|
366
|
-
return this.sipCall instanceof
|
|
367
|
+
return this.sipCall instanceof Inviter;
|
|
367
368
|
}
|
|
368
369
|
|
|
369
370
|
isIncoming() {
|
|
@@ -556,6 +557,8 @@ class Call extends EventEmitter {
|
|
|
556
557
|
}
|
|
557
558
|
|
|
558
559
|
onAccepted() {
|
|
560
|
+
this.answerTime = new Date();
|
|
561
|
+
|
|
559
562
|
this._sendAction(Actions.REMOTLY_ACCEPTED);
|
|
560
563
|
this.emit(EVENT_CALL_REMOTLY_ACCEPTED);
|
|
561
564
|
}
|
|
@@ -610,6 +613,10 @@ class Call extends EventEmitter {
|
|
|
610
613
|
return hasLocalVideo(this.sipCall);
|
|
611
614
|
}
|
|
612
615
|
|
|
616
|
+
wantsToDoVideo() {
|
|
617
|
+
return sessionWantsToDoVideo(this.sipCall);
|
|
618
|
+
}
|
|
619
|
+
|
|
613
620
|
getLocalStream() {
|
|
614
621
|
return getLocalStream(this.sipCall);
|
|
615
622
|
}
|