@snugdesk/avaya-ipo-widget 0.1.1 → 0.2.1
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/fesm2022/snugdesk-avaya-ipo-widget.mjs +3506 -1815
- package/fesm2022/snugdesk-avaya-ipo-widget.mjs.map +1 -1
- package/index.d.ts +551 -263
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -1,65 +1,17 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { NgZone, OnInit,
|
|
3
|
-
import * as
|
|
2
|
+
import { NgZone, OnInit, OnDestroy, EventEmitter, ChangeDetectorRef, AfterViewInit, ElementRef } from '@angular/core';
|
|
3
|
+
import * as i14 from '@angular/forms';
|
|
4
4
|
import { FormGroup, FormBuilder } from '@angular/forms';
|
|
5
|
-
import { HttpClient } from '@angular/common/http';
|
|
6
5
|
import * as rxjs from 'rxjs';
|
|
7
|
-
import { BehaviorSubject, Subject
|
|
8
|
-
import {
|
|
9
|
-
import * as
|
|
6
|
+
import { BehaviorSubject, Subject } from 'rxjs';
|
|
7
|
+
import { HttpClient } from '@angular/common/http';
|
|
8
|
+
import * as i19 from 'ngx-intl-tel-input';
|
|
10
9
|
import { CountryISO, SearchCountryField } from 'ngx-intl-tel-input';
|
|
11
|
-
import * as
|
|
12
|
-
import * as
|
|
13
|
-
import * as
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
callId: string;
|
|
17
|
-
phoneNumber: string;
|
|
18
|
-
lookupPhoneNumber: any;
|
|
19
|
-
duration: number;
|
|
20
|
-
timer?: any;
|
|
21
|
-
isMuted: boolean;
|
|
22
|
-
isOnHold: boolean;
|
|
23
|
-
startTime: number;
|
|
24
|
-
slot?: '1' | '2' | '3';
|
|
25
|
-
}
|
|
26
|
-
interface CallMetadata {
|
|
27
|
-
tenantId: string;
|
|
28
|
-
agentId: string;
|
|
29
|
-
phoneNumber: string;
|
|
30
|
-
callId: string;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
interface RecordingSession {
|
|
34
|
-
audioContext: AudioContext;
|
|
35
|
-
recordingStream: MediaStreamAudioDestinationNode;
|
|
36
|
-
recorder?: MediaRecorder | null;
|
|
37
|
-
metadata: CallMetadata;
|
|
38
|
-
stopping: boolean;
|
|
39
|
-
chunkIndex: number;
|
|
40
|
-
chunkTimer?: number;
|
|
41
|
-
}
|
|
42
|
-
declare class RecordingManagerService {
|
|
43
|
-
private http;
|
|
44
|
-
private sessions;
|
|
45
|
-
private readonly MIME_TYPE_PREFERRED;
|
|
46
|
-
private readonly MIME_TYPE_FALLBACK;
|
|
47
|
-
private readonly CHUNK_DURATION_MS;
|
|
48
|
-
private readonly AUDIO_CONTEXT_CLOSE_DELAY_MS;
|
|
49
|
-
private readonly CALL_HISTORY_API_URL;
|
|
50
|
-
constructor(http: HttpClient);
|
|
51
|
-
startRecording(localMediaStream: MediaStream, remoteMediaStream: MediaStream, metadata: CallMetadata): RecordingSession | undefined;
|
|
52
|
-
getSession(callId: string): RecordingSession | undefined;
|
|
53
|
-
stopRecording(callId: string): void;
|
|
54
|
-
/** Start a new MediaRecorder for the next chunk so the blob has its own headers */
|
|
55
|
-
private startNextChunk;
|
|
56
|
-
private uploadCallRecording;
|
|
57
|
-
private convertBlobToBase64;
|
|
58
|
-
private generateFilename;
|
|
59
|
-
private generateChunkFilename;
|
|
60
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<RecordingManagerService, never>;
|
|
61
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<RecordingManagerService>;
|
|
62
|
-
}
|
|
10
|
+
import * as i13 from '@angular/common';
|
|
11
|
+
import * as i15 from '@angular/material/form-field';
|
|
12
|
+
import * as i16 from '@angular/material/input';
|
|
13
|
+
import * as i17 from '@angular/material/icon';
|
|
14
|
+
import * as i18 from '@angular/material/button';
|
|
63
15
|
|
|
64
16
|
interface RemoteMedia {
|
|
65
17
|
callId: string;
|
|
@@ -76,28 +28,68 @@ declare class AvayaIPOService {
|
|
|
76
28
|
callId: string;
|
|
77
29
|
farEndNumber: string;
|
|
78
30
|
}>;
|
|
31
|
+
callTerminateSubject: Subject<{
|
|
32
|
+
callId: string;
|
|
33
|
+
reason: any;
|
|
34
|
+
}>;
|
|
35
|
+
outgoingDialSubject: BehaviorSubject<{
|
|
36
|
+
dialed: string;
|
|
37
|
+
}>;
|
|
38
|
+
private ringAudio;
|
|
39
|
+
private lastIncomingCall;
|
|
79
40
|
callStateSubject: Subject<{
|
|
80
41
|
callId: string;
|
|
81
42
|
state: string;
|
|
82
43
|
}>;
|
|
44
|
+
transferStatusSubject: Subject<{
|
|
45
|
+
callId?: string;
|
|
46
|
+
success: boolean;
|
|
47
|
+
message: string;
|
|
48
|
+
}>;
|
|
49
|
+
private transferInProgressCallId;
|
|
83
50
|
private callSlots;
|
|
84
51
|
activeCallsMap: Map<string, any>;
|
|
85
52
|
activeCallId: string | null;
|
|
86
53
|
currentcallId: string | null;
|
|
54
|
+
getLastIncomingCall(): {
|
|
55
|
+
callId: string;
|
|
56
|
+
farEndNumber: string;
|
|
57
|
+
} | null;
|
|
58
|
+
clearLastIncomingCall(): void;
|
|
59
|
+
notifyOutgoingDial(dialed: string): void;
|
|
60
|
+
clearOutgoingDial(): void;
|
|
61
|
+
getActiveCallCount(): number;
|
|
62
|
+
setLastIncomingCall(callId: string, farEndNumber: string): void;
|
|
63
|
+
private startRingTone;
|
|
64
|
+
private stopRingTone;
|
|
87
65
|
private agentId;
|
|
88
66
|
private loginStatusSubject;
|
|
89
67
|
loginStatus$: rxjs.Observable<boolean>;
|
|
90
68
|
private readonly DOM_TAGS;
|
|
91
|
-
private
|
|
69
|
+
private configTemplate;
|
|
92
70
|
private readonly agentStatusApiUrl;
|
|
93
71
|
private readonly CALL_HISTORY_API_URL;
|
|
94
72
|
private prewarmedStream?;
|
|
95
73
|
private isSafari;
|
|
96
74
|
private _rpcPatched;
|
|
75
|
+
private _rpcMessageListenerWs?;
|
|
76
|
+
private isLoggedIn;
|
|
77
|
+
private initAttempts;
|
|
97
78
|
constructor(zone: NgZone, http: HttpClient);
|
|
79
|
+
setConfigValues(opts: {
|
|
80
|
+
serviceType?: string;
|
|
81
|
+
gatewayIp?: string;
|
|
82
|
+
gatewayPort?: string;
|
|
83
|
+
stunIp?: string;
|
|
84
|
+
stunPort?: string;
|
|
85
|
+
turnIp?: string;
|
|
86
|
+
turnPort?: string;
|
|
87
|
+
}): void;
|
|
98
88
|
init(): void;
|
|
99
|
-
logIn(username: string, password: string): void;
|
|
89
|
+
logIn(username: string, password: string, attempt?: number): void;
|
|
90
|
+
private logCliCapabilities;
|
|
100
91
|
logOut(): void;
|
|
92
|
+
logout(): void;
|
|
101
93
|
getAlternateServerConfig(): any;
|
|
102
94
|
getDeviceList(): void;
|
|
103
95
|
setDeviceIds(deviceIds: any): void;
|
|
@@ -129,13 +121,13 @@ declare class AvayaIPOService {
|
|
|
129
121
|
swapLines(): void;
|
|
130
122
|
swapToSlot(targetSlot: '1' | '2' | '3'): void;
|
|
131
123
|
dropCallBySlot(targetSlot: '1' | '2' | '3'): void;
|
|
132
|
-
mergeCall(): void;
|
|
133
124
|
logCall(callData: any): rxjs.Observable<Object>;
|
|
134
125
|
getActiveCallId(): string | null;
|
|
135
126
|
initLocalMic(): Promise<void>;
|
|
136
127
|
private patchRpcForTransfers;
|
|
137
128
|
makeCallWithCustomData(destination: string, dataToSend: string): Promise<'1' | '2' | '3' | null>;
|
|
138
129
|
transferCallWithTag(target: string, type: 'Attended' | 'Blind'): void;
|
|
130
|
+
consumeTransferInProgress(callId: string): boolean;
|
|
139
131
|
private _doPatch;
|
|
140
132
|
/** Pre-warm microphone so AWL always has a local stream when it tries addStream() */
|
|
141
133
|
prewarmMic(): Promise<MediaStream>;
|
|
@@ -143,18 +135,6 @@ declare class AvayaIPOService {
|
|
|
143
135
|
static ɵprov: i0.ɵɵInjectableDeclaration<AvayaIPOService>;
|
|
144
136
|
}
|
|
145
137
|
|
|
146
|
-
declare class CallSocketService {
|
|
147
|
-
private sockets;
|
|
148
|
-
private subjects;
|
|
149
|
-
open(metadata: CallMetadata): void;
|
|
150
|
-
messages$(callId: string): BehaviorSubject<any> | undefined;
|
|
151
|
-
send(callId: string, payload: object): void;
|
|
152
|
-
close(callId: string): void;
|
|
153
|
-
closeAll(): void;
|
|
154
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<CallSocketService, never>;
|
|
155
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<CallSocketService>;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
138
|
declare class CountryService {
|
|
159
139
|
private httpClient;
|
|
160
140
|
private countriesData;
|
|
@@ -171,272 +151,580 @@ declare class PhoneNumberLookupService {
|
|
|
171
151
|
private httpClient;
|
|
172
152
|
constructor(httpClient: HttpClient);
|
|
173
153
|
lookupPhoneNumber(phoneNumber: string, hlr?: boolean): Promise<Object>;
|
|
154
|
+
private normalizeForLookup;
|
|
174
155
|
static ɵfac: i0.ɵɵFactoryDeclaration<PhoneNumberLookupService, never>;
|
|
175
156
|
static ɵprov: i0.ɵɵInjectableDeclaration<PhoneNumberLookupService>;
|
|
176
157
|
}
|
|
177
158
|
|
|
178
|
-
declare class
|
|
159
|
+
declare class AuthenticationService {
|
|
160
|
+
private readonly jwtHelper;
|
|
161
|
+
tenant$: BehaviorSubject<any>;
|
|
162
|
+
user$: BehaviorSubject<any>;
|
|
163
|
+
isAuthenticated$: BehaviorSubject<boolean>;
|
|
164
|
+
isAuthenticated(): boolean;
|
|
165
|
+
getAuthSessionToken(): string | null;
|
|
166
|
+
getAuthDomainToken(): string | null;
|
|
167
|
+
getDecodedAuthDomainToken(): any;
|
|
168
|
+
getTenantId(): string;
|
|
169
|
+
getDecodedAuthSessionToken(): any;
|
|
170
|
+
getUserId(): string;
|
|
171
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AuthenticationService, never>;
|
|
172
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AuthenticationService>;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
declare class EntitiesSearchService {
|
|
179
176
|
private http;
|
|
180
|
-
private
|
|
181
|
-
private
|
|
177
|
+
private authenticationService;
|
|
178
|
+
private nameCache;
|
|
179
|
+
constructor(http: HttpClient, authenticationService: AuthenticationService);
|
|
180
|
+
fetchContacts(tenantId: string, size?: number, searchAfter?: [string, string]): Promise<any>;
|
|
181
|
+
searchByPhone(tenantId: string, phoneNumber: string, size?: number): Promise<any>;
|
|
182
|
+
searchEntities(tenantId: string, query: string, size?: number, from?: number): Promise<any>;
|
|
183
|
+
getCachedName(tenantId: string, phoneNumber: string): string | null;
|
|
184
|
+
lookupNameByPhone(tenantId: string, phoneNumber: string, size?: number): Promise<string | null>;
|
|
185
|
+
private postEntities;
|
|
186
|
+
private cacheKey;
|
|
187
|
+
private ensureWildcard;
|
|
188
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EntitiesSearchService, never>;
|
|
189
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<EntitiesSearchService>;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
declare class AvayaIPOWidgetComponent implements OnInit, OnDestroy {
|
|
182
193
|
private formBuilder;
|
|
194
|
+
private avayaIPOService;
|
|
195
|
+
private cdr;
|
|
183
196
|
private countryService;
|
|
184
197
|
private phoneNumberLookupService;
|
|
185
|
-
private
|
|
186
|
-
|
|
187
|
-
private
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
198
|
+
private entitiesSearchService;
|
|
199
|
+
hostDarkMode: boolean;
|
|
200
|
+
private readonly STORAGE_KEY;
|
|
201
|
+
isVisible: boolean;
|
|
202
|
+
configurationMode?: string;
|
|
203
|
+
avayaIPOServerIP?: string;
|
|
204
|
+
avayaIPOServerPort?: number;
|
|
205
|
+
avayaIPOServerStunServerIP?: string;
|
|
206
|
+
avayaIPOServerStunServerPort?: number;
|
|
207
|
+
avayaIPOServerTurnServerIP?: string;
|
|
208
|
+
avayaIPOServerTurnServerPort?: number;
|
|
191
209
|
tenantId: string;
|
|
192
210
|
userId: string;
|
|
193
|
-
isVisible: boolean;
|
|
194
|
-
containerHeightObservable: BehaviorSubject<number>;
|
|
195
|
-
containerWidthObservable: BehaviorSubject<number>;
|
|
196
211
|
notificationEvent: EventEmitter<number>;
|
|
197
|
-
|
|
198
|
-
loginForm: FormGroup;
|
|
199
|
-
transferForm: FormGroup;
|
|
200
|
-
dtmfForm: FormGroup;
|
|
201
|
-
isRinging: boolean;
|
|
202
|
-
showActiveCall: boolean;
|
|
203
|
-
private loginSubscription;
|
|
204
|
-
private incomingCallSubscription;
|
|
205
|
-
callDuration: number;
|
|
206
|
-
private timer;
|
|
207
|
-
isCalling: boolean;
|
|
208
|
-
lookupPhoneNumber: any | null;
|
|
209
|
-
private ringtone;
|
|
212
|
+
readonly avayaLogoUrl: string;
|
|
210
213
|
isReconnectingInProgress: boolean;
|
|
211
214
|
isFailoverInProgress: boolean;
|
|
212
215
|
isFailbackInProgress: boolean;
|
|
213
216
|
showLoginForm: boolean;
|
|
214
|
-
showLoginPassword: boolean;
|
|
215
217
|
showLoginLoader: boolean;
|
|
216
218
|
hasAvayaSocketError: boolean;
|
|
217
219
|
hasAvayaLoginError: boolean;
|
|
220
|
+
hasAvayaLoginFailedGeneral: boolean;
|
|
218
221
|
hasAvayaLoginConflictError: boolean;
|
|
219
222
|
hasAvayaDeviceError: boolean;
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
redialTimeout: any;
|
|
238
|
-
showCallDisconnected: boolean;
|
|
239
|
-
lastDisconnectedCall: any;
|
|
240
|
-
activeCalls: ActiveCall[];
|
|
241
|
-
currentActiveCallIndex: number;
|
|
242
|
-
isAddingNewCall: boolean;
|
|
243
|
-
isredialling: boolean;
|
|
244
|
-
wasInbound: boolean;
|
|
245
|
-
showHistoryPopup: boolean;
|
|
246
|
-
noOfCalls: number;
|
|
247
|
-
isCallingFromContact: boolean;
|
|
248
|
-
bottomActiveTab: string;
|
|
249
|
-
disconnecttriggered: boolean;
|
|
250
|
-
private lastRemoteStream;
|
|
251
|
-
private lastLocalStream;
|
|
252
|
-
showInitLoader: boolean;
|
|
253
|
-
tenant: any;
|
|
254
|
-
user: any;
|
|
255
|
-
internalContacts: {
|
|
256
|
-
id: number;
|
|
257
|
-
name: string;
|
|
258
|
-
phone: string;
|
|
259
|
-
role: string;
|
|
260
|
-
ext: string;
|
|
261
|
-
}[];
|
|
262
|
-
directoryContacts: {
|
|
263
|
-
id: number;
|
|
264
|
-
name: string;
|
|
265
|
-
phone: string;
|
|
266
|
-
rating: number;
|
|
267
|
-
}[];
|
|
268
|
-
private recognition;
|
|
269
|
-
transcriptText: string;
|
|
270
|
-
showTranscriptionPopup: boolean;
|
|
271
|
-
private recognitionKeepAlive;
|
|
272
|
-
transcriptHistory: string[];
|
|
273
|
-
private recognitionActive;
|
|
274
|
-
private transcriptSegments;
|
|
275
|
-
private transcriptStartedAt;
|
|
276
|
-
private transcriptEndedAt;
|
|
277
|
-
autoDownloadSummaryOnEnd: boolean;
|
|
278
|
-
summaryText: string;
|
|
279
|
-
displayCallingNumber: string;
|
|
280
|
-
redialnumber: string;
|
|
281
|
-
isTransferring: boolean;
|
|
282
|
-
constructor(http: HttpClient, cdr: ChangeDetectorRef, zone: NgZone, formBuilder: FormBuilder, countryService: CountryService, phoneNumberLookupService: PhoneNumberLookupService, avayaIPOService: AvayaIPOService, recordingManagerService: RecordingManagerService, callSocket: CallSocketService, authenticationService: SnugdeskAuthenticationService, tenantService: TenantService, userService: UserService);
|
|
283
|
-
ngOnInit(): Promise<void>;
|
|
284
|
-
loadScript(src: string): Promise<void>;
|
|
285
|
-
ngAfterViewInit(): void;
|
|
286
|
-
ngOnDestroy(): void;
|
|
287
|
-
getLookupPhoneNumber(phoneNumber: string): Promise<any>;
|
|
223
|
+
private awlScriptPromise?;
|
|
224
|
+
loginForm: FormGroup;
|
|
225
|
+
activeTab: 'history' | 'contacts' | 'keypad' | 'settings';
|
|
226
|
+
private loginSub?;
|
|
227
|
+
private incomingCallSub?;
|
|
228
|
+
private callStateSub?;
|
|
229
|
+
hideTabs: boolean;
|
|
230
|
+
darkModeEnabled: boolean;
|
|
231
|
+
activeCallNumber: string | null;
|
|
232
|
+
incomingCallName: string | null;
|
|
233
|
+
incomingNameResolved: boolean;
|
|
234
|
+
activeCallName: string | null;
|
|
235
|
+
private callLogIndex;
|
|
236
|
+
private pendingDisconnectSide;
|
|
237
|
+
private callStartTimes;
|
|
238
|
+
constructor(formBuilder: FormBuilder, avayaIPOService: AvayaIPOService, cdr: ChangeDetectorRef, countryService: CountryService, phoneNumberLookupService: PhoneNumberLookupService, entitiesSearchService: EntitiesSearchService);
|
|
239
|
+
ngOnInit(): void;
|
|
288
240
|
onLogin(): void;
|
|
289
241
|
onLogout(): void;
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
onUnmute(): void;
|
|
296
|
-
toggleHold(): void;
|
|
297
|
-
toggleMute(): void;
|
|
298
|
-
onPauseVideo(): void;
|
|
299
|
-
onResumeVideo(): void;
|
|
300
|
-
onDigitClick(digit: string): void;
|
|
301
|
-
onBackspace(): void;
|
|
302
|
-
onTransferCall(): void;
|
|
303
|
-
onSendDTMF(digit: string | number): void;
|
|
304
|
-
onAnswerCall(): void;
|
|
305
|
-
onAddVideo(): void;
|
|
306
|
-
onRemoveVideo(): void;
|
|
307
|
-
allowOnlyNumbers(event: Event): void;
|
|
308
|
-
startTimer(index: number): void;
|
|
309
|
-
clearTimer(index: number): void;
|
|
310
|
-
formatTime(totalSeconds: number): string;
|
|
311
|
-
menuDailpad(): void;
|
|
312
|
-
selectTab(tab: string): Promise<void>;
|
|
313
|
-
fetchContacts(): Promise<void>;
|
|
314
|
-
private searchEntities;
|
|
315
|
-
private handleCallConnect;
|
|
316
|
-
private handleCallDisconnect;
|
|
317
|
-
goToDiv(div: string): void;
|
|
318
|
-
restrictNumeric(e: KeyboardEvent): boolean;
|
|
319
|
-
onRedial(): void;
|
|
320
|
-
swapLinesToIndex(index: number): void;
|
|
321
|
-
mergeCall(): void;
|
|
322
|
-
onAddCall(): void;
|
|
323
|
-
getDisplayStatus(call: any): string;
|
|
324
|
-
bottomSelectTab(tab: string): void;
|
|
325
|
-
/** Central place to notify AvayaIPOService about current picks */
|
|
326
|
-
handleDeviceSelection(event: any): void;
|
|
327
|
-
private createMixedStream;
|
|
328
|
-
private initTranscription;
|
|
329
|
-
private stopTranscription;
|
|
330
|
-
private generateAndDownloadSummary;
|
|
331
|
-
private buildExtractiveSummary;
|
|
332
|
-
private splitSentences;
|
|
333
|
-
private extractActionItems;
|
|
334
|
-
private extractKeyInfo;
|
|
335
|
-
private downloadBlobFile;
|
|
336
|
-
private fmtHMS;
|
|
337
|
-
transferToFromHistory(item: {
|
|
338
|
-
phoneNumber?: any;
|
|
339
|
-
lookupPhoneNumber?: any;
|
|
340
|
-
resolvedDialable?: any;
|
|
242
|
+
private handleLoginStatus;
|
|
243
|
+
selectTab(tab: 'history' | 'contacts' | 'keypad' | 'settings'): void;
|
|
244
|
+
onHistoryMakeCall(payload: {
|
|
245
|
+
dialOut: string;
|
|
246
|
+
name?: string;
|
|
341
247
|
}): void;
|
|
248
|
+
onPhoneMakeCall(phoneNumber: string): void;
|
|
249
|
+
onContactsMakeCall(payload: {
|
|
250
|
+
dialOut: string;
|
|
251
|
+
name?: string;
|
|
252
|
+
}): void;
|
|
253
|
+
onPhoneEndCall(): void;
|
|
254
|
+
onDeviceChange(change: {
|
|
255
|
+
audioInputId: string;
|
|
256
|
+
audioOutputId: string;
|
|
257
|
+
videoInputId?: string;
|
|
258
|
+
}): void;
|
|
259
|
+
onThemeToggle(enabled: boolean): void;
|
|
260
|
+
onCallScreenChange(active: boolean): void;
|
|
261
|
+
private triggerCall;
|
|
262
|
+
ngOnDestroy(): void;
|
|
263
|
+
private getLookupPhoneNumber;
|
|
264
|
+
private getOpenSearchCallerName;
|
|
265
|
+
private normalizePhoneForSearch;
|
|
266
|
+
private persistSession;
|
|
267
|
+
private restoreSession;
|
|
268
|
+
private restoreThemePreference;
|
|
269
|
+
private clearSession;
|
|
270
|
+
private loadAwlScript;
|
|
342
271
|
static ɵfac: i0.ɵɵFactoryDeclaration<AvayaIPOWidgetComponent, never>;
|
|
343
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<AvayaIPOWidgetComponent, "snugdesk-avaya-ipo-widget", never, { "
|
|
272
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AvayaIPOWidgetComponent, "snugdesk-avaya-ipo-widget", never, { "isVisible": { "alias": "isVisible"; "required": false; }; "configurationMode": { "alias": "configurationMode"; "required": false; }; "avayaIPOServerIP": { "alias": "avayaIPOServerIP"; "required": false; }; "avayaIPOServerPort": { "alias": "avayaIPOServerPort"; "required": false; }; "avayaIPOServerStunServerIP": { "alias": "avayaIPOServerStunServerIP"; "required": false; }; "avayaIPOServerStunServerPort": { "alias": "avayaIPOServerStunServerPort"; "required": false; }; "avayaIPOServerTurnServerIP": { "alias": "avayaIPOServerTurnServerIP"; "required": false; }; "avayaIPOServerTurnServerPort": { "alias": "avayaIPOServerTurnServerPort"; "required": false; }; "tenantId": { "alias": "tenantId"; "required": false; }; "userId": { "alias": "userId"; "required": false; }; }, { "notificationEvent": "notificationEvent"; }, never, never, false, never>;
|
|
344
273
|
}
|
|
345
274
|
|
|
346
275
|
declare class CallHistoryComponent implements OnInit {
|
|
347
276
|
private http;
|
|
348
|
-
private authenticationService;
|
|
349
277
|
private cdr;
|
|
350
278
|
mode: 'dial' | 'transfer';
|
|
351
|
-
|
|
279
|
+
tenantId?: string;
|
|
280
|
+
agentId?: string;
|
|
281
|
+
makeCallEv: EventEmitter<{
|
|
282
|
+
dialOut: string;
|
|
283
|
+
name?: string;
|
|
284
|
+
}>;
|
|
352
285
|
transferEv: EventEmitter<any>;
|
|
353
286
|
private readonly CALL_HISTORY_API_URL;
|
|
354
287
|
showHistoryLoader: boolean;
|
|
355
288
|
callHistory: any[];
|
|
289
|
+
searchTerm: string;
|
|
356
290
|
recentCallactiveTab: string;
|
|
357
|
-
|
|
291
|
+
selectedCall: any;
|
|
292
|
+
constructor(http: HttpClient, cdr: ChangeDetectorRef);
|
|
358
293
|
ngOnInit(): Promise<void>;
|
|
359
294
|
recentSelectTab(tab: string): void;
|
|
360
295
|
loadCallHistory(): Promise<void>;
|
|
361
296
|
getCallHistory(tenantId: string, agentId: string): Promise<any>;
|
|
362
|
-
makeCall(phoneNumber: string): void;
|
|
297
|
+
makeCall(phoneNumber: string, name?: string): void;
|
|
298
|
+
get callerDropped(): any[];
|
|
299
|
+
get filteredRecent(): any[];
|
|
300
|
+
get groupedRecent(): Array<{
|
|
301
|
+
label: string;
|
|
302
|
+
items: any[];
|
|
303
|
+
}>;
|
|
304
|
+
get groupedMissed(): Array<{
|
|
305
|
+
label: string;
|
|
306
|
+
items: any[];
|
|
307
|
+
}>;
|
|
308
|
+
onSelectCall(item: any): void;
|
|
309
|
+
closeDetails(): void;
|
|
363
310
|
selectFromHistory(item: any): void;
|
|
364
311
|
private resolveDialable;
|
|
312
|
+
private resolveName;
|
|
313
|
+
private formatDialOutFromInput;
|
|
314
|
+
private getTenantIdFromSession;
|
|
315
|
+
private getUserIdFromSession;
|
|
316
|
+
getPhoneDisplay(item: any): string;
|
|
317
|
+
getPhoneBadge(item: any): string;
|
|
318
|
+
private getInitials;
|
|
319
|
+
private groupByDate;
|
|
320
|
+
private formatDateLabel;
|
|
365
321
|
static ɵfac: i0.ɵɵFactoryDeclaration<CallHistoryComponent, never>;
|
|
366
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CallHistoryComponent, "app-call-history", never, { "mode": { "alias": "mode"; "required": false; }; }, { "makeCallEv": "makeCallEv"; "transferEv": "transferEv"; }, never, never, false, never>;
|
|
322
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CallHistoryComponent, "app-call-history", never, { "mode": { "alias": "mode"; "required": false; }; "tenantId": { "alias": "tenantId"; "required": false; }; "agentId": { "alias": "agentId"; "required": false; }; }, { "makeCallEv": "makeCallEv"; "transferEv": "transferEv"; }, never, never, false, never>;
|
|
367
323
|
}
|
|
368
324
|
|
|
369
|
-
declare class
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
getAuthDomainToken(): string | null;
|
|
377
|
-
getDecodedAuthDomainToken(): any;
|
|
378
|
-
getTenantId(): string;
|
|
379
|
-
getDecodedAuthSessionToken(): any;
|
|
380
|
-
getUserId(): string;
|
|
381
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AuthenticationService, never>;
|
|
382
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<AuthenticationService>;
|
|
325
|
+
declare class CallDetailsComponent {
|
|
326
|
+
call: any;
|
|
327
|
+
getBadge(): string;
|
|
328
|
+
getDisplayName(): string;
|
|
329
|
+
getPhone(): string;
|
|
330
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CallDetailsComponent, never>;
|
|
331
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CallDetailsComponent, "app-call-details", never, { "call": { "alias": "call"; "required": false; }; }, {}, never, never, false, never>;
|
|
383
332
|
}
|
|
384
333
|
|
|
385
|
-
|
|
334
|
+
type ContactItem = {
|
|
335
|
+
id: string;
|
|
336
|
+
name: string;
|
|
337
|
+
phone: string;
|
|
338
|
+
entity: any;
|
|
339
|
+
};
|
|
340
|
+
declare class ContactsComponent implements OnInit, AfterViewInit {
|
|
341
|
+
private entitiesSearchService;
|
|
342
|
+
tenantId?: string;
|
|
343
|
+
listEl?: ElementRef<HTMLElement>;
|
|
344
|
+
makeCallEv: EventEmitter<{
|
|
345
|
+
dialOut: string;
|
|
346
|
+
name?: string;
|
|
347
|
+
}>;
|
|
348
|
+
contacts: ContactItem[];
|
|
349
|
+
groupedContacts: Array<{
|
|
350
|
+
label: string;
|
|
351
|
+
items: ContactItem[];
|
|
352
|
+
}>;
|
|
353
|
+
selectedContact: ContactItem | null;
|
|
354
|
+
searchTerm: string;
|
|
355
|
+
isLoading: boolean;
|
|
356
|
+
error: string;
|
|
357
|
+
private searchToken;
|
|
358
|
+
private pageSize;
|
|
359
|
+
private nextFrom;
|
|
360
|
+
private searchAfter?;
|
|
361
|
+
private hasMore;
|
|
362
|
+
isLoadingMore: boolean;
|
|
363
|
+
constructor(entitiesSearchService: EntitiesSearchService);
|
|
364
|
+
ngOnInit(): void;
|
|
365
|
+
ngAfterViewInit(): void;
|
|
366
|
+
private resetAndLoad;
|
|
367
|
+
loadNextPage(): Promise<void>;
|
|
368
|
+
onSearchChange(value: string): void;
|
|
369
|
+
private groupContacts;
|
|
370
|
+
private applySearch;
|
|
371
|
+
openContact(contact: ContactItem): void;
|
|
372
|
+
closeContact(): void;
|
|
373
|
+
onCallContact(contact: ContactItem, ev?: Event): void;
|
|
374
|
+
private searchContacts;
|
|
375
|
+
onListScroll(event: Event): void;
|
|
376
|
+
private ensureFill;
|
|
377
|
+
private getGroupLabel;
|
|
378
|
+
private getPageSize;
|
|
379
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ContactsComponent, never>;
|
|
380
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ContactsComponent, "app-contacts", never, { "tenantId": { "alias": "tenantId"; "required": false; }; }, { "makeCallEv": "makeCallEv"; }, never, never, false, never>;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
declare class ContactCardComponent {
|
|
384
|
+
name: string;
|
|
385
|
+
phone: string;
|
|
386
|
+
call: EventEmitter<Event>;
|
|
387
|
+
get initials(): string;
|
|
388
|
+
onCall(ev: Event): void;
|
|
389
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ContactCardComponent, never>;
|
|
390
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ContactCardComponent, "app-contact-card", never, { "name": { "alias": "name"; "required": false; }; "phone": { "alias": "phone"; "required": false; }; }, { "call": "call"; }, never, never, false, never>;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
declare class ContactDetailsComponent {
|
|
394
|
+
contact: any;
|
|
395
|
+
getDisplayName(): string;
|
|
396
|
+
getPrimaryPhone(): string;
|
|
397
|
+
getEmails(): string[];
|
|
398
|
+
getPhoneNumbers(): string[];
|
|
399
|
+
getInitials(): string;
|
|
400
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ContactDetailsComponent, never>;
|
|
401
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ContactDetailsComponent, "app-contact-details", never, { "contact": { "alias": "contact"; "required": false; }; }, {}, never, never, false, never>;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
declare class SettingsComponent implements OnInit, OnDestroy {
|
|
405
|
+
selectedAudioInputId?: string;
|
|
406
|
+
selectedAudioOutputId?: string;
|
|
407
|
+
extensionId?: string;
|
|
408
|
+
darkMode: boolean;
|
|
409
|
+
change: EventEmitter<{
|
|
410
|
+
audioInputId: string;
|
|
411
|
+
audioOutputId: string;
|
|
412
|
+
videoInputId?: string;
|
|
413
|
+
}>;
|
|
414
|
+
darkModeChange: EventEmitter<boolean>;
|
|
415
|
+
logout: EventEmitter<void>;
|
|
416
|
+
audioInputs: MediaDeviceInfo[];
|
|
417
|
+
audioOutputs: MediaDeviceInfo[];
|
|
418
|
+
ngOnInit(): void;
|
|
419
|
+
onLogout(): void;
|
|
420
|
+
onToggleDarkMode(): void;
|
|
421
|
+
ngOnDestroy(): void;
|
|
422
|
+
private handleDeviceChange;
|
|
423
|
+
private refreshDeviceList;
|
|
424
|
+
onMicChange(deviceId: string | undefined): void;
|
|
425
|
+
onSpeakerChange(deviceId: string | undefined): void;
|
|
426
|
+
private emitDeviceChange;
|
|
427
|
+
trackByDeviceId(index: number, device: MediaDeviceInfo): string;
|
|
428
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SettingsComponent, never>;
|
|
429
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SettingsComponent, "app-settings", never, { "selectedAudioInputId": { "alias": "selectedAudioInputId"; "required": false; }; "selectedAudioOutputId": { "alias": "selectedAudioOutputId"; "required": false; }; "extensionId": { "alias": "extensionId"; "required": false; }; "darkMode": { "alias": "darkMode"; "required": false; }; }, { "change": "change"; "darkModeChange": "darkModeChange"; "logout": "logout"; }, never, never, false, never>;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
declare class AvayaIpoLoginComponent {
|
|
433
|
+
loginForm: FormGroup;
|
|
434
|
+
showLoginLoader: boolean;
|
|
435
|
+
hasAvayaSocketError: boolean;
|
|
436
|
+
hasAvayaLoginError: boolean;
|
|
437
|
+
hasAvayaLoginFailedGeneral: boolean;
|
|
438
|
+
hasAvayaLoginConflictError: boolean;
|
|
439
|
+
hasAvayaDeviceError: boolean;
|
|
440
|
+
login: EventEmitter<void>;
|
|
441
|
+
showLoginPassword: boolean;
|
|
442
|
+
onLoginClick(): void;
|
|
443
|
+
restrictNumeric(evt: KeyboardEvent): boolean;
|
|
444
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AvayaIpoLoginComponent, never>;
|
|
445
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AvayaIpoLoginComponent, "app-avaya-ipo-login", never, { "loginForm": { "alias": "loginForm"; "required": false; }; "showLoginLoader": { "alias": "showLoginLoader"; "required": false; }; "hasAvayaSocketError": { "alias": "hasAvayaSocketError"; "required": false; }; "hasAvayaLoginError": { "alias": "hasAvayaLoginError"; "required": false; }; "hasAvayaLoginFailedGeneral": { "alias": "hasAvayaLoginFailedGeneral"; "required": false; }; "hasAvayaLoginConflictError": { "alias": "hasAvayaLoginConflictError"; "required": false; }; "hasAvayaDeviceError": { "alias": "hasAvayaDeviceError"; "required": false; }; }, { "login": "login"; }, never, never, false, never>;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
interface CallMetadata {
|
|
449
|
+
tenantId: string;
|
|
450
|
+
agentId: string;
|
|
451
|
+
phoneNumber: string;
|
|
452
|
+
callId: string;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
interface RecordingSession {
|
|
456
|
+
audioContext: AudioContext;
|
|
457
|
+
recordingStream: MediaStreamAudioDestinationNode;
|
|
458
|
+
recorder?: MediaRecorder | null;
|
|
459
|
+
metadata: CallMetadata;
|
|
460
|
+
stopping: boolean;
|
|
461
|
+
chunkIndex: number;
|
|
462
|
+
chunkTimer?: number;
|
|
463
|
+
}
|
|
464
|
+
declare class RecordingManagerService {
|
|
465
|
+
private http;
|
|
466
|
+
private sessions;
|
|
467
|
+
private readonly MIME_TYPE_PREFERRED;
|
|
468
|
+
private readonly MIME_TYPE_FALLBACK;
|
|
469
|
+
private readonly CHUNK_DURATION_MS;
|
|
470
|
+
private readonly AUDIO_CONTEXT_CLOSE_DELAY_MS;
|
|
471
|
+
private readonly CALL_HISTORY_API_URL;
|
|
472
|
+
constructor(http: HttpClient);
|
|
473
|
+
startRecording(localMediaStream: MediaStream, remoteMediaStream: MediaStream, metadata: CallMetadata): RecordingSession | undefined;
|
|
474
|
+
getSession(callId: string): RecordingSession | undefined;
|
|
475
|
+
stopRecording(callId: string): void;
|
|
476
|
+
private startNextChunk;
|
|
477
|
+
private uploadCallRecording;
|
|
478
|
+
private convertBlobToBase64;
|
|
479
|
+
private generateFilename;
|
|
480
|
+
private generateChunkFilename;
|
|
481
|
+
private normalizePhoneNumberForUpload;
|
|
482
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RecordingManagerService, never>;
|
|
483
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RecordingManagerService>;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
type TranscriptMessage = {
|
|
487
|
+
callId: string;
|
|
488
|
+
text: string;
|
|
489
|
+
isFinal: boolean;
|
|
490
|
+
ts: number;
|
|
491
|
+
};
|
|
492
|
+
declare class TranscriptionStreamService implements OnDestroy {
|
|
493
|
+
private http;
|
|
494
|
+
private session;
|
|
495
|
+
private transcriptSubject;
|
|
496
|
+
readonly transcript$: rxjs.Observable<TranscriptMessage>;
|
|
497
|
+
private readonly SAMPLE_RATE;
|
|
498
|
+
private readonly BUFFER_SIZE;
|
|
499
|
+
private readonly SILENCE_RMS_THRESHOLD;
|
|
500
|
+
private readonly KEEP_ALIVE_INTERVAL_MS;
|
|
501
|
+
private readonly SILENCE_FRAME_SAMPLES;
|
|
502
|
+
private readonly SIGNED_URL_ENDPOINT;
|
|
503
|
+
constructor(http: HttpClient);
|
|
504
|
+
ngOnDestroy(): void;
|
|
505
|
+
startSession(callId: string, localStream: MediaStream, remoteStream: MediaStream, languageCode?: string): Promise<void>;
|
|
506
|
+
stopSession(callId: string): void;
|
|
507
|
+
private fetchSignedUrl;
|
|
508
|
+
private mixToMono;
|
|
509
|
+
private calculateRms;
|
|
510
|
+
private encodePcm16;
|
|
511
|
+
private downsampleBuffer;
|
|
512
|
+
private sendSilenceFrame;
|
|
513
|
+
private validateSignedUrl;
|
|
514
|
+
private handleTranscriptPayload;
|
|
515
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TranscriptionStreamService, never>;
|
|
516
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<TranscriptionStreamService>;
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
declare class PhoneComponent implements OnInit, AfterViewInit, OnDestroy {
|
|
386
520
|
private cdr;
|
|
387
521
|
private formBuilder;
|
|
388
522
|
private avayaIpoService;
|
|
389
523
|
private authenticationService;
|
|
524
|
+
private recordingManagerService;
|
|
525
|
+
private transcriptionStreamService;
|
|
390
526
|
contacts: any[];
|
|
527
|
+
tenantId?: string;
|
|
528
|
+
agentId?: string;
|
|
529
|
+
callScreenChange: EventEmitter<boolean>;
|
|
530
|
+
private _isActiveCall;
|
|
531
|
+
set isActiveCall(value: boolean);
|
|
532
|
+
get isActiveCall(): boolean;
|
|
533
|
+
activeCallNumber: string | null;
|
|
534
|
+
incomingCallName?: string | null;
|
|
535
|
+
incomingNameResolved: boolean;
|
|
536
|
+
activeCallName?: string | null;
|
|
537
|
+
serverIp?: string;
|
|
538
|
+
serverPort?: number;
|
|
539
|
+
stunIp?: string;
|
|
540
|
+
stunPort?: number;
|
|
541
|
+
turnIp?: string;
|
|
542
|
+
turnPort?: number;
|
|
543
|
+
configurationMode?: string;
|
|
391
544
|
makeCallEv: EventEmitter<string>;
|
|
545
|
+
endCallEv: EventEmitter<void>;
|
|
392
546
|
audioElement: any;
|
|
547
|
+
private callStateSub?;
|
|
548
|
+
private endToneTimeout?;
|
|
549
|
+
private suppressHangupToneOnce;
|
|
550
|
+
private transferStatusSub?;
|
|
551
|
+
private remoteStreamSub?;
|
|
552
|
+
private callTerminateSub?;
|
|
553
|
+
private outgoingDialSub?;
|
|
554
|
+
private transcriptionSub?;
|
|
555
|
+
private lastRemoteStream;
|
|
556
|
+
private lastLocalStream;
|
|
557
|
+
private currentCallId;
|
|
558
|
+
private pendingOutgoing;
|
|
559
|
+
private transcriptionActiveCallId;
|
|
560
|
+
private pendingTranscriptionCallId;
|
|
393
561
|
dialForm: FormGroup;
|
|
562
|
+
directoryForm: FormGroup;
|
|
394
563
|
showDirectoryPhonebook: boolean;
|
|
564
|
+
isTransferMode: boolean;
|
|
565
|
+
isAddCallMode: boolean;
|
|
566
|
+
directoryTab: 'contacts' | 'dialpad';
|
|
567
|
+
directoryNumber: string;
|
|
568
|
+
contactSearch: string;
|
|
569
|
+
directoryDigits: {
|
|
570
|
+
digit: string;
|
|
571
|
+
letters: string;
|
|
572
|
+
}[];
|
|
395
573
|
incomingCallSubscription: any;
|
|
396
574
|
incomingCallNumber: string | undefined;
|
|
575
|
+
isMuted: boolean;
|
|
576
|
+
isHeld: boolean;
|
|
577
|
+
activeCallDuration: number;
|
|
578
|
+
callStatusText: string;
|
|
579
|
+
transferError: string;
|
|
580
|
+
transferSuccess: string;
|
|
581
|
+
transferPending: boolean;
|
|
582
|
+
private transferErrorTimeout?;
|
|
583
|
+
private activeCallTimer?;
|
|
584
|
+
private muteToggleInProgress;
|
|
585
|
+
private holdToggleInProgress;
|
|
586
|
+
isKeypadOpen: boolean;
|
|
587
|
+
isTranscriptionOpen: boolean;
|
|
588
|
+
transcriptText: string;
|
|
589
|
+
private transcriptHistory;
|
|
590
|
+
private transcriptSegments;
|
|
591
|
+
private transcriptStartedAt;
|
|
592
|
+
private transcriptEndedAt;
|
|
593
|
+
autoDownloadSummaryOnEnd: boolean;
|
|
594
|
+
summaryText: string;
|
|
595
|
+
dtmfBuffer: string;
|
|
596
|
+
private phoneUtil;
|
|
397
597
|
CountryISO: typeof CountryISO;
|
|
398
598
|
SearchCountryField: typeof SearchCountryField;
|
|
399
|
-
isRinging: boolean
|
|
599
|
+
isRinging: boolean;
|
|
400
600
|
audio: any;
|
|
401
|
-
|
|
601
|
+
get isConnecting(): boolean;
|
|
602
|
+
constructor(cdr: ChangeDetectorRef, formBuilder: FormBuilder, avayaIpoService: AvayaIPOService, authenticationService: AuthenticationService, recordingManagerService: RecordingManagerService, transcriptionStreamService: TranscriptionStreamService);
|
|
402
603
|
ngOnInit(): void;
|
|
604
|
+
ngAfterViewInit(): void;
|
|
403
605
|
ngOnDestroy(): void;
|
|
404
606
|
makeCall(): void;
|
|
405
607
|
onClear(): void;
|
|
406
608
|
handleKeyboardInput: (event: KeyboardEvent) => void;
|
|
407
609
|
handleKeypadInput(digit: string): void;
|
|
408
610
|
private updatePhoneControl;
|
|
611
|
+
private formatE164;
|
|
612
|
+
private formatDialOut;
|
|
409
613
|
declineAvayaCall(): void;
|
|
410
614
|
acceptAvayaCAll(): void;
|
|
411
|
-
|
|
412
|
-
|
|
615
|
+
onEndActiveCall(): void;
|
|
616
|
+
private playHangupToneAndThenIdle;
|
|
617
|
+
private finishDisconnectWithoutTone;
|
|
618
|
+
private handleIncomingCall;
|
|
619
|
+
onActiveOpenContacts(): void;
|
|
620
|
+
onActiveOpenKeypad(): void;
|
|
621
|
+
closeKeypad(): void;
|
|
622
|
+
private startTranscriptionForCall;
|
|
623
|
+
private applyTranscriptUpdate;
|
|
624
|
+
openTranscription(): void;
|
|
625
|
+
closeTranscription(): void;
|
|
626
|
+
private stopTranscription;
|
|
627
|
+
private generateAndDownloadSummary;
|
|
628
|
+
private buildExtractiveSummary;
|
|
629
|
+
private splitSentences;
|
|
630
|
+
private extractActionItems;
|
|
631
|
+
private extractKeyInfo;
|
|
632
|
+
private downloadBlobFile;
|
|
633
|
+
private fmtHMS;
|
|
634
|
+
onClosePhonebook(): void;
|
|
635
|
+
onContactsLoaded(list: any[]): void;
|
|
636
|
+
get filteredContacts(): any[];
|
|
637
|
+
onSelectContact(contact: any): void;
|
|
638
|
+
toggleMute(): void;
|
|
639
|
+
toggleHold(): void;
|
|
640
|
+
onTransferCall(): void;
|
|
641
|
+
private emitCallScreenState;
|
|
642
|
+
private startCallTimer;
|
|
643
|
+
private stopCallTimer;
|
|
644
|
+
onIdleToggleDirectory(): void;
|
|
645
|
+
onIdleClear(): void;
|
|
646
|
+
onIdleMakeCall(): void;
|
|
647
|
+
onIdleKeypadInput(digit: string): void;
|
|
648
|
+
onIdleKeyboardInput(ev: KeyboardEvent): void;
|
|
649
|
+
setDirectoryTab(tab: 'contacts' | 'dialpad'): void;
|
|
650
|
+
onDirectoryKeypad(digit: string): void;
|
|
651
|
+
onDirectoryBackspace(): void;
|
|
652
|
+
onDirectoryUseNumber(): void;
|
|
653
|
+
onDirectoryClear(): void;
|
|
654
|
+
onDtmfDigit(digit: string): void;
|
|
655
|
+
onDtmfBackspace(): void;
|
|
656
|
+
private updateDirectoryControl;
|
|
657
|
+
private formatDialOutFromInput;
|
|
658
|
+
private formatTransferTargetFromInput;
|
|
659
|
+
private startRecordingForCall;
|
|
660
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PhoneComponent, never>;
|
|
661
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PhoneComponent, "app-phone", never, { "contacts": { "alias": "contacts"; "required": false; }; "tenantId": { "alias": "tenantId"; "required": false; }; "agentId": { "alias": "agentId"; "required": false; }; "isActiveCall": { "alias": "isActiveCall"; "required": false; }; "activeCallNumber": { "alias": "activeCallNumber"; "required": false; }; "incomingCallName": { "alias": "incomingCallName"; "required": false; }; "incomingNameResolved": { "alias": "incomingNameResolved"; "required": false; }; "activeCallName": { "alias": "activeCallName"; "required": false; }; "serverIp": { "alias": "serverIp"; "required": false; }; "serverPort": { "alias": "serverPort"; "required": false; }; "stunIp": { "alias": "stunIp"; "required": false; }; "stunPort": { "alias": "stunPort"; "required": false; }; "turnIp": { "alias": "turnIp"; "required": false; }; "turnPort": { "alias": "turnPort"; "required": false; }; "configurationMode": { "alias": "configurationMode"; "required": false; }; }, { "callScreenChange": "callScreenChange"; "makeCallEv": "makeCallEv"; "endCallEv": "endCallEv"; }, never, never, false, never>;
|
|
413
662
|
}
|
|
414
663
|
|
|
415
|
-
declare class
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
664
|
+
declare class PhoneIdleComponent {
|
|
665
|
+
dialForm: FormGroup;
|
|
666
|
+
contacts: any[];
|
|
667
|
+
showDirectoryPhonebook: boolean;
|
|
668
|
+
isRinging: boolean;
|
|
669
|
+
CountryISO: typeof CountryISO;
|
|
670
|
+
SearchCountryField: typeof SearchCountryField;
|
|
671
|
+
toggleDirectory: EventEmitter<void>;
|
|
672
|
+
clear: EventEmitter<void>;
|
|
673
|
+
makeCall: EventEmitter<void>;
|
|
674
|
+
keypadInput: EventEmitter<string>;
|
|
675
|
+
keyboardInput: EventEmitter<KeyboardEvent>;
|
|
676
|
+
getContactBadge(contact: any): string;
|
|
677
|
+
onToggleDirectory(): void;
|
|
678
|
+
onClear(): void;
|
|
679
|
+
onMakeCall(): void;
|
|
680
|
+
onKeypadInput(d: string): void;
|
|
681
|
+
onKeyboardInput(ev: KeyboardEvent): void;
|
|
682
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PhoneIdleComponent, never>;
|
|
683
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PhoneIdleComponent, "app-phone-idle", never, { "dialForm": { "alias": "dialForm"; "required": false; }; "contacts": { "alias": "contacts"; "required": false; }; "showDirectoryPhonebook": { "alias": "showDirectoryPhonebook"; "required": false; }; "isRinging": { "alias": "isRinging"; "required": false; }; "CountryISO": { "alias": "CountryISO"; "required": false; }; "SearchCountryField": { "alias": "SearchCountryField"; "required": false; }; }, { "toggleDirectory": "toggleDirectory"; "clear": "clear"; "makeCall": "makeCall"; "keypadInput": "keypadInput"; "keyboardInput": "keyboardInput"; }, never, never, false, never>;
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
declare class PhoneIncomingComponent {
|
|
687
|
+
incomingAvatarUrl: string;
|
|
688
|
+
incomingCallName?: string;
|
|
689
|
+
incomingNameResolved: boolean;
|
|
690
|
+
incomingCallNumber: string | undefined;
|
|
691
|
+
accept: EventEmitter<void>;
|
|
692
|
+
decline: EventEmitter<void>;
|
|
693
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PhoneIncomingComponent, never>;
|
|
694
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PhoneIncomingComponent, "app-phone-incoming", never, { "incomingCallName": { "alias": "incomingCallName"; "required": false; }; "incomingNameResolved": { "alias": "incomingNameResolved"; "required": false; }; "incomingCallNumber": { "alias": "incomingCallNumber"; "required": false; }; }, { "accept": "accept"; "decline": "decline"; }, never, never, false, never>;
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
declare class PhoneActiveComponent implements OnInit {
|
|
698
|
+
private entitiesSearchService;
|
|
699
|
+
tenantId?: string;
|
|
700
|
+
activeAvatarUrl: string;
|
|
701
|
+
activeCallName?: string;
|
|
702
|
+
activeCallNumber: string | null;
|
|
703
|
+
activeCallDuration: number;
|
|
704
|
+
callStatusText: string;
|
|
705
|
+
isConnecting: boolean;
|
|
706
|
+
isMuted: boolean;
|
|
707
|
+
isHeld: boolean;
|
|
708
|
+
endCall: EventEmitter<void>;
|
|
709
|
+
toggleMute: EventEmitter<void>;
|
|
710
|
+
toggleHold: EventEmitter<void>;
|
|
711
|
+
transfer: EventEmitter<void>;
|
|
712
|
+
openContacts: EventEmitter<void>;
|
|
713
|
+
openKeypad: EventEmitter<void>;
|
|
714
|
+
startTranscription: EventEmitter<void>;
|
|
715
|
+
contactsLoaded: EventEmitter<any[]>;
|
|
716
|
+
private isLoadingContacts;
|
|
717
|
+
constructor(entitiesSearchService: EntitiesSearchService);
|
|
425
718
|
ngOnInit(): void;
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
onSpeakerChange(deviceId: string | undefined): void;
|
|
431
|
-
private emitDeviceChange;
|
|
432
|
-
trackByDeviceId(index: number, device: MediaDeviceInfo): string;
|
|
433
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DeviceSelectorComponent, never>;
|
|
434
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DeviceSelectorComponent, "app-device-selector", never, { "selectedAudioInputId": { "alias": "selectedAudioInputId"; "required": false; }; "selectedAudioOutputId": { "alias": "selectedAudioOutputId"; "required": false; }; }, { "change": "change"; }, never, never, false, never>;
|
|
719
|
+
fetchContacts(): Promise<void>;
|
|
720
|
+
formatDuration(totalSeconds: number): string;
|
|
721
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PhoneActiveComponent, never>;
|
|
722
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PhoneActiveComponent, "app-phone-active", never, { "tenantId": { "alias": "tenantId"; "required": false; }; "activeCallName": { "alias": "activeCallName"; "required": false; }; "activeCallNumber": { "alias": "activeCallNumber"; "required": false; }; "activeCallDuration": { "alias": "activeCallDuration"; "required": false; }; "callStatusText": { "alias": "callStatusText"; "required": false; }; "isConnecting": { "alias": "isConnecting"; "required": false; }; "isMuted": { "alias": "isMuted"; "required": false; }; "isHeld": { "alias": "isHeld"; "required": false; }; }, { "endCall": "endCall"; "toggleMute": "toggleMute"; "toggleHold": "toggleHold"; "transfer": "transfer"; "openContacts": "openContacts"; "openKeypad": "openKeypad"; "startTranscription": "startTranscription"; "contactsLoaded": "contactsLoaded"; }, never, never, false, never>;
|
|
435
723
|
}
|
|
436
724
|
|
|
437
725
|
declare class AvayaIPOWidgetModule {
|
|
438
726
|
static ɵfac: i0.ɵɵFactoryDeclaration<AvayaIPOWidgetModule, never>;
|
|
439
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<AvayaIPOWidgetModule, [typeof AvayaIPOWidgetComponent, typeof CallHistoryComponent, typeof
|
|
727
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AvayaIPOWidgetModule, [typeof AvayaIPOWidgetComponent, typeof CallHistoryComponent, typeof CallDetailsComponent, typeof ContactsComponent, typeof ContactCardComponent, typeof ContactDetailsComponent, typeof SettingsComponent, typeof AvayaIpoLoginComponent, typeof PhoneComponent, typeof PhoneIdleComponent, typeof PhoneIncomingComponent, typeof PhoneActiveComponent], [typeof i13.CommonModule, typeof i14.FormsModule, typeof i14.ReactiveFormsModule, typeof i15.MatFormFieldModule, typeof i16.MatInputModule, typeof i17.MatIconModule, typeof i18.MatButtonModule, typeof i19.NgxIntlTelInputModule], [typeof AvayaIPOWidgetComponent]>;
|
|
440
728
|
static ɵinj: i0.ɵɵInjectorDeclaration<AvayaIPOWidgetModule>;
|
|
441
729
|
}
|
|
442
730
|
|