@wazo/sdk 0.38.4 → 0.38.7
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/README.md +4 -4
- package/dist/wazo-sdk.js +2 -2
- package/esm/__tests__/api-client.test.js +6 -0
- package/esm/__tests__/web-rtc-client.test.js +88 -3
- package/esm/api/calld.js +6 -0
- package/esm/api/ctid-ng.js +6 -0
- package/esm/api-client.js +6 -0
- package/esm/checker/Checker.js +38 -3
- package/esm/checker/checks/aor.js +6 -0
- package/esm/checker/checks/api.js +6 -0
- package/esm/checker/checks/index.js +38 -3
- package/esm/checker/checks/webrtc-transport.js +38 -3
- package/esm/checker/checks/webrtc.js +38 -3
- package/esm/domain/AdHocAPIConference.js +6 -0
- package/esm/domain/Call.js +6 -0
- package/esm/domain/CallSession.js +1 -1
- package/esm/domain/Features.js +6 -0
- package/esm/domain/Phone/CTIPhone.js +7 -1
- package/esm/domain/Phone/WebRTCPhone.js +3 -3
- package/esm/domain/__tests__/Call.test.js +6 -0
- package/esm/domain/__tests__/CallSession.test.js +1 -1
- package/esm/domain/__tests__/IndirectTransfer.test.js +1 -1
- package/esm/domain/__tests__/Line.test.js +5 -5
- package/esm/domain/__tests__/Room.test.js +1 -1
- package/esm/index.js +42 -8
- package/esm/lib/WazoSessionDescriptionHandler.js +30 -1
- package/esm/service/CallApi.js +6 -0
- package/esm/service/getApiClient.js +6 -0
- package/esm/simple/Auth.js +42 -8
- package/esm/simple/Configuration.js +42 -8
- package/esm/simple/Directory.js +6 -0
- package/esm/simple/Phone.js +42 -8
- package/esm/simple/Softphone.js +1 -2
- package/esm/simple/index.js +42 -8
- package/esm/simple/room/LocalParticipant.js +42 -8
- package/esm/simple/room/Participant.js +42 -8
- package/esm/simple/room/RemoteParticipant.js +42 -8
- package/esm/simple/room/Room.js +42 -8
- package/esm/simple/room/SipRoom.js +42 -8
- package/esm/simple/room/Stream.js +42 -8
- package/esm/simple/room/__tests__/RemoteParticipant.test.js +42 -8
- package/esm/simple/utils.js +42 -8
- package/esm/utils/__tests__/sdp.test.js +50 -0
- package/esm/utils/sdp.js +19 -1
- package/esm/web-rtc-client.js +38 -3
- package/lib/__tests__/api-client.test.js +6 -0
- package/lib/__tests__/web-rtc-client.test.js +88 -3
- package/lib/api/calld.js +6 -0
- package/lib/api/ctid-ng.js +6 -0
- package/lib/api-client.js +6 -0
- package/lib/checker/Checker.js +38 -3
- package/lib/checker/checks/aor.js +6 -0
- package/lib/checker/checks/api.js +6 -0
- package/lib/checker/checks/index.js +38 -3
- package/lib/checker/checks/webrtc-transport.js +38 -3
- package/lib/checker/checks/webrtc.js +38 -3
- package/lib/domain/AdHocAPIConference.js +6 -0
- package/lib/domain/Call.js +6 -0
- package/lib/domain/CallSession.js +1 -1
- package/lib/domain/Features.js +6 -0
- package/lib/domain/Phone/CTIPhone.js +7 -1
- package/lib/domain/Phone/WebRTCPhone.js +3 -3
- package/lib/domain/__tests__/Call.test.js +6 -0
- package/lib/domain/__tests__/CallSession.test.js +1 -1
- package/lib/domain/__tests__/IndirectTransfer.test.js +1 -1
- package/lib/domain/__tests__/Line.test.js +5 -5
- package/lib/domain/__tests__/Room.test.js +1 -1
- package/lib/index.js +42 -8
- package/lib/lib/WazoSessionDescriptionHandler.js +30 -1
- package/lib/service/CallApi.js +6 -0
- package/lib/service/getApiClient.js +6 -0
- package/lib/simple/Auth.js +42 -8
- package/lib/simple/Configuration.js +42 -8
- package/lib/simple/Directory.js +6 -0
- package/lib/simple/Phone.js +42 -8
- package/lib/simple/Softphone.js +1 -2
- package/lib/simple/index.js +42 -8
- package/lib/simple/room/LocalParticipant.js +42 -8
- package/lib/simple/room/Participant.js +42 -8
- package/lib/simple/room/RemoteParticipant.js +42 -8
- package/lib/simple/room/Room.js +42 -8
- package/lib/simple/room/SipRoom.js +42 -8
- package/lib/simple/room/Stream.js +42 -8
- package/lib/simple/room/__tests__/RemoteParticipant.test.js +42 -8
- package/lib/simple/utils.js +42 -8
- package/lib/utils/__tests__/sdp.test.js +50 -0
- package/lib/utils/sdp.js +19 -0
- package/lib/web-rtc-client.js +38 -3
- package/package.json +1 -1
- package/src/__tests__/web-rtc-client.test.js +50 -0
- package/src/domain/Call.js +6 -0
- package/src/domain/CallSession.js +1 -1
- package/src/domain/Phone/WebRTCPhone.js +2 -2
- package/src/domain/__tests__/Line.test.js +5 -5
- package/src/lib/WazoSessionDescriptionHandler.js +13 -2
- package/src/simple/Softphone.js +1 -2
- package/src/utils/__tests__/sdp.test.js +33 -1
- package/src/utils/sdp.js +18 -0
- package/src/web-rtc-client.js +2 -2
|
@@ -36,6 +36,7 @@ const RECORD_STATE_ACTIVE = 'active';
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
|
|
39
|
+
|
|
39
40
|
|
|
40
41
|
|
|
41
42
|
|
|
@@ -46,6 +47,7 @@ const RECORD_STATE_ACTIVE = 'active';
|
|
|
46
47
|
|
|
47
48
|
|
|
48
49
|
|
|
50
|
+
|
|
49
51
|
|
|
50
52
|
|
|
51
53
|
|
|
@@ -74,6 +76,7 @@ class Call {
|
|
|
74
76
|
|
|
75
77
|
|
|
76
78
|
|
|
79
|
+
|
|
77
80
|
|
|
78
81
|
|
|
79
82
|
|
|
@@ -98,6 +101,7 @@ class Call {
|
|
|
98
101
|
calleeNumber: plain.peer_caller_id_number,
|
|
99
102
|
dialedExtension: plain.dialed_extension,
|
|
100
103
|
isCaller: plain.is_caller,
|
|
104
|
+
isVideo: plain.is_video,
|
|
101
105
|
muted: plain.muted,
|
|
102
106
|
onHold: plain.on_hold,
|
|
103
107
|
status: plain.status,
|
|
@@ -121,6 +125,7 @@ class Call {
|
|
|
121
125
|
calleeNumber,
|
|
122
126
|
dialedExtension,
|
|
123
127
|
isCaller,
|
|
128
|
+
isVideo,
|
|
124
129
|
lineId,
|
|
125
130
|
muted,
|
|
126
131
|
onHold,
|
|
@@ -144,6 +149,7 @@ class Call {
|
|
|
144
149
|
this.startingTime = startingTime;
|
|
145
150
|
this.talkingToIds = talkingToIds || [];
|
|
146
151
|
this.recording = recording;
|
|
152
|
+
this.isVideo = !!isVideo;
|
|
147
153
|
|
|
148
154
|
// Useful to compare instead of instanceof with minified code
|
|
149
155
|
this.type = 'Call';
|
package/lib/domain/Call.js
CHANGED
|
@@ -31,6 +31,7 @@ const RECORD_STATE_ACTIVE = 'active';
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
|
|
34
|
+
|
|
34
35
|
|
|
35
36
|
|
|
36
37
|
|
|
@@ -41,6 +42,7 @@ const RECORD_STATE_ACTIVE = 'active';
|
|
|
41
42
|
|
|
42
43
|
|
|
43
44
|
|
|
45
|
+
|
|
44
46
|
|
|
45
47
|
|
|
46
48
|
|
|
@@ -69,6 +71,7 @@ class Call {
|
|
|
69
71
|
|
|
70
72
|
|
|
71
73
|
|
|
74
|
+
|
|
72
75
|
|
|
73
76
|
|
|
74
77
|
|
|
@@ -93,6 +96,7 @@ class Call {
|
|
|
93
96
|
calleeNumber: plain.peer_caller_id_number,
|
|
94
97
|
dialedExtension: plain.dialed_extension,
|
|
95
98
|
isCaller: plain.is_caller,
|
|
99
|
+
isVideo: plain.is_video,
|
|
96
100
|
muted: plain.muted,
|
|
97
101
|
onHold: plain.on_hold,
|
|
98
102
|
status: plain.status,
|
|
@@ -116,6 +120,7 @@ class Call {
|
|
|
116
120
|
calleeNumber,
|
|
117
121
|
dialedExtension,
|
|
118
122
|
isCaller,
|
|
123
|
+
isVideo,
|
|
119
124
|
lineId,
|
|
120
125
|
muted,
|
|
121
126
|
onHold,
|
|
@@ -139,6 +144,7 @@ class Call {
|
|
|
139
144
|
this.startingTime = startingTime;
|
|
140
145
|
this.talkingToIds = talkingToIds || [];
|
|
141
146
|
this.recording = recording;
|
|
147
|
+
this.isVideo = !!isVideo;
|
|
142
148
|
|
|
143
149
|
// Useful to compare instead of instanceof with minified code
|
|
144
150
|
this.type = 'Call';
|
|
@@ -416,7 +416,7 @@ class CallSession {
|
|
|
416
416
|
ringing: call.isRinging(),
|
|
417
417
|
answered: call.isUp(),
|
|
418
418
|
answeredBySystem: call.isUp() && call.talkingToIds.length === 0,
|
|
419
|
-
cameraEnabled:
|
|
419
|
+
cameraEnabled: call.isVideo,
|
|
420
420
|
dialedExtension: call.dialedExtension,
|
|
421
421
|
call,
|
|
422
422
|
conference: false, // @FIXME?
|
package/lib/domain/Features.js
CHANGED
|
@@ -3059,6 +3059,7 @@ const RECORD_STATE_ACTIVE = 'active';
|
|
|
3059
3059
|
|
|
3060
3060
|
|
|
3061
3061
|
|
|
3062
|
+
|
|
3062
3063
|
|
|
3063
3064
|
|
|
3064
3065
|
|
|
@@ -3069,6 +3070,7 @@ const RECORD_STATE_ACTIVE = 'active';
|
|
|
3069
3070
|
|
|
3070
3071
|
|
|
3071
3072
|
|
|
3073
|
+
|
|
3072
3074
|
|
|
3073
3075
|
|
|
3074
3076
|
|
|
@@ -3097,6 +3099,7 @@ class Call {
|
|
|
3097
3099
|
|
|
3098
3100
|
|
|
3099
3101
|
|
|
3102
|
+
|
|
3100
3103
|
|
|
3101
3104
|
|
|
3102
3105
|
|
|
@@ -3121,6 +3124,7 @@ class Call {
|
|
|
3121
3124
|
calleeNumber: plain.peer_caller_id_number,
|
|
3122
3125
|
dialedExtension: plain.dialed_extension,
|
|
3123
3126
|
isCaller: plain.is_caller,
|
|
3127
|
+
isVideo: plain.is_video,
|
|
3124
3128
|
muted: plain.muted,
|
|
3125
3129
|
onHold: plain.on_hold,
|
|
3126
3130
|
status: plain.status,
|
|
@@ -3144,6 +3148,7 @@ class Call {
|
|
|
3144
3148
|
calleeNumber,
|
|
3145
3149
|
dialedExtension,
|
|
3146
3150
|
isCaller,
|
|
3151
|
+
isVideo,
|
|
3147
3152
|
lineId,
|
|
3148
3153
|
muted,
|
|
3149
3154
|
onHold,
|
|
@@ -3167,6 +3172,7 @@ class Call {
|
|
|
3167
3172
|
this.startingTime = startingTime;
|
|
3168
3173
|
this.talkingToIds = talkingToIds || [];
|
|
3169
3174
|
this.recording = recording;
|
|
3175
|
+
this.isVideo = !!isVideo;
|
|
3170
3176
|
|
|
3171
3177
|
// Useful to compare instead of instanceof with minified code
|
|
3172
3178
|
this.type = 'Call';
|
|
@@ -1522,6 +1522,7 @@ const RECORD_STATE_ACTIVE = 'active';
|
|
|
1522
1522
|
|
|
1523
1523
|
|
|
1524
1524
|
|
|
1525
|
+
|
|
1525
1526
|
|
|
1526
1527
|
|
|
1527
1528
|
|
|
@@ -1532,6 +1533,7 @@ const RECORD_STATE_ACTIVE = 'active';
|
|
|
1532
1533
|
|
|
1533
1534
|
|
|
1534
1535
|
|
|
1536
|
+
|
|
1535
1537
|
|
|
1536
1538
|
|
|
1537
1539
|
|
|
@@ -1560,6 +1562,7 @@ class Call {
|
|
|
1560
1562
|
|
|
1561
1563
|
|
|
1562
1564
|
|
|
1565
|
+
|
|
1563
1566
|
|
|
1564
1567
|
|
|
1565
1568
|
|
|
@@ -1584,6 +1587,7 @@ class Call {
|
|
|
1584
1587
|
calleeNumber: plain.peer_caller_id_number,
|
|
1585
1588
|
dialedExtension: plain.dialed_extension,
|
|
1586
1589
|
isCaller: plain.is_caller,
|
|
1590
|
+
isVideo: plain.is_video,
|
|
1587
1591
|
muted: plain.muted,
|
|
1588
1592
|
onHold: plain.on_hold,
|
|
1589
1593
|
status: plain.status,
|
|
@@ -1607,6 +1611,7 @@ class Call {
|
|
|
1607
1611
|
calleeNumber,
|
|
1608
1612
|
dialedExtension,
|
|
1609
1613
|
isCaller,
|
|
1614
|
+
isVideo,
|
|
1610
1615
|
lineId,
|
|
1611
1616
|
muted,
|
|
1612
1617
|
onHold,
|
|
@@ -1630,6 +1635,7 @@ class Call {
|
|
|
1630
1635
|
this.startingTime = startingTime;
|
|
1631
1636
|
this.talkingToIds = talkingToIds || [];
|
|
1632
1637
|
this.recording = recording;
|
|
1638
|
+
this.isVideo = !!isVideo;
|
|
1633
1639
|
|
|
1634
1640
|
// Useful to compare instead of instanceof with minified code
|
|
1635
1641
|
this.type = 'Call';
|
|
@@ -2103,7 +2109,7 @@ class CallSession {
|
|
|
2103
2109
|
ringing: call.isRinging(),
|
|
2104
2110
|
answered: call.isUp(),
|
|
2105
2111
|
answeredBySystem: call.isUp() && call.talkingToIds.length === 0,
|
|
2106
|
-
cameraEnabled:
|
|
2112
|
+
cameraEnabled: call.isVideo,
|
|
2107
2113
|
dialedExtension: call.dialedExtension,
|
|
2108
2114
|
call,
|
|
2109
2115
|
conference: false, // @FIXME?
|
|
@@ -445,7 +445,7 @@ class CallSession {
|
|
|
445
445
|
ringing: call.isRinging(),
|
|
446
446
|
answered: call.isUp(),
|
|
447
447
|
answeredBySystem: call.isUp() && call.talkingToIds.length === 0,
|
|
448
|
-
cameraEnabled:
|
|
448
|
+
cameraEnabled: call.isVideo,
|
|
449
449
|
dialedExtension: call.dialedExtension,
|
|
450
450
|
call,
|
|
451
451
|
conference: false, // @FIXME?
|
|
@@ -1579,10 +1579,10 @@ class WebRTCPhone extends Emitter {
|
|
|
1579
1579
|
this.audioRingVolume = volume;
|
|
1580
1580
|
}
|
|
1581
1581
|
|
|
1582
|
-
changeAudioInputDevice(id ) {
|
|
1582
|
+
changeAudioInputDevice(id , force ) {
|
|
1583
1583
|
logger.info('WebRTC phone - changeAudio input device', { deviceId: id });
|
|
1584
1584
|
|
|
1585
|
-
return this.client.changeAudioInputDevice(id, this.currentSipSession);
|
|
1585
|
+
return this.client.changeAudioInputDevice(id, this.currentSipSession, force);
|
|
1586
1586
|
}
|
|
1587
1587
|
|
|
1588
1588
|
changeVideoInputDevice(id ) {
|
|
@@ -31,6 +31,7 @@ const RECORD_STATE_ACTIVE = 'active';
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
|
|
34
|
+
|
|
34
35
|
|
|
35
36
|
|
|
36
37
|
|
|
@@ -41,6 +42,7 @@ const RECORD_STATE_ACTIVE = 'active';
|
|
|
41
42
|
|
|
42
43
|
|
|
43
44
|
|
|
45
|
+
|
|
44
46
|
|
|
45
47
|
|
|
46
48
|
|
|
@@ -69,6 +71,7 @@ class Call {
|
|
|
69
71
|
|
|
70
72
|
|
|
71
73
|
|
|
74
|
+
|
|
72
75
|
|
|
73
76
|
|
|
74
77
|
|
|
@@ -93,6 +96,7 @@ class Call {
|
|
|
93
96
|
calleeNumber: plain.peer_caller_id_number,
|
|
94
97
|
dialedExtension: plain.dialed_extension,
|
|
95
98
|
isCaller: plain.is_caller,
|
|
99
|
+
isVideo: plain.is_video,
|
|
96
100
|
muted: plain.muted,
|
|
97
101
|
onHold: plain.on_hold,
|
|
98
102
|
status: plain.status,
|
|
@@ -116,6 +120,7 @@ class Call {
|
|
|
116
120
|
calleeNumber,
|
|
117
121
|
dialedExtension,
|
|
118
122
|
isCaller,
|
|
123
|
+
isVideo,
|
|
119
124
|
lineId,
|
|
120
125
|
muted,
|
|
121
126
|
onHold,
|
|
@@ -139,6 +144,7 @@ class Call {
|
|
|
139
144
|
this.startingTime = startingTime;
|
|
140
145
|
this.talkingToIds = talkingToIds || [];
|
|
141
146
|
this.recording = recording;
|
|
147
|
+
this.isVideo = !!isVideo;
|
|
142
148
|
|
|
143
149
|
// Useful to compare instead of instanceof with minified code
|
|
144
150
|
this.type = 'Call';
|
|
@@ -416,7 +416,7 @@ class CallSession {
|
|
|
416
416
|
ringing: call.isRinging(),
|
|
417
417
|
answered: call.isUp(),
|
|
418
418
|
answeredBySystem: call.isUp() && call.talkingToIds.length === 0,
|
|
419
|
-
cameraEnabled:
|
|
419
|
+
cameraEnabled: call.isVideo,
|
|
420
420
|
dialedExtension: call.dialedExtension,
|
|
421
421
|
call,
|
|
422
422
|
conference: false, // @FIXME?
|
|
@@ -416,7 +416,7 @@ class CallSession {
|
|
|
416
416
|
ringing: call.isRinging(),
|
|
417
417
|
answered: call.isUp(),
|
|
418
418
|
answeredBySystem: call.isUp() && call.talkingToIds.length === 0,
|
|
419
|
-
cameraEnabled:
|
|
419
|
+
cameraEnabled: call.isVideo,
|
|
420
420
|
dialedExtension: call.dialedExtension,
|
|
421
421
|
call,
|
|
422
422
|
conference: false, // @FIXME?
|
|
@@ -100,7 +100,7 @@ describe('Line domain', () => {
|
|
|
100
100
|
username: 'ipcor1pj',
|
|
101
101
|
links: [
|
|
102
102
|
{
|
|
103
|
-
href: 'https://stack.
|
|
103
|
+
href: 'https://stack.example.com/api/confd/1.1/endpoints/sip/19',
|
|
104
104
|
rel: 'endpoint_sip',
|
|
105
105
|
},
|
|
106
106
|
],
|
|
@@ -114,7 +114,7 @@ describe('Line domain', () => {
|
|
|
114
114
|
context: 'default',
|
|
115
115
|
links: [
|
|
116
116
|
{
|
|
117
|
-
href: 'https://stack.
|
|
117
|
+
href: 'https://stack.example.com/api/confd/1.1/extensions/59',
|
|
118
118
|
rel: 'extensions',
|
|
119
119
|
},
|
|
120
120
|
],
|
|
@@ -122,7 +122,7 @@ describe('Line domain', () => {
|
|
|
122
122
|
],
|
|
123
123
|
links: [
|
|
124
124
|
{
|
|
125
|
-
href: 'https://stack.
|
|
125
|
+
href: 'https://stack.example.com/api/confd/1.1/lines/8',
|
|
126
126
|
rel: 'lines',
|
|
127
127
|
},
|
|
128
128
|
],
|
|
@@ -140,7 +140,7 @@ describe('Line domain', () => {
|
|
|
140
140
|
context: 'default',
|
|
141
141
|
links: [
|
|
142
142
|
{
|
|
143
|
-
href: 'https://stack.
|
|
143
|
+
href: 'https://stack.example.com/api/confd/1.1/extensions/59',
|
|
144
144
|
rel: 'extensions',
|
|
145
145
|
},
|
|
146
146
|
],
|
|
@@ -150,7 +150,7 @@ describe('Line domain', () => {
|
|
|
150
150
|
id: 19,
|
|
151
151
|
links: [
|
|
152
152
|
{
|
|
153
|
-
href: 'https://stack.
|
|
153
|
+
href: 'https://stack.example.com/api/confd/1.1/endpoints/sip/19',
|
|
154
154
|
rel: 'endpoint_sip',
|
|
155
155
|
},
|
|
156
156
|
],
|
|
@@ -416,7 +416,7 @@ class CallSession {
|
|
|
416
416
|
ringing: call.isRinging(),
|
|
417
417
|
answered: call.isUp(),
|
|
418
418
|
answeredBySystem: call.isUp() && call.talkingToIds.length === 0,
|
|
419
|
-
cameraEnabled:
|
|
419
|
+
cameraEnabled: call.isVideo,
|
|
420
420
|
dialedExtension: call.dialedExtension,
|
|
421
421
|
call,
|
|
422
422
|
conference: false, // @FIXME?
|
package/lib/index.js
CHANGED
|
@@ -3083,6 +3083,7 @@ const RECORD_STATE_ACTIVE = 'active';
|
|
|
3083
3083
|
|
|
3084
3084
|
|
|
3085
3085
|
|
|
3086
|
+
|
|
3086
3087
|
|
|
3087
3088
|
|
|
3088
3089
|
|
|
@@ -3093,6 +3094,7 @@ const RECORD_STATE_ACTIVE = 'active';
|
|
|
3093
3094
|
|
|
3094
3095
|
|
|
3095
3096
|
|
|
3097
|
+
|
|
3096
3098
|
|
|
3097
3099
|
|
|
3098
3100
|
|
|
@@ -3121,6 +3123,7 @@ class Call {
|
|
|
3121
3123
|
|
|
3122
3124
|
|
|
3123
3125
|
|
|
3126
|
+
|
|
3124
3127
|
|
|
3125
3128
|
|
|
3126
3129
|
|
|
@@ -3145,6 +3148,7 @@ class Call {
|
|
|
3145
3148
|
calleeNumber: plain.peer_caller_id_number,
|
|
3146
3149
|
dialedExtension: plain.dialed_extension,
|
|
3147
3150
|
isCaller: plain.is_caller,
|
|
3151
|
+
isVideo: plain.is_video,
|
|
3148
3152
|
muted: plain.muted,
|
|
3149
3153
|
onHold: plain.on_hold,
|
|
3150
3154
|
status: plain.status,
|
|
@@ -3168,6 +3172,7 @@ class Call {
|
|
|
3168
3172
|
calleeNumber,
|
|
3169
3173
|
dialedExtension,
|
|
3170
3174
|
isCaller,
|
|
3175
|
+
isVideo,
|
|
3171
3176
|
lineId,
|
|
3172
3177
|
muted,
|
|
3173
3178
|
onHold,
|
|
@@ -3191,6 +3196,7 @@ class Call {
|
|
|
3191
3196
|
this.startingTime = startingTime;
|
|
3192
3197
|
this.talkingToIds = talkingToIds || [];
|
|
3193
3198
|
this.recording = recording;
|
|
3199
|
+
this.isVideo = !!isVideo;
|
|
3194
3200
|
|
|
3195
3201
|
// Useful to compare instead of instanceof with minified code
|
|
3196
3202
|
this.type = 'Call';
|
|
@@ -3664,7 +3670,7 @@ class CallSession {
|
|
|
3664
3670
|
ringing: call.isRinging(),
|
|
3665
3671
|
answered: call.isUp(),
|
|
3666
3672
|
answeredBySystem: call.isUp() && call.talkingToIds.length === 0,
|
|
3667
|
-
cameraEnabled:
|
|
3673
|
+
cameraEnabled: call.isVideo,
|
|
3668
3674
|
dialedExtension: call.dialedExtension,
|
|
3669
3675
|
call,
|
|
3670
3676
|
conference: false, // @FIXME?
|
|
@@ -5730,6 +5736,24 @@ const fixSdp = (sdp , candidates , forcePort = true)
|
|
|
5730
5736
|
return fixed;
|
|
5731
5737
|
};
|
|
5732
5738
|
|
|
5739
|
+
const addIcesInAllBundles = (sdp ) => {
|
|
5740
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5741
|
+
|
|
5742
|
+
const mediaWithCandidate = parsedSdp.media.find(media => !!media.candidates);
|
|
5743
|
+
if (!mediaWithCandidate) {
|
|
5744
|
+
return sdp;
|
|
5745
|
+
}
|
|
5746
|
+
|
|
5747
|
+
const { candidates } = mediaWithCandidate;
|
|
5748
|
+
|
|
5749
|
+
parsedSdp.media = parsedSdp.media.map(media => ({
|
|
5750
|
+
...media,
|
|
5751
|
+
candidates: media.candidates || candidates,
|
|
5752
|
+
}));
|
|
5753
|
+
|
|
5754
|
+
return sdpParser__default['default'].write(parsedSdp);
|
|
5755
|
+
};
|
|
5756
|
+
|
|
5733
5757
|
/* global RTCSessionDescriptionInit, navigator */
|
|
5734
5758
|
|
|
5735
5759
|
const wazoLogger = IssueReporter$1 ? IssueReporter$1.loggerFor('webrtc-sdh') : console;
|
|
@@ -5828,6 +5852,14 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
|
|
|
5828
5852
|
wazoLogger.trace('onicecandidate', event.candidate ? event.candidate.candidate : { done: true });
|
|
5829
5853
|
if (event.candidate) {
|
|
5830
5854
|
this.gatheredCandidates.push(parseCandidate$1(event.candidate.candidate));
|
|
5855
|
+
|
|
5856
|
+
// When receiving a `srflx` or a `relay` candidate, consider the negotiation done.
|
|
5857
|
+
if (event.candidate.candidate.indexOf('srflx') !== -1 || event.candidate.candidate.indexOf('relay') !== -1) {
|
|
5858
|
+
wazoLogger.info('A valid ice was found, triggering ice gathering complete callback.', {
|
|
5859
|
+
ice: event.candidate.candidate,
|
|
5860
|
+
});
|
|
5861
|
+
this.iceGatheringComplete();
|
|
5862
|
+
}
|
|
5831
5863
|
}
|
|
5832
5864
|
};
|
|
5833
5865
|
|
|
@@ -5851,7 +5883,10 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
|
|
|
5851
5883
|
|
|
5852
5884
|
// Check if we got ICEs
|
|
5853
5885
|
if (sdp.indexOf('a=candidate') !== -1) {
|
|
5854
|
-
return
|
|
5886
|
+
return {
|
|
5887
|
+
type: description.type,
|
|
5888
|
+
sdp: addIcesInAllBundles(sdp),
|
|
5889
|
+
};
|
|
5855
5890
|
}
|
|
5856
5891
|
|
|
5857
5892
|
wazoLogger.info('No ICE candidates found in SDP, fixing it with gathered ices', this.gatheredCandidates);
|
|
@@ -7311,11 +7346,11 @@ class WebRTCClient extends Emitter {
|
|
|
7311
7346
|
});
|
|
7312
7347
|
}
|
|
7313
7348
|
|
|
7314
|
-
changeAudioInputDevice(id , session ) {
|
|
7349
|
+
changeAudioInputDevice(id , session , force ) {
|
|
7315
7350
|
const currentId = this.getAudioDeviceId();
|
|
7316
7351
|
logger$9.info('setting audio input device', { id, currentId, session: !!session });
|
|
7317
7352
|
|
|
7318
|
-
if (id === currentId) {
|
|
7353
|
+
if (!force && id === currentId) {
|
|
7319
7354
|
return null;
|
|
7320
7355
|
}
|
|
7321
7356
|
|
|
@@ -10012,10 +10047,10 @@ class WebRTCPhone extends Emitter {
|
|
|
10012
10047
|
this.audioRingVolume = volume;
|
|
10013
10048
|
}
|
|
10014
10049
|
|
|
10015
|
-
changeAudioInputDevice(id ) {
|
|
10050
|
+
changeAudioInputDevice(id , force ) {
|
|
10016
10051
|
logger$7.info('WebRTC phone - changeAudio input device', { deviceId: id });
|
|
10017
10052
|
|
|
10018
|
-
return this.client.changeAudioInputDevice(id, this.currentSipSession);
|
|
10053
|
+
return this.client.changeAudioInputDevice(id, this.currentSipSession, force);
|
|
10019
10054
|
}
|
|
10020
10055
|
|
|
10021
10056
|
changeVideoInputDevice(id ) {
|
|
@@ -14240,8 +14275,7 @@ class Softphone {
|
|
|
14240
14275
|
window.addEventListener('message', this._onMessage.bind(this), false);
|
|
14241
14276
|
|
|
14242
14277
|
if (!server) {
|
|
14243
|
-
|
|
14244
|
-
server = 'stack.dev.wazo.io';
|
|
14278
|
+
throw new Error('`server` is not set');
|
|
14245
14279
|
}
|
|
14246
14280
|
|
|
14247
14281
|
const config = { server };
|
|
@@ -452,6 +452,24 @@ const fixSdp = (sdp , candidates , forcePort = true)
|
|
|
452
452
|
return fixed;
|
|
453
453
|
};
|
|
454
454
|
|
|
455
|
+
const addIcesInAllBundles = (sdp ) => {
|
|
456
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
457
|
+
|
|
458
|
+
const mediaWithCandidate = parsedSdp.media.find(media => !!media.candidates);
|
|
459
|
+
if (!mediaWithCandidate) {
|
|
460
|
+
return sdp;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
const { candidates } = mediaWithCandidate;
|
|
464
|
+
|
|
465
|
+
parsedSdp.media = parsedSdp.media.map(media => ({
|
|
466
|
+
...media,
|
|
467
|
+
candidates: media.candidates || candidates,
|
|
468
|
+
}));
|
|
469
|
+
|
|
470
|
+
return sdpParser__default['default'].write(parsedSdp);
|
|
471
|
+
};
|
|
472
|
+
|
|
455
473
|
/* global RTCSessionDescriptionInit, navigator */
|
|
456
474
|
|
|
457
475
|
const wazoLogger = IssueReporter$1 ? IssueReporter$1.loggerFor('webrtc-sdh') : console;
|
|
@@ -550,6 +568,14 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
|
|
|
550
568
|
wazoLogger.trace('onicecandidate', event.candidate ? event.candidate.candidate : { done: true });
|
|
551
569
|
if (event.candidate) {
|
|
552
570
|
this.gatheredCandidates.push(parseCandidate(event.candidate.candidate));
|
|
571
|
+
|
|
572
|
+
// When receiving a `srflx` or a `relay` candidate, consider the negotiation done.
|
|
573
|
+
if (event.candidate.candidate.indexOf('srflx') !== -1 || event.candidate.candidate.indexOf('relay') !== -1) {
|
|
574
|
+
wazoLogger.info('A valid ice was found, triggering ice gathering complete callback.', {
|
|
575
|
+
ice: event.candidate.candidate,
|
|
576
|
+
});
|
|
577
|
+
this.iceGatheringComplete();
|
|
578
|
+
}
|
|
553
579
|
}
|
|
554
580
|
};
|
|
555
581
|
|
|
@@ -573,7 +599,10 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
|
|
|
573
599
|
|
|
574
600
|
// Check if we got ICEs
|
|
575
601
|
if (sdp.indexOf('a=candidate') !== -1) {
|
|
576
|
-
return
|
|
602
|
+
return {
|
|
603
|
+
type: description.type,
|
|
604
|
+
sdp: addIcesInAllBundles(sdp),
|
|
605
|
+
};
|
|
577
606
|
}
|
|
578
607
|
|
|
579
608
|
wazoLogger.info('No ICE candidates found in SDP, fixing it with gathered ices', this.gatheredCandidates);
|
package/lib/service/CallApi.js
CHANGED
|
@@ -36,6 +36,7 @@ const RECORD_STATE_ACTIVE = 'active';
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
|
|
39
|
+
|
|
39
40
|
|
|
40
41
|
|
|
41
42
|
|
|
@@ -46,6 +47,7 @@ const RECORD_STATE_ACTIVE = 'active';
|
|
|
46
47
|
|
|
47
48
|
|
|
48
49
|
|
|
50
|
+
|
|
49
51
|
|
|
50
52
|
|
|
51
53
|
|
|
@@ -74,6 +76,7 @@ class Call {
|
|
|
74
76
|
|
|
75
77
|
|
|
76
78
|
|
|
79
|
+
|
|
77
80
|
|
|
78
81
|
|
|
79
82
|
|
|
@@ -98,6 +101,7 @@ class Call {
|
|
|
98
101
|
calleeNumber: plain.peer_caller_id_number,
|
|
99
102
|
dialedExtension: plain.dialed_extension,
|
|
100
103
|
isCaller: plain.is_caller,
|
|
104
|
+
isVideo: plain.is_video,
|
|
101
105
|
muted: plain.muted,
|
|
102
106
|
onHold: plain.on_hold,
|
|
103
107
|
status: plain.status,
|
|
@@ -121,6 +125,7 @@ class Call {
|
|
|
121
125
|
calleeNumber,
|
|
122
126
|
dialedExtension,
|
|
123
127
|
isCaller,
|
|
128
|
+
isVideo,
|
|
124
129
|
lineId,
|
|
125
130
|
muted,
|
|
126
131
|
onHold,
|
|
@@ -144,6 +149,7 @@ class Call {
|
|
|
144
149
|
this.startingTime = startingTime;
|
|
145
150
|
this.talkingToIds = talkingToIds || [];
|
|
146
151
|
this.recording = recording;
|
|
152
|
+
this.isVideo = !!isVideo;
|
|
147
153
|
|
|
148
154
|
// Useful to compare instead of instanceof with minified code
|
|
149
155
|
this.type = 'Call';
|
|
@@ -3059,6 +3059,7 @@ const RECORD_STATE_ACTIVE = 'active';
|
|
|
3059
3059
|
|
|
3060
3060
|
|
|
3061
3061
|
|
|
3062
|
+
|
|
3062
3063
|
|
|
3063
3064
|
|
|
3064
3065
|
|
|
@@ -3069,6 +3070,7 @@ const RECORD_STATE_ACTIVE = 'active';
|
|
|
3069
3070
|
|
|
3070
3071
|
|
|
3071
3072
|
|
|
3073
|
+
|
|
3072
3074
|
|
|
3073
3075
|
|
|
3074
3076
|
|
|
@@ -3097,6 +3099,7 @@ class Call {
|
|
|
3097
3099
|
|
|
3098
3100
|
|
|
3099
3101
|
|
|
3102
|
+
|
|
3100
3103
|
|
|
3101
3104
|
|
|
3102
3105
|
|
|
@@ -3121,6 +3124,7 @@ class Call {
|
|
|
3121
3124
|
calleeNumber: plain.peer_caller_id_number,
|
|
3122
3125
|
dialedExtension: plain.dialed_extension,
|
|
3123
3126
|
isCaller: plain.is_caller,
|
|
3127
|
+
isVideo: plain.is_video,
|
|
3124
3128
|
muted: plain.muted,
|
|
3125
3129
|
onHold: plain.on_hold,
|
|
3126
3130
|
status: plain.status,
|
|
@@ -3144,6 +3148,7 @@ class Call {
|
|
|
3144
3148
|
calleeNumber,
|
|
3145
3149
|
dialedExtension,
|
|
3146
3150
|
isCaller,
|
|
3151
|
+
isVideo,
|
|
3147
3152
|
lineId,
|
|
3148
3153
|
muted,
|
|
3149
3154
|
onHold,
|
|
@@ -3167,6 +3172,7 @@ class Call {
|
|
|
3167
3172
|
this.startingTime = startingTime;
|
|
3168
3173
|
this.talkingToIds = talkingToIds || [];
|
|
3169
3174
|
this.recording = recording;
|
|
3175
|
+
this.isVideo = !!isVideo;
|
|
3170
3176
|
|
|
3171
3177
|
// Useful to compare instead of instanceof with minified code
|
|
3172
3178
|
this.type = 'Call';
|