@almaviacx/gge-toolkit-service 2.9.2 → 2.9.3

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.
@@ -1,298 +1,168 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (_) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
2
  Object.defineProperty(exports, "__esModule", { value: true });
50
3
  exports.updateVoiceCallTranscription = exports.updateVoiceCall = exports.uploadRecording = exports.createVoiceCall = void 0;
51
- var twilio_toolkit_service_1 = require("@almaviacx/twilio-toolkit-service");
52
- var getUserId = function (context, client, callData) { return __awaiter(void 0, void 0, void 0, function () {
53
- var logger, workerSid, workerEmail, data, cacheExisting, workerCache, error_1, query, callResult, error_2, error_3;
54
- return __generator(this, function (_a) {
55
- switch (_a.label) {
56
- case 0:
57
- logger = context.logger;
58
- workerSid = callData.workerSid;
59
- workerEmail = callData.workerEmail;
60
- data = undefined;
61
- cacheExisting = false;
62
- logger.info("[sf_voicecall] Get user Id for ".concat(workerSid, "/").concat(workerEmail));
63
- _a.label = 1;
64
- case 1:
65
- _a.trys.push([1, 3, , 4]);
66
- return [4 /*yield*/, client.sync.v1
67
- .services(context.SERVICE_MISC)
68
- .syncMaps(context.MAP_EMAIL)
69
- .syncMapItems(workerEmail)
70
- .fetch()];
71
- case 2:
72
- workerCache = _a.sent();
73
- data = workerCache.data;
74
- cacheExisting = true;
75
- return [3 /*break*/, 4];
76
- case 3:
77
- error_1 = _a.sent();
78
- logger.debug("[sf_voicecall] Can't read cache for ".concat(workerEmail), error_1);
79
- data = { sid: workerSid };
80
- return [3 /*break*/, 4];
81
- case 4:
82
- if (data.sfId) {
83
- logger.debug("[sf_voicecall] SF user id loaded from cache for ".concat(workerEmail, " : ").concat(data.sfId));
84
- return [2 /*return*/, data.sfId];
85
- }
86
- _a.label = 5;
87
- case 5:
88
- _a.trys.push([5, 7, , 8]);
89
- query = encodeURIComponent("Select Id FROM User WHERE CORE_FLEX_Twilio_SID__c='".concat(workerSid, "'"));
90
- return [4 /*yield*/, twilio_toolkit_service_1.callSfdc.callApi("services/data/v57.0/query?q=".concat(query), context, {}, 30000, "get", false)];
91
- case 6:
92
- callResult = _a.sent();
93
- if (callResult && callResult.records && callResult.records.length) {
94
- data.sfId = callResult.records[0].Id;
95
- }
96
- else {
97
- logger.error("[sf_voicecall] No user id found in SF for ".concat(workerSid));
98
- return [2 /*return*/, undefined];
99
- }
100
- return [3 /*break*/, 8];
101
- case 7:
102
- error_2 = _a.sent();
103
- logger.error("[sf_voicecall] Error getting user id in SF", error_2);
104
- return [2 /*return*/, undefined];
105
- case 8:
106
- _a.trys.push([8, 13, , 14]);
107
- if (!cacheExisting) return [3 /*break*/, 10];
108
- return [4 /*yield*/, client.sync.v1
109
- .services(context.SERVICE_MISC)
110
- .syncMaps(context.MAP_EMAIL)
111
- .syncMapItems(workerEmail)
112
- .update({ data: data })];
113
- case 9:
114
- _a.sent();
115
- logger.debug("[sf_voicecall] Cache updated for ".concat(workerEmail, " : ").concat(data.sfId));
116
- return [3 /*break*/, 12];
117
- case 10: return [4 /*yield*/, client.sync.v1
118
- .services(context.SERVICE_MISC)
119
- .syncMaps(context.MAP_EMAIL)
120
- .syncMapItems.create({ key: workerEmail, data: data, ttl: 24 * 60 * 60 })];
121
- case 11:
122
- _a.sent();
123
- logger.debug("[sf_voicecall] Cache created for ".concat(workerEmail, " : ").concat(data.sfId));
124
- _a.label = 12;
125
- case 12: return [3 /*break*/, 14];
126
- case 13:
127
- error_3 = _a.sent();
128
- logger.error("[sf_voicecall] Can't update cache for ".concat(workerEmail), error_3);
129
- return [3 /*break*/, 14];
130
- case 14: return [2 /*return*/, data.sfId];
4
+ const twilio_toolkit_service_1 = require("@almaviacx/twilio-toolkit-service");
5
+ const getUserId = async (context, client, callData) => {
6
+ const { logger } = context;
7
+ const workerSid = callData.workerSid;
8
+ const workerEmail = callData.workerEmail;
9
+ let data = undefined;
10
+ let cacheExisting = false;
11
+ logger.info(`[sf_voicecall] Get user Id for ${workerSid}/${workerEmail}`);
12
+ try {
13
+ const workerCache = await client.sync.v1
14
+ .services(context.SERVICE_MISC)
15
+ .syncMaps(context.MAP_EMAIL)
16
+ .syncMapItems(workerEmail)
17
+ .fetch();
18
+ data = workerCache.data;
19
+ cacheExisting = true;
20
+ }
21
+ catch (error) {
22
+ logger.debug(`[sf_voicecall] Can't read cache for ${workerEmail}`, error);
23
+ data = { sid: workerSid };
24
+ }
25
+ if (data.sfId) {
26
+ logger.debug(`[sf_voicecall] SF user id loaded from cache for ${workerEmail} : ${data.sfId}`);
27
+ return data.sfId;
28
+ }
29
+ try {
30
+ const query = encodeURIComponent(`Select Id FROM User WHERE CORE_FLEX_Twilio_SID__c='${workerSid}'`);
31
+ const callResult = await twilio_toolkit_service_1.callSfdc.callApi(`services/data/v57.0/query?q=${query}`, context, {}, 30000, "get", false);
32
+ if (callResult && callResult.records && callResult.records.length) {
33
+ data.sfId = callResult.records[0].Id;
131
34
  }
132
- });
133
- }); };
134
- var getRecording = function (context, client, callData) { return __awaiter(void 0, void 0, void 0, function () {
135
- var logger, recordingSid, dateCreated, dateUpdated, recording;
136
- return __generator(this, function (_a) {
137
- switch (_a.label) {
138
- case 0:
139
- logger = context.logger;
140
- recordingSid = callData.recordingSid;
141
- if (!recordingSid) {
142
- dateCreated = new Date();
143
- dateUpdated = new Date();
144
- dateCreated.setSeconds(dateCreated.getSeconds() - 1);
145
- return [2 /*return*/, {
146
- dateCreated: dateCreated,
147
- dateUpdated: dateUpdated,
148
- duration: 1
149
- }];
150
- }
151
- return [4 /*yield*/, client.recordings(recordingSid).fetch()];
152
- case 1:
153
- recording = _a.sent();
154
- if (!(recording.status !== 'completed')) return [3 /*break*/, 4];
155
- logger.debug("[sf_voicecall] Recording ".concat(recordingSid, " is not completed. Waiting for completion..."), recording);
156
- return [4 /*yield*/, twilio_toolkit_service_1.miscUtils.sleep(1000)];
157
- case 2:
158
- _a.sent();
159
- return [4 /*yield*/, getRecording(context, client, callData)];
160
- case 3: return [2 /*return*/, _a.sent()];
161
- case 4:
162
- logger.info("[sf_voicecall] Get recording ".concat(recordingSid), recording);
163
- return [2 /*return*/, recording];
35
+ else {
36
+ logger.error(`[sf_voicecall] No user id found in SF for ${workerSid}`);
37
+ return undefined;
164
38
  }
165
- });
166
- }); };
167
- var createVoiceCall = function (context, callData, voiceCallMediaProvider) { return __awaiter(void 0, void 0, void 0, function () {
168
- var client, logger, _a, recording, userId, userData, recMode, voicecallsData, result, error_4;
169
- return __generator(this, function (_b) {
170
- switch (_b.label) {
171
- case 0:
172
- client = context.getTwilioClient();
173
- logger = context.logger;
174
- _b.label = 1;
175
- case 1:
176
- _b.trys.push([1, 4, , 5]);
177
- return [4 /*yield*/, Promise.all([
178
- getRecording(context, client, callData),
179
- getUserId(context, client, callData)
180
- ])];
181
- case 2:
182
- _a = _b.sent(), recording = _a[0], userId = _a[1];
183
- userData = userId ? { userId: userId } : { userEmail: callData.workerEmail };
184
- recMode = context.REC_MODE || "mono";
185
- voicecallsData = {
186
- calls: [
187
- __assign({ toPhoneNumber: callData.toPhoneNumber, fromPhoneNumber: callData.fromPhoneNumber, startDateTime: recording.dateCreated.toISOString(), endDateTime: recording.dateUpdated.toISOString(), callType: callData.callType, recordingDuration: recording.duration > 0 ? recording.duration : 1, numberChannels: recMode === "mono" ? 1 : 2, externalId: callData.externalId, recordingFormat: "mp3", recordId: callData.recordId, mediaProviderId: voiceCallMediaProvider }, userData)
188
- ]
189
- };
190
- logger.info("[sf_voicecall] Send voice call", voicecallsData);
191
- return [4 /*yield*/, twilio_toolkit_service_1.callSfdc.callApi("services/data/v64.0/voicecalls", context, voicecallsData, 30000, "post", false)];
192
- case 3:
193
- result = _b.sent();
194
- logger.info("[sf_voicecall] Send voice call result", result);
195
- if (result.calls && result.calls.length) {
196
- return [2 /*return*/, {
197
- voiceCallId: result.calls[0].voiceCallId,
198
- uploadUrl: result.calls[0].uploadUrl.substring(context.SFDC_URL.length)
199
- }];
200
- }
201
- return [3 /*break*/, 5];
202
- case 4:
203
- error_4 = _b.sent();
204
- logger.error("[sf_voicecall] Exception occured creating voice call", error_4);
205
- return [3 /*break*/, 5];
206
- case 5: return [2 /*return*/, undefined];
39
+ }
40
+ catch (error) {
41
+ logger.error("[sf_voicecall] Error getting user id in SF", error);
42
+ return undefined;
43
+ }
44
+ try {
45
+ if (cacheExisting) {
46
+ await client.sync.v1
47
+ .services(context.SERVICE_MISC)
48
+ .syncMaps(context.MAP_EMAIL)
49
+ .syncMapItems(workerEmail)
50
+ .update({ data });
51
+ logger.debug(`[sf_voicecall] Cache updated for ${workerEmail} : ${data.sfId}`);
207
52
  }
208
- });
209
- }); };
210
- exports.createVoiceCall = createVoiceCall;
211
- var uploadRecording = function (context, uploadUrl, recordingURL) { return __awaiter(void 0, void 0, void 0, function () {
212
- var logger, uploadData, uploadResult, error_5;
213
- return __generator(this, function (_a) {
214
- switch (_a.label) {
215
- case 0:
216
- logger = context.logger;
217
- uploadData = { recordingURL: recordingURL, name: "no_authentication" };
218
- _a.label = 1;
219
- case 1:
220
- _a.trys.push([1, 3, , 4]);
221
- logger.info("[sf_voicecall] Upload url", uploadData);
222
- return [4 /*yield*/, twilio_toolkit_service_1.callSfdc.callApi(uploadUrl, context, uploadData, 30000, "post", false, "multipart/form-data")];
223
- case 2:
224
- uploadResult = _a.sent();
225
- logger.info("[sf_voicecall] Upload url result", uploadResult);
226
- return [3 /*break*/, 4];
227
- case 3:
228
- error_5 = _a.sent();
229
- logger.error("[sf_voicecall] Exception occured uploading recording", error_5);
230
- return [3 /*break*/, 4];
231
- case 4: return [2 /*return*/];
53
+ else {
54
+ await client.sync.v1
55
+ .services(context.SERVICE_MISC)
56
+ .syncMaps(context.MAP_EMAIL)
57
+ .syncMapItems.create({ key: workerEmail, data, ttl: 24 * 60 * 60 });
58
+ logger.debug(`[sf_voicecall] Cache created for ${workerEmail} : ${data.sfId}`);
232
59
  }
233
- });
234
- }); };
235
- exports.uploadRecording = uploadRecording;
236
- var updateVoiceCall = function (context, voiceCallId, data) { return __awaiter(void 0, void 0, void 0, function () {
237
- var logger, result, error_6;
238
- return __generator(this, function (_a) {
239
- switch (_a.label) {
240
- case 0:
241
- logger = context.logger;
242
- _a.label = 1;
243
- case 1:
244
- _a.trys.push([1, 3, , 4]);
245
- return [4 /*yield*/, twilio_toolkit_service_1.callSfdc.callApi("services/data/v66.0/sobjects/voicecall/".concat(voiceCallId), context, data, 30000, "patch", false)];
246
- case 2:
247
- result = _a.sent();
248
- logger.info("[sf_voicecall] Update voice call ".concat(voiceCallId, " result"), result);
249
- return [3 /*break*/, 4];
250
- case 3:
251
- error_6 = _a.sent();
252
- logger.error("[sf_voicecall] Update voice call error", error_6);
253
- return [3 /*break*/, 4];
254
- case 4: return [2 /*return*/];
60
+ }
61
+ catch (error) {
62
+ logger.error(`[sf_voicecall] Can't update cache for ${workerEmail}`, error);
63
+ }
64
+ return data.sfId;
65
+ };
66
+ const getRecording = async (context, client, callData) => {
67
+ const { logger } = context;
68
+ const recordingSid = callData.recordingSid;
69
+ if (!recordingSid) {
70
+ const dateCreated = new Date();
71
+ const dateUpdated = new Date();
72
+ dateCreated.setSeconds(dateCreated.getSeconds() - 1);
73
+ return {
74
+ dateCreated,
75
+ dateUpdated,
76
+ duration: 1
77
+ };
78
+ }
79
+ const recording = await client.recordings(recordingSid).fetch();
80
+ if (recording.status !== 'completed') {
81
+ logger.debug(`[sf_voicecall] Recording ${recordingSid} is not completed. Waiting for completion...`, recording);
82
+ await twilio_toolkit_service_1.miscUtils.sleep(1000);
83
+ return await getRecording(context, client, callData);
84
+ }
85
+ logger.info(`[sf_voicecall] Get recording ${recordingSid}`, recording);
86
+ return recording;
87
+ };
88
+ const createVoiceCall = async (context, callData, voiceCallMediaProvider) => {
89
+ const client = context.getTwilioClient();
90
+ const { logger } = context;
91
+ try {
92
+ const [recording, userId] = await Promise.all([
93
+ getRecording(context, client, callData),
94
+ getUserId(context, client, callData)
95
+ ]);
96
+ const userData = userId ? { userId } : { userEmail: callData.workerEmail };
97
+ const recMode = context.REC_MODE || "mono";
98
+ const voicecallsData = {
99
+ calls: [
100
+ Object.assign({ toPhoneNumber: callData.toPhoneNumber, fromPhoneNumber: callData.fromPhoneNumber, startDateTime: recording.dateCreated.toISOString(), endDateTime: recording.dateUpdated.toISOString(), callType: callData.callType, recordingDuration: recording.duration > 0 ? recording.duration : 1, numberChannels: recMode === "mono" ? 1 : 2, externalId: callData.externalId, recordingFormat: "mp3", recordId: callData.recordId, mediaProviderId: voiceCallMediaProvider }, userData)
101
+ ]
102
+ };
103
+ logger.info("[sf_voicecall] Send voice call", voicecallsData);
104
+ const result = await twilio_toolkit_service_1.callSfdc.callApi("services/data/v64.0/voicecalls", context, voicecallsData, 30000, "post", false);
105
+ logger.info("[sf_voicecall] Send voice call result", result);
106
+ if (result.calls && result.calls.length) {
107
+ return {
108
+ voiceCallId: result.calls[0].voiceCallId,
109
+ uploadUrl: result.calls[0].uploadUrl.substring(context.SFDC_URL.length)
110
+ };
255
111
  }
256
- });
257
- }); };
112
+ }
113
+ catch (error) {
114
+ logger.error("[sf_voicecall] Exception occured creating voice call", error);
115
+ }
116
+ return undefined;
117
+ };
118
+ exports.createVoiceCall = createVoiceCall;
119
+ const uploadRecording = async (context, uploadUrl, recordingURL) => {
120
+ const { logger } = context;
121
+ const uploadData = { recordingURL, name: "no_authentication" };
122
+ try {
123
+ logger.info("[sf_voicecall] Upload url", uploadData);
124
+ const uploadResult = await twilio_toolkit_service_1.callSfdc.callApi(uploadUrl, context, uploadData, 30000, "post", false, "multipart/form-data");
125
+ logger.info("[sf_voicecall] Upload url result", uploadResult);
126
+ }
127
+ catch (error) {
128
+ logger.error("[sf_voicecall] Exception occured uploading recording", error);
129
+ }
130
+ };
131
+ exports.uploadRecording = uploadRecording;
132
+ const updateVoiceCall = async (context, voiceCallId, data) => {
133
+ const { logger } = context;
134
+ try {
135
+ const result = await twilio_toolkit_service_1.callSfdc.callApi(`services/data/v66.0/sobjects/voicecall/${voiceCallId}`, context, data, 30000, "patch", false);
136
+ logger.info(`[sf_voicecall] Update voice call ${voiceCallId} result`, result);
137
+ }
138
+ catch (error) {
139
+ logger.error("[sf_voicecall] Update voice call error", error);
140
+ }
141
+ };
258
142
  exports.updateVoiceCall = updateVoiceCall;
259
- var updateVoiceCallTranscription = function (context, voiceCallId, voiceCallField, transcriptSid) { return __awaiter(void 0, void 0, void 0, function () {
260
- var logger, client, _a, transcript, sentences, callSid, participants, result, data;
261
- return __generator(this, function (_b) {
262
- switch (_b.label) {
263
- case 0:
264
- logger = context.logger;
265
- client = context.getTwilioClient();
266
- return [4 /*yield*/, Promise.all([
267
- client.intelligence.v2.transcripts(transcriptSid).fetch(),
268
- client.intelligence.v2.transcripts(transcriptSid).sentences.list()
269
- ])];
270
- case 1:
271
- _a = _b.sent(), transcript = _a[0], sentences = _a[1];
272
- callSid = transcript.channel.media_properties.source_sid;
273
- participants = [];
274
- transcript.channel.participants.forEach(function (p) {
275
- participants[p.channel_participant] = p.full_name.startsWith('client') ? 'agent' : 'customer';
276
- });
277
- result = sentences.map(function (s) { return ({
278
- start: s.startTime,
279
- text: s.transcript,
280
- user: participants[s.mediaChannel]
281
- }); });
282
- logger.debug("[sf_voicecall] Transcription for call ".concat(callSid), result);
283
- data = {};
284
- data[voiceCallField] = JSON.stringify(result);
285
- return [4 /*yield*/, (0, exports.updateVoiceCall)(context, voiceCallId, data)];
286
- case 2:
287
- _b.sent();
288
- // remove transcript from Twilio after update SFDC
289
- return [4 /*yield*/, client.intelligence.v2.transcripts(transcriptSid).remove()];
290
- case 3:
291
- // remove transcript from Twilio after update SFDC
292
- _b.sent();
293
- return [2 /*return*/];
294
- }
143
+ const updateVoiceCallTranscription = async (context, voiceCallId, voiceCallField, transcriptSid) => {
144
+ const { logger } = context;
145
+ const client = context.getTwilioClient();
146
+ const [transcript, sentences] = await Promise.all([
147
+ client.intelligence.v2.transcripts(transcriptSid).fetch(),
148
+ client.intelligence.v2.transcripts(transcriptSid).sentences.list()
149
+ ]);
150
+ const callSid = transcript.channel.media_properties.source_sid;
151
+ const participants = [];
152
+ transcript.channel.participants.forEach((p) => {
153
+ participants[p.channel_participant] = p.full_name.startsWith('client') ? 'agent' : 'customer';
295
154
  });
296
- }); };
155
+ const result = sentences.map((s) => ({
156
+ start: s.startTime,
157
+ text: s.transcript,
158
+ user: participants[s.mediaChannel]
159
+ }));
160
+ logger.debug(`[sf_voicecall] Transcription for call ${callSid}`, result);
161
+ const data = {};
162
+ data[voiceCallField] = JSON.stringify(result);
163
+ await (0, exports.updateVoiceCall)(context, voiceCallId, data);
164
+ // remove transcript from Twilio after update SFDC
165
+ await client.intelligence.v2.transcripts(transcriptSid).remove();
166
+ };
297
167
  exports.updateVoiceCallTranscription = updateVoiceCallTranscription;
298
168
  //# sourceMappingURL=voiceCall.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"voiceCall.js","sourceRoot":"","sources":["../../src/utils/voiceCall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"voiceCall.js","sourceRoot":"","sources":["../../src/utils/voiceCall.ts"],"names":[],"mappings":"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"}