@unboundcx/sdk 2.8.3 → 2.8.4
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/base.js +4 -0
- package/package.json +1 -1
- package/services/login.js +3 -2
- package/services/storage.js +2 -2
- package/services/video.js +54 -0
- package/services/voice.js +114 -420
package/base.js
CHANGED
|
@@ -195,6 +195,7 @@ export class BaseSDK {
|
|
|
195
195
|
params.headers = headers;
|
|
196
196
|
|
|
197
197
|
// Try transport plugins first
|
|
198
|
+
console.log(`sdk :: request :: forceFetch:${forceFetch} :: endpoint:${endpoint}`);
|
|
198
199
|
const transport = await this._getAvailableTransport(forceFetch);
|
|
199
200
|
let response;
|
|
200
201
|
if (transport) {
|
|
@@ -224,6 +225,9 @@ export class BaseSDK {
|
|
|
224
225
|
}
|
|
225
226
|
} else {
|
|
226
227
|
// No transport available, fallback to HTTP
|
|
228
|
+
if (forceFetch && process.env.AUTH_V3_TOKEN_TYPE_OVERRIDE) {
|
|
229
|
+
params.headers['x-token-type-override'] = process.env.AUTH_V3_TOKEN_TYPE_OVERRIDE;
|
|
230
|
+
}
|
|
227
231
|
return this._httpRequest(endpoint, method, params, returnRawResponse);
|
|
228
232
|
}
|
|
229
233
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unboundcx/sdk",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.4",
|
|
4
4
|
"description": "Official JavaScript SDK for the Unbound API - A comprehensive toolkit for integrating with Unbound's communication, AI, and data management services",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
package/services/login.js
CHANGED
|
@@ -51,13 +51,14 @@ export class LoginService {
|
|
|
51
51
|
return true;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
async validate() {
|
|
54
|
+
async validate(forceFetch = true) {
|
|
55
|
+
console.log('login :: validate :: forceFetch', forceFetch);
|
|
55
56
|
const options = {};
|
|
56
57
|
const validation = await this.sdk._fetch(
|
|
57
58
|
'/login/validate',
|
|
58
59
|
'POST',
|
|
59
60
|
options,
|
|
60
|
-
|
|
61
|
+
forceFetch,
|
|
61
62
|
);
|
|
62
63
|
return validation;
|
|
63
64
|
}
|
package/services/storage.js
CHANGED
|
@@ -410,7 +410,7 @@ export class StorageService {
|
|
|
410
410
|
},
|
|
411
411
|
);
|
|
412
412
|
|
|
413
|
-
const params = {};
|
|
413
|
+
const params = { returnRawResponse: true };
|
|
414
414
|
if (download) {
|
|
415
415
|
params.query = { download: 'true' };
|
|
416
416
|
}
|
|
@@ -420,7 +420,7 @@ export class StorageService {
|
|
|
420
420
|
url += `/storage/${path.startsWith('/') ? path.slice(1) : path}`;
|
|
421
421
|
}
|
|
422
422
|
|
|
423
|
-
const result = await this.sdk._fetch(url, 'GET', params);
|
|
423
|
+
const result = await this.sdk._fetch(url, 'GET', params, true);
|
|
424
424
|
return result;
|
|
425
425
|
}
|
|
426
426
|
|
package/services/video.js
CHANGED
|
@@ -44,6 +44,56 @@ export class VideoService {
|
|
|
44
44
|
return result;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
async joinRoomSip({
|
|
48
|
+
room,
|
|
49
|
+
password,
|
|
50
|
+
phoneNumber,
|
|
51
|
+
engagementSessionId,
|
|
52
|
+
voiceChannelId,
|
|
53
|
+
serverId,
|
|
54
|
+
meetingJoinType = 'outboundApi',
|
|
55
|
+
}) {
|
|
56
|
+
this.sdk.validateParams(
|
|
57
|
+
{
|
|
58
|
+
room,
|
|
59
|
+
password,
|
|
60
|
+
phoneNumber,
|
|
61
|
+
engagementSessionId,
|
|
62
|
+
voiceChannelId,
|
|
63
|
+
serverId,
|
|
64
|
+
meetingJoinType,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
room: { type: 'string', required: true },
|
|
68
|
+
password: { type: 'string', required: false },
|
|
69
|
+
phoneNumber: { type: 'string', required: true },
|
|
70
|
+
engagementSessionId: { type: 'string', required: false },
|
|
71
|
+
voiceChannelId: { type: 'string', required: true },
|
|
72
|
+
serverId: { type: 'string', required: true },
|
|
73
|
+
meetingJoinType: { type: 'string', required: true },
|
|
74
|
+
},
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
const params = {
|
|
78
|
+
body: {
|
|
79
|
+
room,
|
|
80
|
+
password,
|
|
81
|
+
phoneNumber,
|
|
82
|
+
engagementSessionId,
|
|
83
|
+
voiceChannelId,
|
|
84
|
+
serverId,
|
|
85
|
+
meetingJoinType,
|
|
86
|
+
isSip: true,
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
const result = await this.sdk._fetch(
|
|
90
|
+
`/video/${room}/join`,
|
|
91
|
+
'POST',
|
|
92
|
+
params,
|
|
93
|
+
true,
|
|
94
|
+
);
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
47
97
|
async updateParticipant(roomId, participantId, update) {
|
|
48
98
|
this.sdk.validateParams(
|
|
49
99
|
{ roomId, participantId, update },
|
|
@@ -142,6 +192,7 @@ export class VideoService {
|
|
|
142
192
|
password,
|
|
143
193
|
startTime,
|
|
144
194
|
endTime,
|
|
195
|
+
isAllDay,
|
|
145
196
|
duration,
|
|
146
197
|
durationUnit,
|
|
147
198
|
timezone,
|
|
@@ -161,6 +212,7 @@ export class VideoService {
|
|
|
161
212
|
password,
|
|
162
213
|
startTime,
|
|
163
214
|
endTime,
|
|
215
|
+
isAllDay,
|
|
164
216
|
duration,
|
|
165
217
|
durationUnit,
|
|
166
218
|
timezone,
|
|
@@ -179,6 +231,7 @@ export class VideoService {
|
|
|
179
231
|
password: { type: 'string', required: false },
|
|
180
232
|
startTime: { type: 'string', required: false },
|
|
181
233
|
endTime: { type: 'string', required: false },
|
|
234
|
+
isAllDay: { type: 'boolean', required: false },
|
|
182
235
|
duration: { type: 'number', required: false },
|
|
183
236
|
durationUnit: { type: 'string', required: false },
|
|
184
237
|
timezone: { type: 'string', required: false },
|
|
@@ -199,6 +252,7 @@ export class VideoService {
|
|
|
199
252
|
password,
|
|
200
253
|
startTime,
|
|
201
254
|
endTime,
|
|
255
|
+
isAllDay,
|
|
202
256
|
duration,
|
|
203
257
|
durationUnit,
|
|
204
258
|
timezone,
|
package/services/voice.js
CHANGED
|
@@ -3,101 +3,48 @@ export class VoiceService {
|
|
|
3
3
|
this.sdk = sdk;
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
async
|
|
6
|
+
async call({
|
|
7
7
|
to,
|
|
8
8
|
from,
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
callerIdName,
|
|
10
|
+
callerIdNumber,
|
|
11
11
|
timeout,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
recordingMaxLength,
|
|
19
|
-
transcribe,
|
|
20
|
-
transcribeLanguage,
|
|
21
|
-
webhookUrl,
|
|
22
|
-
commandId,
|
|
23
|
-
clientState,
|
|
24
|
-
customHeaders,
|
|
25
|
-
sipAuthUsername,
|
|
26
|
-
sipAuthPassword,
|
|
27
|
-
sipTransport,
|
|
28
|
-
sipHeaders,
|
|
29
|
-
ringTimeout,
|
|
30
|
-
answeringMachineDetection,
|
|
31
|
-
detectWordOrPhrase,
|
|
32
|
-
billingGroupId,
|
|
33
|
-
answerUrl,
|
|
34
|
-
answerMethod,
|
|
12
|
+
confirmAnswer,
|
|
13
|
+
app,
|
|
14
|
+
variables,
|
|
15
|
+
engagementSessionId,
|
|
16
|
+
voiceChannelId,
|
|
17
|
+
serverId,
|
|
35
18
|
}) {
|
|
36
19
|
this.sdk.validateParams(
|
|
37
|
-
{
|
|
20
|
+
{},
|
|
38
21
|
{
|
|
39
|
-
to: { type: 'string', required:
|
|
22
|
+
to: { type: 'string', required: false },
|
|
40
23
|
from: { type: 'string', required: false },
|
|
41
|
-
|
|
42
|
-
|
|
24
|
+
callerIdName: { type: 'string', required: false },
|
|
25
|
+
callerIdNumber: { type: 'string', required: false },
|
|
43
26
|
timeout: { type: 'number', required: false },
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
recordingMaxLength: { type: 'number', required: false },
|
|
51
|
-
transcribe: { type: 'boolean', required: false },
|
|
52
|
-
transcribeLanguage: { type: 'string', required: false },
|
|
53
|
-
webhookUrl: { type: 'string', required: false },
|
|
54
|
-
commandId: { type: 'string', required: false },
|
|
55
|
-
clientState: { type: 'string', required: false },
|
|
56
|
-
customHeaders: { type: 'array', required: false },
|
|
57
|
-
sipAuthUsername: { type: 'string', required: false },
|
|
58
|
-
sipAuthPassword: { type: 'string', required: false },
|
|
59
|
-
sipTransport: { type: 'string', required: false },
|
|
60
|
-
sipHeaders: { type: 'array', required: false },
|
|
61
|
-
ringTimeout: { type: 'number', required: false },
|
|
62
|
-
answeringMachineDetection: { type: 'string', required: false },
|
|
63
|
-
detectWordOrPhrase: { type: 'string', required: false },
|
|
64
|
-
billingGroupId: { type: 'string', required: false },
|
|
65
|
-
answerUrl: { type: 'string', required: false },
|
|
66
|
-
answerMethod: { type: 'string', required: false },
|
|
27
|
+
confirmAnswer: { type: 'boolean', required: false },
|
|
28
|
+
app: { type: 'object', required: false },
|
|
29
|
+
variables: { type: 'object', required: false },
|
|
30
|
+
engagementSessionId: { type: 'string', required: false },
|
|
31
|
+
voiceChannelId: { type: 'string', required: false },
|
|
32
|
+
serverId: { type: 'string', required: false },
|
|
67
33
|
},
|
|
68
34
|
);
|
|
69
35
|
|
|
70
|
-
const callData = {
|
|
36
|
+
const callData = {};
|
|
37
|
+
if (to) callData.to = to;
|
|
71
38
|
if (from) callData.from = from;
|
|
72
|
-
if (
|
|
73
|
-
if (
|
|
74
|
-
if (timeout) callData.timeout = timeout;
|
|
75
|
-
if (
|
|
76
|
-
|
|
77
|
-
if (
|
|
78
|
-
|
|
79
|
-
if (
|
|
80
|
-
if (
|
|
81
|
-
if (recordingFormat) callData.recordingFormat = recordingFormat;
|
|
82
|
-
if (recordingTrack) callData.recordingTrack = recordingTrack;
|
|
83
|
-
if (recordingMaxLength) callData.recordingMaxLength = recordingMaxLength;
|
|
84
|
-
if (transcribe !== undefined) callData.transcribe = transcribe;
|
|
85
|
-
if (transcribeLanguage) callData.transcribeLanguage = transcribeLanguage;
|
|
86
|
-
if (webhookUrl) callData.webhookUrl = webhookUrl;
|
|
87
|
-
if (commandId) callData.commandId = commandId;
|
|
88
|
-
if (clientState) callData.clientState = clientState;
|
|
89
|
-
if (customHeaders) callData.customHeaders = customHeaders;
|
|
90
|
-
if (sipAuthUsername) callData.sipAuthUsername = sipAuthUsername;
|
|
91
|
-
if (sipAuthPassword) callData.sipAuthPassword = sipAuthPassword;
|
|
92
|
-
if (sipTransport) callData.sipTransport = sipTransport;
|
|
93
|
-
if (sipHeaders) callData.sipHeaders = sipHeaders;
|
|
94
|
-
if (ringTimeout) callData.ringTimeout = ringTimeout;
|
|
95
|
-
if (answeringMachineDetection)
|
|
96
|
-
callData.answeringMachineDetection = answeringMachineDetection;
|
|
97
|
-
if (detectWordOrPhrase) callData.detectWordOrPhrase = detectWordOrPhrase;
|
|
98
|
-
if (billingGroupId) callData.billingGroupId = billingGroupId;
|
|
99
|
-
if (answerUrl) callData.answerUrl = answerUrl;
|
|
100
|
-
if (answerMethod) callData.answerMethod = answerMethod;
|
|
39
|
+
if (callerIdName) callData.callerIdName = callerIdName;
|
|
40
|
+
if (callerIdNumber) callData.callerIdNumber = callerIdNumber;
|
|
41
|
+
if (timeout !== undefined) callData.timeout = timeout;
|
|
42
|
+
if (confirmAnswer !== undefined) callData.confirmAnswer = confirmAnswer;
|
|
43
|
+
if (app) callData.app = app;
|
|
44
|
+
if (variables) callData.variables = variables;
|
|
45
|
+
if (engagementSessionId) callData.engagementSessionId = engagementSessionId;
|
|
46
|
+
if (voiceChannelId) callData.voiceChannelId = voiceChannelId;
|
|
47
|
+
if (serverId) callData.serverId = serverId;
|
|
101
48
|
|
|
102
49
|
const params = {
|
|
103
50
|
body: callData,
|
|
@@ -107,462 +54,209 @@ export class VoiceService {
|
|
|
107
54
|
return result;
|
|
108
55
|
}
|
|
109
56
|
|
|
110
|
-
async hangup(
|
|
57
|
+
async hangup(voiceChannelId) {
|
|
111
58
|
this.sdk.validateParams(
|
|
112
|
-
{
|
|
59
|
+
{ voiceChannelId },
|
|
113
60
|
{
|
|
114
|
-
|
|
115
|
-
clientState: { type: 'string', required: false },
|
|
116
|
-
commandId: { type: 'string', required: false },
|
|
61
|
+
voiceChannelId: { type: 'string', required: true },
|
|
117
62
|
},
|
|
118
63
|
);
|
|
119
64
|
|
|
120
|
-
const hangupData = {};
|
|
121
|
-
if (clientState) hangupData.clientState = clientState;
|
|
122
|
-
if (commandId) hangupData.commandId = commandId;
|
|
123
|
-
|
|
124
|
-
const params = {
|
|
125
|
-
body: hangupData,
|
|
126
|
-
};
|
|
127
|
-
|
|
128
65
|
const result = await this.sdk._fetch(
|
|
129
|
-
`/voice/calls/${
|
|
130
|
-
'
|
|
131
|
-
params,
|
|
66
|
+
`/voice/calls/${voiceChannelId}`,
|
|
67
|
+
'DELETE',
|
|
132
68
|
);
|
|
133
69
|
return result;
|
|
134
70
|
}
|
|
135
71
|
|
|
136
|
-
async hold(
|
|
72
|
+
async hold(channels) {
|
|
137
73
|
this.sdk.validateParams(
|
|
138
|
-
{
|
|
74
|
+
{ channels },
|
|
139
75
|
{
|
|
140
|
-
|
|
141
|
-
audioUrl: { type: 'string', required: false },
|
|
142
|
-
clientState: { type: 'string', required: false },
|
|
143
|
-
commandId: { type: 'string', required: false },
|
|
76
|
+
channels: { type: 'array', required: true },
|
|
144
77
|
},
|
|
145
78
|
);
|
|
146
79
|
|
|
147
|
-
const holdData = {};
|
|
148
|
-
if (audioUrl) holdData.audioUrl = audioUrl;
|
|
149
|
-
if (clientState) holdData.clientState = clientState;
|
|
150
|
-
if (commandId) holdData.commandId = commandId;
|
|
151
|
-
|
|
152
80
|
const params = {
|
|
153
|
-
body:
|
|
81
|
+
body: { channels },
|
|
154
82
|
};
|
|
155
83
|
|
|
156
|
-
const result = await this.sdk._fetch(
|
|
157
|
-
`/voice/calls/${callControlId}/actions/hold`,
|
|
158
|
-
'POST',
|
|
159
|
-
params,
|
|
160
|
-
);
|
|
84
|
+
const result = await this.sdk._fetch('/voice/calls/hold', 'PUT', params);
|
|
161
85
|
return result;
|
|
162
86
|
}
|
|
163
87
|
|
|
164
|
-
async
|
|
88
|
+
async mute(voiceChannelId, action = 'mute', direction = 'in') {
|
|
165
89
|
this.sdk.validateParams(
|
|
166
|
-
{
|
|
90
|
+
{ voiceChannelId },
|
|
167
91
|
{
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
92
|
+
voiceChannelId: { type: 'string', required: true },
|
|
93
|
+
action: { type: 'string', required: false },
|
|
94
|
+
direction: { type: 'string', required: false },
|
|
171
95
|
},
|
|
172
96
|
);
|
|
173
97
|
|
|
174
|
-
const unholdData = {};
|
|
175
|
-
if (clientState) unholdData.clientState = clientState;
|
|
176
|
-
if (commandId) unholdData.commandId = commandId;
|
|
177
|
-
|
|
178
98
|
const params = {
|
|
179
|
-
body:
|
|
99
|
+
body: { action, direction },
|
|
180
100
|
};
|
|
181
101
|
|
|
182
102
|
const result = await this.sdk._fetch(
|
|
183
|
-
`/voice/calls/${
|
|
184
|
-
'
|
|
103
|
+
`/voice/calls/mute/${voiceChannelId}`,
|
|
104
|
+
'PUT',
|
|
185
105
|
params,
|
|
186
106
|
);
|
|
187
107
|
return result;
|
|
188
108
|
}
|
|
189
109
|
|
|
190
|
-
async
|
|
191
|
-
this.
|
|
192
|
-
{ callControlId },
|
|
193
|
-
{
|
|
194
|
-
callControlId: { type: 'string', required: true },
|
|
195
|
-
clientState: { type: 'string', required: false },
|
|
196
|
-
commandId: { type: 'string', required: false },
|
|
197
|
-
},
|
|
198
|
-
);
|
|
199
|
-
|
|
200
|
-
const muteData = {};
|
|
201
|
-
if (clientState) muteData.clientState = clientState;
|
|
202
|
-
if (commandId) muteData.commandId = commandId;
|
|
203
|
-
|
|
204
|
-
const params = {
|
|
205
|
-
body: muteData,
|
|
206
|
-
};
|
|
207
|
-
|
|
208
|
-
const result = await this.sdk._fetch(
|
|
209
|
-
`/voice/calls/${callControlId}/actions/mute`,
|
|
210
|
-
'POST',
|
|
211
|
-
params,
|
|
212
|
-
);
|
|
213
|
-
return result;
|
|
110
|
+
async unmute(voiceChannelId, direction = 'in') {
|
|
111
|
+
return this.mute(voiceChannelId, 'unmute', direction);
|
|
214
112
|
}
|
|
215
113
|
|
|
216
|
-
async
|
|
114
|
+
async sendDtmf(voiceChannelId, dtmf) {
|
|
217
115
|
this.sdk.validateParams(
|
|
218
|
-
{
|
|
116
|
+
{ voiceChannelId, dtmf },
|
|
219
117
|
{
|
|
220
|
-
|
|
221
|
-
clientState: { type: 'string', required: false },
|
|
222
|
-
commandId: { type: 'string', required: false },
|
|
223
|
-
},
|
|
224
|
-
);
|
|
225
|
-
|
|
226
|
-
const unmuteData = {};
|
|
227
|
-
if (clientState) unmuteData.clientState = clientState;
|
|
228
|
-
if (commandId) unmuteData.commandId = commandId;
|
|
229
|
-
|
|
230
|
-
const params = {
|
|
231
|
-
body: unmuteData,
|
|
232
|
-
};
|
|
233
|
-
|
|
234
|
-
const result = await this.sdk._fetch(
|
|
235
|
-
`/voice/calls/${callControlId}/actions/unmute`,
|
|
236
|
-
'POST',
|
|
237
|
-
params,
|
|
238
|
-
);
|
|
239
|
-
return result;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
async sendDtmf(callControlId, dtmf, clientState, commandId) {
|
|
243
|
-
this.sdk.validateParams(
|
|
244
|
-
{ callControlId, dtmf },
|
|
245
|
-
{
|
|
246
|
-
callControlId: { type: 'string', required: true },
|
|
118
|
+
voiceChannelId: { type: 'string', required: true },
|
|
247
119
|
dtmf: { type: 'string', required: true },
|
|
248
|
-
clientState: { type: 'string', required: false },
|
|
249
|
-
commandId: { type: 'string', required: false },
|
|
250
120
|
},
|
|
251
121
|
);
|
|
252
122
|
|
|
253
|
-
const dtmfData = { dtmf };
|
|
254
|
-
if (clientState) dtmfData.clientState = clientState;
|
|
255
|
-
if (commandId) dtmfData.commandId = commandId;
|
|
256
|
-
|
|
257
123
|
const params = {
|
|
258
|
-
body:
|
|
124
|
+
body: { dtmf },
|
|
259
125
|
};
|
|
260
126
|
|
|
261
127
|
const result = await this.sdk._fetch(
|
|
262
|
-
`/voice/calls/${
|
|
128
|
+
`/voice/calls/dtmf/${voiceChannelId}`,
|
|
263
129
|
'POST',
|
|
264
130
|
params,
|
|
265
131
|
);
|
|
266
132
|
return result;
|
|
267
133
|
}
|
|
268
134
|
|
|
269
|
-
async record(
|
|
270
|
-
callControlId,
|
|
271
|
-
recordingChannels,
|
|
272
|
-
recordingFormat,
|
|
273
|
-
recordingMaxLength,
|
|
274
|
-
recordingTerminators,
|
|
275
|
-
recordingBeep,
|
|
276
|
-
recordingPlayBeep,
|
|
277
|
-
clientState,
|
|
278
|
-
commandId,
|
|
279
|
-
) {
|
|
135
|
+
async record(voiceChannelId, action = 'start', direction = 'both') {
|
|
280
136
|
this.sdk.validateParams(
|
|
281
|
-
{
|
|
137
|
+
{ voiceChannelId },
|
|
282
138
|
{
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
recordingMaxLength: { type: 'number', required: false },
|
|
287
|
-
recordingTerminators: { type: 'string', required: false },
|
|
288
|
-
recordingBeep: { type: 'boolean', required: false },
|
|
289
|
-
recordingPlayBeep: { type: 'boolean', required: false },
|
|
290
|
-
clientState: { type: 'string', required: false },
|
|
291
|
-
commandId: { type: 'string', required: false },
|
|
139
|
+
voiceChannelId: { type: 'string', required: true },
|
|
140
|
+
action: { type: 'string', required: false },
|
|
141
|
+
direction: { type: 'string', required: false },
|
|
292
142
|
},
|
|
293
143
|
);
|
|
294
144
|
|
|
295
|
-
const recordData = {};
|
|
296
|
-
if (recordingChannels) recordData.recordingChannels = recordingChannels;
|
|
297
|
-
if (recordingFormat) recordData.recordingFormat = recordingFormat;
|
|
298
|
-
if (recordingMaxLength) recordData.recordingMaxLength = recordingMaxLength;
|
|
299
|
-
if (recordingTerminators)
|
|
300
|
-
recordData.recordingTerminators = recordingTerminators;
|
|
301
|
-
if (recordingBeep !== undefined) recordData.recordingBeep = recordingBeep;
|
|
302
|
-
if (recordingPlayBeep !== undefined)
|
|
303
|
-
recordData.recordingPlayBeep = recordingPlayBeep;
|
|
304
|
-
if (clientState) recordData.clientState = clientState;
|
|
305
|
-
if (commandId) recordData.commandId = commandId;
|
|
306
|
-
|
|
307
145
|
const params = {
|
|
308
|
-
body:
|
|
146
|
+
body: { action, direction },
|
|
309
147
|
};
|
|
310
148
|
|
|
311
149
|
const result = await this.sdk._fetch(
|
|
312
|
-
`/voice/calls/${
|
|
150
|
+
`/voice/calls/record/${voiceChannelId}`,
|
|
313
151
|
'POST',
|
|
314
152
|
params,
|
|
315
153
|
);
|
|
316
154
|
return result;
|
|
317
155
|
}
|
|
318
156
|
|
|
319
|
-
async stopRecording(
|
|
320
|
-
this.
|
|
321
|
-
|
|
322
|
-
{
|
|
323
|
-
callControlId: { type: 'string', required: true },
|
|
324
|
-
clientState: { type: 'string', required: false },
|
|
325
|
-
commandId: { type: 'string', required: false },
|
|
326
|
-
},
|
|
327
|
-
);
|
|
328
|
-
|
|
329
|
-
const stopData = {};
|
|
330
|
-
if (clientState) stopData.clientState = clientState;
|
|
331
|
-
if (commandId) stopData.commandId = commandId;
|
|
157
|
+
async stopRecording(voiceChannelId, direction = 'both') {
|
|
158
|
+
return this.record(voiceChannelId, 'stop', direction);
|
|
159
|
+
}
|
|
332
160
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
161
|
+
async pauseRecording(voiceChannelId, direction = 'both') {
|
|
162
|
+
return this.record(voiceChannelId, 'pause', direction);
|
|
163
|
+
}
|
|
336
164
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
'POST',
|
|
340
|
-
params,
|
|
341
|
-
);
|
|
342
|
-
return result;
|
|
165
|
+
async resumeRecording(voiceChannelId, direction = 'both') {
|
|
166
|
+
return this.record(voiceChannelId, 'resume', direction);
|
|
343
167
|
}
|
|
344
168
|
|
|
345
169
|
async transcribe(
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
commandId,
|
|
170
|
+
voiceChannelId,
|
|
171
|
+
action = 'start',
|
|
172
|
+
direction = 'in',
|
|
173
|
+
forwardText,
|
|
174
|
+
forwardRtp,
|
|
352
175
|
) {
|
|
353
176
|
this.sdk.validateParams(
|
|
354
|
-
{
|
|
177
|
+
{ voiceChannelId },
|
|
355
178
|
{
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
commandId: { type: 'string', required: false },
|
|
179
|
+
voiceChannelId: { type: 'string', required: true },
|
|
180
|
+
action: { type: 'string', required: false },
|
|
181
|
+
direction: { type: 'string', required: false },
|
|
182
|
+
forwardText: { type: 'object', required: false },
|
|
183
|
+
forwardRtp: { type: 'object', required: false },
|
|
362
184
|
},
|
|
363
185
|
);
|
|
364
186
|
|
|
365
|
-
const
|
|
366
|
-
if (
|
|
367
|
-
|
|
368
|
-
if (transcriptionLanguage)
|
|
369
|
-
transcribeData.transcriptionLanguage = transcriptionLanguage;
|
|
370
|
-
if (transcriptionFormat)
|
|
371
|
-
transcribeData.transcriptionFormat = transcriptionFormat;
|
|
372
|
-
if (clientState) transcribeData.clientState = clientState;
|
|
373
|
-
if (commandId) transcribeData.commandId = commandId;
|
|
187
|
+
const bodyData = { action, direction };
|
|
188
|
+
if (forwardText) bodyData.forwardText = forwardText;
|
|
189
|
+
if (forwardRtp) bodyData.forwardRtp = forwardRtp;
|
|
374
190
|
|
|
375
191
|
const params = {
|
|
376
|
-
body:
|
|
192
|
+
body: bodyData,
|
|
377
193
|
};
|
|
378
194
|
|
|
379
195
|
const result = await this.sdk._fetch(
|
|
380
|
-
`/voice/calls/${
|
|
196
|
+
`/voice/calls/transcribe/${voiceChannelId}`,
|
|
381
197
|
'POST',
|
|
382
198
|
params,
|
|
383
199
|
);
|
|
384
200
|
return result;
|
|
385
201
|
}
|
|
386
202
|
|
|
387
|
-
async stopTranscribing(
|
|
388
|
-
this.
|
|
389
|
-
{ callControlId },
|
|
390
|
-
{
|
|
391
|
-
callControlId: { type: 'string', required: true },
|
|
392
|
-
clientState: { type: 'string', required: false },
|
|
393
|
-
commandId: { type: 'string', required: false },
|
|
394
|
-
},
|
|
395
|
-
);
|
|
396
|
-
|
|
397
|
-
const stopData = {};
|
|
398
|
-
if (clientState) stopData.clientState = clientState;
|
|
399
|
-
if (commandId) stopData.commandId = commandId;
|
|
400
|
-
|
|
401
|
-
const params = {
|
|
402
|
-
body: stopData,
|
|
403
|
-
};
|
|
404
|
-
|
|
405
|
-
const result = await this.sdk._fetch(
|
|
406
|
-
`/voice/calls/${callControlId}/actions/transcription_stop`,
|
|
407
|
-
'POST',
|
|
408
|
-
params,
|
|
409
|
-
);
|
|
410
|
-
return result;
|
|
203
|
+
async stopTranscribing(voiceChannelId, direction = 'in') {
|
|
204
|
+
return this.transcribe(voiceChannelId, 'stop', direction);
|
|
411
205
|
}
|
|
412
206
|
|
|
413
|
-
async transfer(
|
|
414
|
-
|
|
207
|
+
async transfer({
|
|
208
|
+
channels,
|
|
415
209
|
to,
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
commandId,
|
|
421
|
-
) {
|
|
422
|
-
this.sdk.validateParams(
|
|
423
|
-
{ callControlId, to },
|
|
424
|
-
{
|
|
425
|
-
callControlId: { type: 'string', required: true },
|
|
426
|
-
to: { type: 'string', required: true },
|
|
427
|
-
from: { type: 'string', required: false },
|
|
428
|
-
answerUrl: { type: 'string', required: false },
|
|
429
|
-
answerMethod: { type: 'string', required: false },
|
|
430
|
-
clientState: { type: 'string', required: false },
|
|
431
|
-
commandId: { type: 'string', required: false },
|
|
432
|
-
},
|
|
433
|
-
);
|
|
434
|
-
|
|
435
|
-
const transferData = { to };
|
|
436
|
-
if (from) transferData.from = from;
|
|
437
|
-
if (answerUrl) transferData.answerUrl = answerUrl;
|
|
438
|
-
if (answerMethod) transferData.answerMethod = answerMethod;
|
|
439
|
-
if (clientState) transferData.clientState = clientState;
|
|
440
|
-
if (commandId) transferData.commandId = commandId;
|
|
441
|
-
|
|
442
|
-
const params = {
|
|
443
|
-
body: transferData,
|
|
444
|
-
};
|
|
445
|
-
|
|
446
|
-
const result = await this.sdk._fetch(
|
|
447
|
-
`/voice/calls/${callControlId}/actions/transfer`,
|
|
448
|
-
'POST',
|
|
449
|
-
params,
|
|
450
|
-
);
|
|
451
|
-
return result;
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
async createConference({
|
|
455
|
-
name,
|
|
456
|
-
recordingChannels,
|
|
457
|
-
recordingFormat,
|
|
458
|
-
recordingMaxLength,
|
|
459
|
-
recordingTerminators,
|
|
460
|
-
webhookUrl,
|
|
461
|
-
commandId,
|
|
462
|
-
clientState,
|
|
210
|
+
callerIdName,
|
|
211
|
+
callerIdNumber,
|
|
212
|
+
timeout,
|
|
213
|
+
voiceApp,
|
|
463
214
|
}) {
|
|
464
215
|
this.sdk.validateParams(
|
|
465
|
-
{
|
|
216
|
+
{ channels },
|
|
466
217
|
{
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
commandId: { type: 'string', required: false },
|
|
474
|
-
clientState: { type: 'string', required: false },
|
|
475
|
-
},
|
|
476
|
-
);
|
|
477
|
-
|
|
478
|
-
const conferenceData = { name };
|
|
479
|
-
if (recordingChannels) conferenceData.recordingChannels = recordingChannels;
|
|
480
|
-
if (recordingFormat) conferenceData.recordingFormat = recordingFormat;
|
|
481
|
-
if (recordingMaxLength)
|
|
482
|
-
conferenceData.recordingMaxLength = recordingMaxLength;
|
|
483
|
-
if (recordingTerminators)
|
|
484
|
-
conferenceData.recordingTerminators = recordingTerminators;
|
|
485
|
-
if (webhookUrl) conferenceData.webhookUrl = webhookUrl;
|
|
486
|
-
if (commandId) conferenceData.commandId = commandId;
|
|
487
|
-
if (clientState) conferenceData.clientState = clientState;
|
|
488
|
-
|
|
489
|
-
const params = {
|
|
490
|
-
body: conferenceData,
|
|
491
|
-
};
|
|
492
|
-
|
|
493
|
-
const result = await this.sdk._fetch('/voice/conferences', 'POST', params);
|
|
494
|
-
return result;
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
async joinConference(
|
|
498
|
-
callControlId,
|
|
499
|
-
conferenceId,
|
|
500
|
-
startConferenceOnEnter,
|
|
501
|
-
endConferenceOnExit,
|
|
502
|
-
muted,
|
|
503
|
-
hold,
|
|
504
|
-
holdAudioUrl,
|
|
505
|
-
clientState,
|
|
506
|
-
commandId,
|
|
507
|
-
) {
|
|
508
|
-
this.sdk.validateParams(
|
|
509
|
-
{ callControlId, conferenceId },
|
|
510
|
-
{
|
|
511
|
-
callControlId: { type: 'string', required: true },
|
|
512
|
-
conferenceId: { type: 'string', required: true },
|
|
513
|
-
startConferenceOnEnter: { type: 'boolean', required: false },
|
|
514
|
-
endConferenceOnExit: { type: 'boolean', required: false },
|
|
515
|
-
muted: { type: 'boolean', required: false },
|
|
516
|
-
hold: { type: 'boolean', required: false },
|
|
517
|
-
holdAudioUrl: { type: 'string', required: false },
|
|
518
|
-
clientState: { type: 'string', required: false },
|
|
519
|
-
commandId: { type: 'string', required: false },
|
|
218
|
+
channels: { type: 'array', required: true },
|
|
219
|
+
to: { type: 'string', required: false },
|
|
220
|
+
callerIdName: { type: 'string', required: false },
|
|
221
|
+
callerIdNumber: { type: 'string', required: false },
|
|
222
|
+
timeout: { type: 'number', required: false },
|
|
223
|
+
voiceApp: { type: 'object', required: false },
|
|
520
224
|
},
|
|
521
225
|
);
|
|
522
226
|
|
|
523
|
-
const
|
|
524
|
-
if (
|
|
525
|
-
|
|
526
|
-
if (
|
|
527
|
-
|
|
528
|
-
if (
|
|
529
|
-
if (hold !== undefined) joinData.hold = hold;
|
|
530
|
-
if (holdAudioUrl) joinData.holdAudioUrl = holdAudioUrl;
|
|
531
|
-
if (clientState) joinData.clientState = clientState;
|
|
532
|
-
if (commandId) joinData.commandId = commandId;
|
|
227
|
+
const bodyData = { channels };
|
|
228
|
+
if (to) bodyData.to = to;
|
|
229
|
+
if (callerIdName) bodyData.callerIdName = callerIdName;
|
|
230
|
+
if (callerIdNumber) bodyData.callerIdNumber = callerIdNumber;
|
|
231
|
+
if (timeout !== undefined) bodyData.timeout = timeout;
|
|
232
|
+
if (voiceApp) bodyData.voiceApp = voiceApp;
|
|
533
233
|
|
|
534
234
|
const params = {
|
|
535
|
-
body:
|
|
235
|
+
body: bodyData,
|
|
536
236
|
};
|
|
537
237
|
|
|
538
238
|
const result = await this.sdk._fetch(
|
|
539
|
-
|
|
239
|
+
'/voice/calls/transfer',
|
|
540
240
|
'POST',
|
|
541
241
|
params,
|
|
542
242
|
);
|
|
543
243
|
return result;
|
|
544
244
|
}
|
|
545
245
|
|
|
546
|
-
async
|
|
246
|
+
async conference(channels) {
|
|
547
247
|
this.sdk.validateParams(
|
|
548
|
-
{
|
|
248
|
+
{ channels },
|
|
549
249
|
{
|
|
550
|
-
|
|
551
|
-
clientState: { type: 'string', required: false },
|
|
552
|
-
commandId: { type: 'string', required: false },
|
|
250
|
+
channels: { type: 'array', required: true },
|
|
553
251
|
},
|
|
554
252
|
);
|
|
555
253
|
|
|
556
|
-
const leaveData = {};
|
|
557
|
-
if (clientState) leaveData.clientState = clientState;
|
|
558
|
-
if (commandId) leaveData.commandId = commandId;
|
|
559
|
-
|
|
560
254
|
const params = {
|
|
561
|
-
body:
|
|
255
|
+
body: { channels },
|
|
562
256
|
};
|
|
563
257
|
|
|
564
258
|
const result = await this.sdk._fetch(
|
|
565
|
-
|
|
259
|
+
'/voice/calls/conference',
|
|
566
260
|
'POST',
|
|
567
261
|
params,
|
|
568
262
|
);
|