@webex/plugin-meetings 3.1.0-next.13 → 3.1.0-next.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/index.js +3 -2
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/voicea-meeting.js +37 -49
- package/dist/meeting/voicea-meeting.js.map +1 -1
- package/dist/types/meeting/voicea-meeting.d.ts +3 -2
- package/dist/webinar/index.js +1 -1
- package/package.json +3 -3
- package/src/meeting/index.ts +5 -3
- package/src/meeting/voicea-meeting.ts +44 -46
- package/test/unit/spec/meeting/index.js +4 -2
- package/test/unit/spec/meeting/voicea-meeting.ts +5 -14
|
@@ -4,15 +4,23 @@ var _Array$from = require("@babel/runtime-corejs2/core-js/array/from");
|
|
|
4
4
|
var _Symbol = require("@babel/runtime-corejs2/core-js/symbol");
|
|
5
5
|
var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator");
|
|
6
6
|
var _Array$isArray = require("@babel/runtime-corejs2/core-js/array/is-array");
|
|
7
|
+
var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
|
|
8
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
|
|
9
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
10
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
|
|
11
|
+
var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
|
|
7
12
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
8
13
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
9
14
|
_Object$defineProperty(exports, "__esModule", {
|
|
10
15
|
value: true
|
|
11
16
|
});
|
|
12
17
|
exports.processNewCaptions = exports.getSpeakerFromProxyOrStore = exports.getSpeaker = void 0;
|
|
18
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
13
19
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
|
|
14
20
|
var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
|
|
15
21
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
|
|
22
|
+
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
23
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
16
24
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
17
25
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
18
26
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
@@ -59,39 +67,6 @@ var processNewCaptions = exports.processNewCaptions = function processNewCaption
|
|
|
59
67
|
meeting = _ref2.meeting;
|
|
60
68
|
var transcriptId = data.transcriptId;
|
|
61
69
|
var transcriptData = meeting.transcription;
|
|
62
|
-
if (data.isFinal) {
|
|
63
|
-
var _data$transcript, _data$transcript2, _data$transcript3;
|
|
64
|
-
transcriptData.interimCaptions[transcriptId].forEach(function (interimId) {
|
|
65
|
-
var interimTranscriptIndex = transcriptData.captions.findIndex(function (transcript) {
|
|
66
|
-
return transcript.id === interimId;
|
|
67
|
-
});
|
|
68
|
-
if (interimTranscriptIndex !== -1) {
|
|
69
|
-
transcriptData.captions.splice(interimTranscriptIndex, 1);
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
delete transcriptData.interimCaptions[transcriptId];
|
|
73
|
-
var csisKey = (_data$transcript = data.transcript) === null || _data$transcript === void 0 ? void 0 : _data$transcript.csis[0];
|
|
74
|
-
var _getSpeakerFromProxyO = getSpeakerFromProxyOrStore({
|
|
75
|
-
meetingMembers: meeting.members.membersCollection.members,
|
|
76
|
-
transcriptData: transcriptData,
|
|
77
|
-
csisKey: csisKey
|
|
78
|
-
}),
|
|
79
|
-
needsCaching = _getSpeakerFromProxyO.needsCaching,
|
|
80
|
-
speaker = _getSpeakerFromProxyO.speaker;
|
|
81
|
-
if (needsCaching) {
|
|
82
|
-
transcriptData.speakerProxy[csisKey] = speaker;
|
|
83
|
-
}
|
|
84
|
-
var captionData = {
|
|
85
|
-
id: transcriptId,
|
|
86
|
-
isFinal: data.isFinal,
|
|
87
|
-
translations: data.translations,
|
|
88
|
-
text: (_data$transcript2 = data.transcript) === null || _data$transcript2 === void 0 ? void 0 : _data$transcript2.text,
|
|
89
|
-
currentSpokenLanguage: (_data$transcript3 = data.transcript) === null || _data$transcript3 === void 0 ? void 0 : _data$transcript3.transcript_language_code,
|
|
90
|
-
timestamp: data.timestamp,
|
|
91
|
-
speaker: speaker
|
|
92
|
-
};
|
|
93
|
-
transcriptData.captions.push(captionData);
|
|
94
|
-
}
|
|
95
70
|
var _data$transcripts = data.transcripts,
|
|
96
71
|
transcripts = _data$transcripts === void 0 ? [] : _data$transcripts;
|
|
97
72
|
var transcriptsPerCsis = new _map.default();
|
|
@@ -106,12 +81,10 @@ var processNewCaptions = exports.processNewCaptions = function processNewCaption
|
|
|
106
81
|
_transcript$csis = (0, _slicedToArray2.default)(transcript.csis, 1),
|
|
107
82
|
csisMember = _transcript$csis[0];
|
|
108
83
|
var newCaption = "".concat((_transcriptsPerCsis$g = (_transcriptsPerCsis$g2 = transcriptsPerCsis.get(csisMember)) === null || _transcriptsPerCsis$g2 === void 0 ? void 0 : _transcriptsPerCsis$g2.text) !== null && _transcriptsPerCsis$g !== void 0 ? _transcriptsPerCsis$g : '', " ").concat(text).trim();
|
|
109
|
-
|
|
110
|
-
// eslint-disable-next-line camelcase
|
|
111
|
-
transcriptsPerCsis.set(csisMember, {
|
|
84
|
+
transcriptsPerCsis.set(csisMember, _objectSpread(_objectSpread({}, transcript), {}, {
|
|
112
85
|
text: newCaption,
|
|
113
86
|
currentSpokenLanguage: currentSpokenLanguage
|
|
114
|
-
});
|
|
87
|
+
}));
|
|
115
88
|
}
|
|
116
89
|
} catch (err) {
|
|
117
90
|
_iterator.e(err);
|
|
@@ -123,37 +96,52 @@ var processNewCaptions = exports.processNewCaptions = function processNewCaption
|
|
|
123
96
|
_step2;
|
|
124
97
|
try {
|
|
125
98
|
var _loop = function _loop() {
|
|
99
|
+
var _meeting$transcriptio, _meeting$transcriptio2, _meeting$transcriptio3, _meeting$transcriptio4, _data$transcripts$;
|
|
126
100
|
var _step2$value = (0, _slicedToArray2.default)(_step2.value, 2),
|
|
127
101
|
key = _step2$value[0],
|
|
128
102
|
value = _step2$value[1];
|
|
129
|
-
var
|
|
103
|
+
var _getSpeakerFromProxyO = getSpeakerFromProxyOrStore({
|
|
130
104
|
meetingMembers: meeting.members.membersCollection.members,
|
|
131
105
|
transcriptData: transcriptData,
|
|
132
106
|
csisKey: key
|
|
133
107
|
}),
|
|
134
|
-
needsCaching =
|
|
135
|
-
speaker =
|
|
108
|
+
needsCaching = _getSpeakerFromProxyO.needsCaching,
|
|
109
|
+
speaker = _getSpeakerFromProxyO.speaker;
|
|
110
|
+
var speakerId = speaker.speakerId;
|
|
111
|
+
var interimId = "".concat(transcriptId, "_").concat(speakerId);
|
|
136
112
|
if (needsCaching) {
|
|
137
113
|
transcriptData.speakerProxy[key] = speaker;
|
|
138
114
|
}
|
|
139
|
-
var speakerId = speaker.speakerId;
|
|
140
|
-
var interimId = "".concat(transcriptId, "_").concat(speakerId);
|
|
141
115
|
var captionData = {
|
|
142
116
|
id: interimId,
|
|
143
117
|
isFinal: data.isFinal,
|
|
144
118
|
translations: value.translations,
|
|
145
119
|
text: value.text,
|
|
146
|
-
currentCaptionLanguage: value.currentSpokenLanguage,
|
|
120
|
+
currentCaptionLanguage: ((_meeting$transcriptio = meeting.transcription) === null || _meeting$transcriptio === void 0 ? void 0 : (_meeting$transcriptio2 = _meeting$transcriptio.languageOptions) === null || _meeting$transcriptio2 === void 0 ? void 0 : _meeting$transcriptio2.currentCaptionLanguage) || value.currentSpokenLanguage,
|
|
121
|
+
currentSpokenLanguage: ((_meeting$transcriptio3 = meeting.transcription) === null || _meeting$transcriptio3 === void 0 ? void 0 : (_meeting$transcriptio4 = _meeting$transcriptio3.languageOptions) === null || _meeting$transcriptio4 === void 0 ? void 0 : _meeting$transcriptio4.currentSpokenLanguage) || ((_data$transcripts$ = data.transcripts[0]) === null || _data$transcripts$ === void 0 ? void 0 : _data$transcripts$.transcript_language_code),
|
|
147
122
|
timestamp: value === null || value === void 0 ? void 0 : value.timestamp,
|
|
148
123
|
speaker: speaker
|
|
149
124
|
};
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
125
|
+
if (!data.isFinal) {
|
|
126
|
+
var interimTranscriptIndex = transcriptData.captions.findIndex(function (transcript) {
|
|
127
|
+
return transcript.id === interimId;
|
|
128
|
+
});
|
|
129
|
+
if (interimTranscriptIndex !== -1) {
|
|
130
|
+
transcriptData.captions.splice(interimTranscriptIndex, 1);
|
|
131
|
+
}
|
|
132
|
+
interimTranscriptionIds.push(interimId);
|
|
133
|
+
} else {
|
|
134
|
+
transcriptData.interimCaptions[transcriptId].forEach(function (innerInterimId) {
|
|
135
|
+
var interimTranscriptIndex = transcriptData.captions.findIndex(function (transcript) {
|
|
136
|
+
return transcript.id === innerInterimId;
|
|
137
|
+
});
|
|
138
|
+
if (interimTranscriptIndex !== -1) {
|
|
139
|
+
transcriptData.captions.splice(interimTranscriptIndex, 1);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
delete transcriptData.interimCaptions[transcriptId];
|
|
143
|
+
captionData.id = transcriptId;
|
|
155
144
|
}
|
|
156
|
-
interimTranscriptionIds.push(interimId);
|
|
157
145
|
transcriptData.captions.push(captionData);
|
|
158
146
|
};
|
|
159
147
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getSpeaker","exports","members","csis","arguments","length","undefined","_values","default","find","member","_member$participant$s","memberCSIs","participant","status","some","csi","includes","getSpeakerFromProxyOrStore","_ref","_meetingMember$partic","_meetingMember$partic2","csisKey","meetingMembers","transcriptData","speaker","speakerId","name","needsCaching","speakerProxy","meetingMember","person","id","processNewCaptions","_ref2","data","meeting","transcriptId","transcription","isFinal","_data$transcript","_data$transcript2","_data$transcript3","interimCaptions","forEach","interimId","interimTranscriptIndex","captions","findIndex","transcript","splice","_getSpeakerFromProxyO","membersCollection","captionData","translations","text","currentSpokenLanguage","transcript_language_code","timestamp","push","_data$transcripts","transcripts","transcriptsPerCsis","_map","_iterator","_createForOfIteratorHelper","_step","s","n","done","_transcriptsPerCsis$g","_transcriptsPerCsis$g2","value","_transcript$csis","_slicedToArray2","csisMember","newCaption","concat","get","trim","set","err","e","f","interimTranscriptionIds","_iterator2","_step2","_loop","_step2$value","key","_getSpeakerFromProxyO2","currentCaptionLanguage"],"sources":["voicea-meeting.ts"],"sourcesContent":["export const getSpeaker = (members, csis = []) =>\n Object.values(members).find((member: any) => {\n const memberCSIs = member.participant.status.csis ?? [];\n\n return csis.some((csi) => memberCSIs.includes(csi));\n });\n\nexport const getSpeakerFromProxyOrStore = ({csisKey, meetingMembers, transcriptData}) => {\n let speaker = {\n speakerId: '',\n name: '',\n };\n\n let needsCaching = false;\n\n if (csisKey && transcriptData.speakerProxy[csisKey]) {\n speaker = transcriptData.speakerProxy[csisKey];\n\n return {speaker, needsCaching};\n }\n\n const meetingMember: any = getSpeaker(meetingMembers, [csisKey]);\n\n speaker = {\n speakerId: meetingMember?.participant.person.id ?? '',\n name: meetingMember?.participant.person.name ?? '',\n };\n\n needsCaching = true;\n\n return {speaker, needsCaching};\n};\n\nexport const processNewCaptions = ({data, meeting}) => {\n const {transcriptId} = data;\n const transcriptData = meeting.transcription;\n\n if (data.isFinal) {\n transcriptData.interimCaptions[transcriptId].forEach((interimId) => {\n const interimTranscriptIndex = transcriptData.captions.findIndex(\n (transcript) => transcript.id === interimId\n );\n\n if (interimTranscriptIndex !== -1) {\n transcriptData.captions.splice(interimTranscriptIndex, 1);\n }\n });\n delete transcriptData.interimCaptions[transcriptId];\n const csisKey = data.transcript?.csis[0];\n\n const {needsCaching, speaker} = getSpeakerFromProxyOrStore({\n meetingMembers: meeting.members.membersCollection.members,\n transcriptData,\n csisKey,\n });\n\n if (needsCaching) {\n transcriptData.speakerProxy[csisKey] = speaker;\n }\n const captionData = {\n id: transcriptId,\n isFinal: data.isFinal,\n translations: data.translations,\n text: data.transcript?.text,\n currentSpokenLanguage: data.transcript?.transcript_language_code,\n timestamp: data.timestamp,\n speaker,\n };\n transcriptData.captions.push(captionData);\n }\n const {transcripts = []} = data;\n const transcriptsPerCsis = new Map();\n\n for (const transcript of transcripts) {\n const {\n text,\n transcript_language_code: currentSpokenLanguage,\n csis: [csisMember],\n } = transcript;\n\n const newCaption = `${transcriptsPerCsis.get(csisMember)?.text ?? ''} ${text}`.trim();\n\n // eslint-disable-next-line camelcase\n transcriptsPerCsis.set(csisMember, {text: newCaption, currentSpokenLanguage});\n }\n const interimTranscriptionIds = [];\n\n for (const [key, value] of transcriptsPerCsis) {\n const {needsCaching, speaker} = getSpeakerFromProxyOrStore({\n meetingMembers: meeting.members.membersCollection.members,\n transcriptData,\n csisKey: key,\n });\n\n if (needsCaching) {\n transcriptData.speakerProxy[key] = speaker;\n }\n const {speakerId} = speaker;\n const interimId = `${transcriptId}_${speakerId}`;\n const captionData = {\n id: interimId,\n isFinal: data.isFinal,\n translations: value.translations,\n text: value.text,\n currentCaptionLanguage: value.currentSpokenLanguage,\n timestamp: value?.timestamp,\n speaker,\n };\n\n const interimTranscriptIndex = transcriptData.captions.findIndex(\n (transcript) => transcript.id === interimId\n );\n\n if (interimTranscriptIndex !== -1) {\n transcriptData.captions.splice(interimTranscriptIndex, 1);\n }\n\n interimTranscriptionIds.push(interimId);\n transcriptData.captions.push(captionData);\n }\n transcriptData.interimCaptions[transcriptId] = interimTranscriptionIds;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["getSpeaker","exports","members","csis","arguments","length","undefined","_values","default","find","member","_member$participant$s","memberCSIs","participant","status","some","csi","includes","getSpeakerFromProxyOrStore","_ref","_meetingMember$partic","_meetingMember$partic2","csisKey","meetingMembers","transcriptData","speaker","speakerId","name","needsCaching","speakerProxy","meetingMember","person","id","processNewCaptions","_ref2","data","meeting","transcriptId","transcription","_data$transcripts","transcripts","transcriptsPerCsis","_map","_iterator","_createForOfIteratorHelper","_step","s","n","done","_transcriptsPerCsis$g","_transcriptsPerCsis$g2","transcript","value","text","currentSpokenLanguage","transcript_language_code","_transcript$csis","_slicedToArray2","csisMember","newCaption","concat","get","trim","set","_objectSpread","err","e","f","interimTranscriptionIds","_iterator2","_step2","_loop","_meeting$transcriptio","_meeting$transcriptio2","_meeting$transcriptio3","_meeting$transcriptio4","_data$transcripts$","_step2$value","key","_getSpeakerFromProxyO","membersCollection","interimId","captionData","isFinal","translations","currentCaptionLanguage","languageOptions","timestamp","interimTranscriptIndex","captions","findIndex","splice","push","interimCaptions","forEach","innerInterimId"],"sources":["voicea-meeting.ts"],"sourcesContent":["import {type MeetingTranscriptPayload} from '@webex/internal-plugin-voicea';\n\nexport const getSpeaker = (members, csis = []) =>\n Object.values(members).find((member: any) => {\n const memberCSIs = member.participant.status.csis ?? [];\n\n return csis.some((csi) => memberCSIs.includes(csi));\n });\n\nexport const getSpeakerFromProxyOrStore = ({csisKey, meetingMembers, transcriptData}) => {\n let speaker = {\n speakerId: '',\n name: '',\n };\n\n let needsCaching = false;\n\n if (csisKey && transcriptData.speakerProxy[csisKey]) {\n speaker = transcriptData.speakerProxy[csisKey];\n\n return {speaker, needsCaching};\n }\n\n const meetingMember: any = getSpeaker(meetingMembers, [csisKey]);\n\n speaker = {\n speakerId: meetingMember?.participant.person.id ?? '',\n name: meetingMember?.participant.person.name ?? '',\n };\n\n needsCaching = true;\n\n return {speaker, needsCaching};\n};\n\nexport const processNewCaptions = ({\n data,\n meeting,\n}: {\n data: MeetingTranscriptPayload;\n meeting: any;\n}) => {\n const {transcriptId} = data;\n const transcriptData = meeting.transcription;\n\n const {transcripts = []} = data;\n const transcriptsPerCsis = new Map();\n\n for (const transcript of transcripts) {\n const {\n text,\n transcript_language_code: currentSpokenLanguage,\n csis: [csisMember],\n } = transcript;\n\n const newCaption = `${transcriptsPerCsis.get(csisMember)?.text ?? ''} ${text}`.trim();\n\n transcriptsPerCsis.set(csisMember, {\n ...transcript,\n text: newCaption,\n currentSpokenLanguage,\n });\n }\n const interimTranscriptionIds = [];\n\n for (const [key, value] of transcriptsPerCsis) {\n const {needsCaching, speaker} = getSpeakerFromProxyOrStore({\n meetingMembers: meeting.members.membersCollection.members,\n transcriptData,\n csisKey: key,\n });\n const {speakerId} = speaker;\n const interimId = `${transcriptId}_${speakerId}`;\n\n if (needsCaching) {\n transcriptData.speakerProxy[key] = speaker;\n }\n\n const captionData = {\n id: interimId,\n isFinal: data.isFinal,\n translations: value.translations,\n text: value.text,\n currentCaptionLanguage:\n meeting.transcription?.languageOptions?.currentCaptionLanguage ||\n value.currentSpokenLanguage,\n currentSpokenLanguage:\n meeting.transcription?.languageOptions?.currentSpokenLanguage ||\n data.transcripts[0]?.transcript_language_code,\n timestamp: value?.timestamp,\n speaker,\n };\n\n if (!data.isFinal) {\n const interimTranscriptIndex = transcriptData.captions.findIndex(\n (transcript) => transcript.id === interimId\n );\n\n if (interimTranscriptIndex !== -1) {\n transcriptData.captions.splice(interimTranscriptIndex, 1);\n }\n\n interimTranscriptionIds.push(interimId);\n } else {\n transcriptData.interimCaptions[transcriptId].forEach((innerInterimId) => {\n const interimTranscriptIndex = transcriptData.captions.findIndex(\n (transcript) => transcript.id === innerInterimId\n );\n\n if (interimTranscriptIndex !== -1) {\n transcriptData.captions.splice(interimTranscriptIndex, 1);\n }\n });\n delete transcriptData.interimCaptions[transcriptId];\n captionData.id = transcriptId;\n }\n transcriptData.captions.push(captionData);\n }\n transcriptData.interimCaptions[transcriptId] = interimTranscriptionIds;\n};\n"],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type MeetingTranscriptPayload } from '@webex/internal-plugin-voicea';
|
|
1
2
|
export declare const getSpeaker: (members: any, csis?: any[]) => unknown;
|
|
2
3
|
export declare const getSpeakerFromProxyOrStore: ({ csisKey, meetingMembers, transcriptData }: {
|
|
3
4
|
csisKey: any;
|
|
@@ -10,7 +11,7 @@ export declare const getSpeakerFromProxyOrStore: ({ csisKey, meetingMembers, tra
|
|
|
10
11
|
};
|
|
11
12
|
needsCaching: boolean;
|
|
12
13
|
};
|
|
13
|
-
export declare const processNewCaptions: ({ data, meeting }: {
|
|
14
|
-
data:
|
|
14
|
+
export declare const processNewCaptions: ({ data, meeting, }: {
|
|
15
|
+
data: MeetingTranscriptPayload;
|
|
15
16
|
meeting: any;
|
|
16
17
|
}) => void;
|
package/dist/webinar/index.js
CHANGED
|
@@ -62,7 +62,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
62
62
|
updateCanManageWebcast: function updateCanManageWebcast(canManageWebcast) {
|
|
63
63
|
this.set('canManageWebcast', canManageWebcast);
|
|
64
64
|
},
|
|
65
|
-
version: "3.1.0-next.
|
|
65
|
+
version: "3.1.0-next.15"
|
|
66
66
|
});
|
|
67
67
|
var _default = exports.default = Webinar;
|
|
68
68
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"@webex/eslint-config-legacy": "0.0.0",
|
|
44
44
|
"@webex/jest-config-legacy": "0.0.0",
|
|
45
45
|
"@webex/legacy-tools": "0.0.0",
|
|
46
|
-
"@webex/plugin-meetings": "3.1.0-next.
|
|
46
|
+
"@webex/plugin-meetings": "3.1.0-next.15",
|
|
47
47
|
"@webex/plugin-rooms": "3.1.0-next.2",
|
|
48
48
|
"@webex/test-helper-chai": "3.1.0-next.2",
|
|
49
49
|
"@webex/test-helper-mocha": "3.1.0-next.2",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"@webex/internal-plugin-metrics": "3.1.0-next.2",
|
|
71
71
|
"@webex/internal-plugin-support": "3.1.0-next.2",
|
|
72
72
|
"@webex/internal-plugin-user": "3.1.0-next.2",
|
|
73
|
-
"@webex/internal-plugin-voicea": "3.1.0-next.
|
|
73
|
+
"@webex/internal-plugin-voicea": "3.1.0-next.15",
|
|
74
74
|
"@webex/media-helpers": "3.1.0-next.2",
|
|
75
75
|
"@webex/plugin-people": "3.1.0-next.2",
|
|
76
76
|
"@webex/plugin-rooms": "3.1.0-next.2",
|
|
@@ -91,5 +91,5 @@
|
|
|
91
91
|
"//": [
|
|
92
92
|
"TODO: upgrade jwt-decode when moving to node 18"
|
|
93
93
|
],
|
|
94
|
-
"version": "3.1.0-next.
|
|
94
|
+
"version": "3.1.0-next.15"
|
|
95
95
|
}
|
package/src/meeting/index.ts
CHANGED
|
@@ -38,6 +38,7 @@ import {
|
|
|
38
38
|
import {
|
|
39
39
|
EVENT_TRIGGERS as VOICEAEVENTS,
|
|
40
40
|
TURN_ON_CAPTION_STATUS,
|
|
41
|
+
type MeetingTranscriptPayload,
|
|
41
42
|
} from '@webex/internal-plugin-voicea';
|
|
42
43
|
import {processNewCaptions} from './voicea-meeting';
|
|
43
44
|
|
|
@@ -654,7 +655,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
654
655
|
this.transcription.isListening = !!data.isListening;
|
|
655
656
|
this.transcription.commandText = data.text ?? '';
|
|
656
657
|
},
|
|
657
|
-
[VOICEAEVENTS.NEW_CAPTION]: (data) => {
|
|
658
|
+
[VOICEAEVENTS.NEW_CAPTION]: (data: MeetingTranscriptPayload) => {
|
|
658
659
|
processNewCaptions({data, meeting: this});
|
|
659
660
|
|
|
660
661
|
LoggerProxy.logger.debug(
|
|
@@ -3079,6 +3080,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3079
3080
|
options: {meetingId: this.id},
|
|
3080
3081
|
});
|
|
3081
3082
|
}
|
|
3083
|
+
this.updateLLMConnection();
|
|
3082
3084
|
});
|
|
3083
3085
|
this.locusInfo.on(LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, async (payload) => {
|
|
3084
3086
|
this.stopKeepAlive();
|
|
@@ -4694,12 +4696,12 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4694
4696
|
* @throws TranscriptionNotSupportedError
|
|
4695
4697
|
*/
|
|
4696
4698
|
isTranscriptionSupported() {
|
|
4697
|
-
if (this.locusInfo.controls.transcribe?.
|
|
4699
|
+
if (this.locusInfo.controls.transcribe?.caption) {
|
|
4698
4700
|
return true;
|
|
4699
4701
|
}
|
|
4700
4702
|
|
|
4701
4703
|
LoggerProxy.logger.error(
|
|
4702
|
-
'Meeting:index#isTranscriptionSupported -->
|
|
4704
|
+
'Meeting:index#isTranscriptionSupported --> Closed Captions is not enabled/supported'
|
|
4703
4705
|
);
|
|
4704
4706
|
|
|
4705
4707
|
return false;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import {type MeetingTranscriptPayload} from '@webex/internal-plugin-voicea';
|
|
2
|
+
|
|
1
3
|
export const getSpeaker = (members, csis = []) =>
|
|
2
4
|
Object.values(members).find((member: any) => {
|
|
3
5
|
const memberCSIs = member.participant.status.csis ?? [];
|
|
@@ -31,43 +33,16 @@ export const getSpeakerFromProxyOrStore = ({csisKey, meetingMembers, transcriptD
|
|
|
31
33
|
return {speaker, needsCaching};
|
|
32
34
|
};
|
|
33
35
|
|
|
34
|
-
export const processNewCaptions = ({
|
|
36
|
+
export const processNewCaptions = ({
|
|
37
|
+
data,
|
|
38
|
+
meeting,
|
|
39
|
+
}: {
|
|
40
|
+
data: MeetingTranscriptPayload;
|
|
41
|
+
meeting: any;
|
|
42
|
+
}) => {
|
|
35
43
|
const {transcriptId} = data;
|
|
36
44
|
const transcriptData = meeting.transcription;
|
|
37
45
|
|
|
38
|
-
if (data.isFinal) {
|
|
39
|
-
transcriptData.interimCaptions[transcriptId].forEach((interimId) => {
|
|
40
|
-
const interimTranscriptIndex = transcriptData.captions.findIndex(
|
|
41
|
-
(transcript) => transcript.id === interimId
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
if (interimTranscriptIndex !== -1) {
|
|
45
|
-
transcriptData.captions.splice(interimTranscriptIndex, 1);
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
delete transcriptData.interimCaptions[transcriptId];
|
|
49
|
-
const csisKey = data.transcript?.csis[0];
|
|
50
|
-
|
|
51
|
-
const {needsCaching, speaker} = getSpeakerFromProxyOrStore({
|
|
52
|
-
meetingMembers: meeting.members.membersCollection.members,
|
|
53
|
-
transcriptData,
|
|
54
|
-
csisKey,
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
if (needsCaching) {
|
|
58
|
-
transcriptData.speakerProxy[csisKey] = speaker;
|
|
59
|
-
}
|
|
60
|
-
const captionData = {
|
|
61
|
-
id: transcriptId,
|
|
62
|
-
isFinal: data.isFinal,
|
|
63
|
-
translations: data.translations,
|
|
64
|
-
text: data.transcript?.text,
|
|
65
|
-
currentSpokenLanguage: data.transcript?.transcript_language_code,
|
|
66
|
-
timestamp: data.timestamp,
|
|
67
|
-
speaker,
|
|
68
|
-
};
|
|
69
|
-
transcriptData.captions.push(captionData);
|
|
70
|
-
}
|
|
71
46
|
const {transcripts = []} = data;
|
|
72
47
|
const transcriptsPerCsis = new Map();
|
|
73
48
|
|
|
@@ -80,8 +55,11 @@ export const processNewCaptions = ({data, meeting}) => {
|
|
|
80
55
|
|
|
81
56
|
const newCaption = `${transcriptsPerCsis.get(csisMember)?.text ?? ''} ${text}`.trim();
|
|
82
57
|
|
|
83
|
-
|
|
84
|
-
|
|
58
|
+
transcriptsPerCsis.set(csisMember, {
|
|
59
|
+
...transcript,
|
|
60
|
+
text: newCaption,
|
|
61
|
+
currentSpokenLanguage,
|
|
62
|
+
});
|
|
85
63
|
}
|
|
86
64
|
const interimTranscriptionIds = [];
|
|
87
65
|
|
|
@@ -91,31 +69,51 @@ export const processNewCaptions = ({data, meeting}) => {
|
|
|
91
69
|
transcriptData,
|
|
92
70
|
csisKey: key,
|
|
93
71
|
});
|
|
72
|
+
const {speakerId} = speaker;
|
|
73
|
+
const interimId = `${transcriptId}_${speakerId}`;
|
|
94
74
|
|
|
95
75
|
if (needsCaching) {
|
|
96
76
|
transcriptData.speakerProxy[key] = speaker;
|
|
97
77
|
}
|
|
98
|
-
|
|
99
|
-
const interimId = `${transcriptId}_${speakerId}`;
|
|
78
|
+
|
|
100
79
|
const captionData = {
|
|
101
80
|
id: interimId,
|
|
102
81
|
isFinal: data.isFinal,
|
|
103
82
|
translations: value.translations,
|
|
104
83
|
text: value.text,
|
|
105
|
-
currentCaptionLanguage:
|
|
84
|
+
currentCaptionLanguage:
|
|
85
|
+
meeting.transcription?.languageOptions?.currentCaptionLanguage ||
|
|
86
|
+
value.currentSpokenLanguage,
|
|
87
|
+
currentSpokenLanguage:
|
|
88
|
+
meeting.transcription?.languageOptions?.currentSpokenLanguage ||
|
|
89
|
+
data.transcripts[0]?.transcript_language_code,
|
|
106
90
|
timestamp: value?.timestamp,
|
|
107
91
|
speaker,
|
|
108
92
|
};
|
|
109
93
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
94
|
+
if (!data.isFinal) {
|
|
95
|
+
const interimTranscriptIndex = transcriptData.captions.findIndex(
|
|
96
|
+
(transcript) => transcript.id === interimId
|
|
97
|
+
);
|
|
113
98
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
99
|
+
if (interimTranscriptIndex !== -1) {
|
|
100
|
+
transcriptData.captions.splice(interimTranscriptIndex, 1);
|
|
101
|
+
}
|
|
117
102
|
|
|
118
|
-
|
|
103
|
+
interimTranscriptionIds.push(interimId);
|
|
104
|
+
} else {
|
|
105
|
+
transcriptData.interimCaptions[transcriptId].forEach((innerInterimId) => {
|
|
106
|
+
const interimTranscriptIndex = transcriptData.captions.findIndex(
|
|
107
|
+
(transcript) => transcript.id === innerInterimId
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
if (interimTranscriptIndex !== -1) {
|
|
111
|
+
transcriptData.captions.splice(interimTranscriptIndex, 1);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
delete transcriptData.interimCaptions[transcriptId];
|
|
115
|
+
captionData.id = transcriptId;
|
|
116
|
+
}
|
|
119
117
|
transcriptData.captions.push(captionData);
|
|
120
118
|
}
|
|
121
119
|
transcriptData.interimCaptions[transcriptId] = interimTranscriptionIds;
|
|
@@ -906,12 +906,12 @@ describe('plugin-meetings', () => {
|
|
|
906
906
|
|
|
907
907
|
describe('#isTranscriptionSupported', () => {
|
|
908
908
|
it('should return false if the feature is not supported for the meeting', () => {
|
|
909
|
-
meeting.locusInfo.controls = {transcribe: {
|
|
909
|
+
meeting.locusInfo.controls = {transcribe: {caption: false}};
|
|
910
910
|
|
|
911
911
|
assert.equal(meeting.isTranscriptionSupported(), false);
|
|
912
912
|
});
|
|
913
913
|
it('should return true if webex assitant is enabled', () => {
|
|
914
|
-
meeting.locusInfo.controls = {transcribe: {
|
|
914
|
+
meeting.locusInfo.controls = {transcribe: {caption: true}};
|
|
915
915
|
|
|
916
916
|
assert.equal(meeting.isTranscriptionSupported(), true);
|
|
917
917
|
});
|
|
@@ -7852,6 +7852,7 @@ describe('plugin-meetings', () => {
|
|
|
7852
7852
|
describe('#setUpLocusInfoSelfListener', () => {
|
|
7853
7853
|
it('listens to the self unadmitted guest event', (done) => {
|
|
7854
7854
|
meeting.startKeepAlive = sinon.stub();
|
|
7855
|
+
meeting.updateLLMConnection = sinon.stub();
|
|
7855
7856
|
meeting.locusInfo.emit({function: 'test', file: 'test'}, 'SELF_UNADMITTED_GUEST', test1);
|
|
7856
7857
|
assert.calledOnceWithExactly(meeting.startKeepAlive);
|
|
7857
7858
|
assert.calledThrice(TriggerProxy.trigger);
|
|
@@ -7862,6 +7863,7 @@ describe('plugin-meetings', () => {
|
|
|
7862
7863
|
'meeting:self:lobbyWaiting',
|
|
7863
7864
|
{payload: test1}
|
|
7864
7865
|
);
|
|
7866
|
+
assert.calledOnce(meeting.updateLLMConnection);
|
|
7865
7867
|
done();
|
|
7866
7868
|
});
|
|
7867
7869
|
it('listens to the self admitted guest event', (done) => {
|
|
@@ -101,14 +101,7 @@ describe('plugin-meetings', () => {
|
|
|
101
101
|
],
|
|
102
102
|
transcript_language_code: "en"
|
|
103
103
|
}
|
|
104
|
-
]
|
|
105
|
-
transcript: {
|
|
106
|
-
text: "Don't bother me talking I'm just going to get the transcript data that is interim and I needed if I keep talking, I get the interim data",
|
|
107
|
-
csis: [
|
|
108
|
-
1234867712
|
|
109
|
-
],
|
|
110
|
-
transcript_language_code: "en"
|
|
111
|
-
}
|
|
104
|
+
]
|
|
112
105
|
};
|
|
113
106
|
});
|
|
114
107
|
|
|
@@ -160,7 +153,6 @@ describe('plugin-meetings', () => {
|
|
|
160
153
|
it('should process new final captions correctly', () => {
|
|
161
154
|
let transcriptData = fakeMeeting.transcription;
|
|
162
155
|
let transcriptId = fakeVoiceaPayload.transcriptId;
|
|
163
|
-
delete fakeVoiceaPayload.transcripts;
|
|
164
156
|
|
|
165
157
|
// Assuming that processNewCaptions is a pure function that doesn't mutate the input but returns a new state
|
|
166
158
|
processNewCaptions({
|
|
@@ -169,7 +161,7 @@ describe('plugin-meetings', () => {
|
|
|
169
161
|
});
|
|
170
162
|
|
|
171
163
|
// Check if speaker details are cached if needed
|
|
172
|
-
const csisKey = fakeVoiceaPayload.
|
|
164
|
+
const csisKey = fakeVoiceaPayload.transcripts[0].csis[0];
|
|
173
165
|
const speaker = transcriptData.speakerProxy[csisKey];
|
|
174
166
|
expect(speaker).to.exist;
|
|
175
167
|
|
|
@@ -178,6 +170,7 @@ describe('plugin-meetings', () => {
|
|
|
178
170
|
|
|
179
171
|
//check if the interim caption is removed
|
|
180
172
|
const oldInterimCaption = transcriptData.captions.find(caption => caption.id === `${transcriptId}_${speaker.speakerId}`);
|
|
173
|
+
console.log(oldInterimCaption);
|
|
181
174
|
expect(oldInterimCaption).to.not.exist;
|
|
182
175
|
|
|
183
176
|
// Check the final caption data
|
|
@@ -186,8 +179,8 @@ describe('plugin-meetings', () => {
|
|
|
186
179
|
expect(newCaption).to.include({
|
|
187
180
|
id: transcriptId,
|
|
188
181
|
isFinal: fakeVoiceaPayload.isFinal,
|
|
189
|
-
text: fakeVoiceaPayload.
|
|
190
|
-
currentSpokenLanguage: fakeVoiceaPayload.
|
|
182
|
+
text: fakeVoiceaPayload.transcripts[0].text,
|
|
183
|
+
currentSpokenLanguage: fakeVoiceaPayload.transcripts[0].transcript_language_code,
|
|
191
184
|
});
|
|
192
185
|
|
|
193
186
|
// Check the speaker data in the new caption
|
|
@@ -197,7 +190,6 @@ describe('plugin-meetings', () => {
|
|
|
197
190
|
it('should process new interim captions correctly', () => {
|
|
198
191
|
let transcriptData = fakeMeeting.transcription;
|
|
199
192
|
let transcriptId = fakeVoiceaPayload.transcriptId;
|
|
200
|
-
delete fakeVoiceaPayload.transcript;
|
|
201
193
|
|
|
202
194
|
transcriptData.captions.splice(transcriptData.length - 1, 1);
|
|
203
195
|
fakeVoiceaPayload.isFinal = false;
|
|
@@ -232,7 +224,6 @@ describe('plugin-meetings', () => {
|
|
|
232
224
|
it('should process interim captions with an existing one correctly', () => {
|
|
233
225
|
let transcriptData = fakeMeeting.transcription;
|
|
234
226
|
let transcriptId = fakeVoiceaPayload.transcriptId;
|
|
235
|
-
delete fakeVoiceaPayload.transcript;
|
|
236
227
|
fakeVoiceaPayload.isFinal = false;
|
|
237
228
|
|
|
238
229
|
processNewCaptions({
|