@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.
@@ -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 _getSpeakerFromProxyO2 = getSpeakerFromProxyOrStore({
103
+ var _getSpeakerFromProxyO = getSpeakerFromProxyOrStore({
130
104
  meetingMembers: meeting.members.membersCollection.members,
131
105
  transcriptData: transcriptData,
132
106
  csisKey: key
133
107
  }),
134
- needsCaching = _getSpeakerFromProxyO2.needsCaching,
135
- speaker = _getSpeakerFromProxyO2.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
- var interimTranscriptIndex = transcriptData.captions.findIndex(function (transcript) {
151
- return transcript.id === interimId;
152
- });
153
- if (interimTranscriptIndex !== -1) {
154
- transcriptData.captions.splice(interimTranscriptIndex, 1);
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: any;
14
+ export declare const processNewCaptions: ({ data, meeting, }: {
15
+ data: MeetingTranscriptPayload;
15
16
  meeting: any;
16
17
  }) => void;
@@ -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.13"
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.13",
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.13",
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.13"
94
+ "version": "3.1.0-next.15"
95
95
  }
@@ -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?.transcribing) {
4699
+ if (this.locusInfo.controls.transcribe?.caption) {
4698
4700
  return true;
4699
4701
  }
4700
4702
 
4701
4703
  LoggerProxy.logger.error(
4702
- 'Meeting:index#isTranscriptionSupported --> Webex Assistant is not enabled/supported'
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 = ({data, meeting}) => {
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
- // eslint-disable-next-line camelcase
84
- transcriptsPerCsis.set(csisMember, {text: newCaption, currentSpokenLanguage});
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
- const {speakerId} = speaker;
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: value.currentSpokenLanguage,
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
- const interimTranscriptIndex = transcriptData.captions.findIndex(
111
- (transcript) => transcript.id === interimId
112
- );
94
+ if (!data.isFinal) {
95
+ const interimTranscriptIndex = transcriptData.captions.findIndex(
96
+ (transcript) => transcript.id === interimId
97
+ );
113
98
 
114
- if (interimTranscriptIndex !== -1) {
115
- transcriptData.captions.splice(interimTranscriptIndex, 1);
116
- }
99
+ if (interimTranscriptIndex !== -1) {
100
+ transcriptData.captions.splice(interimTranscriptIndex, 1);
101
+ }
117
102
 
118
- interimTranscriptionIds.push(interimId);
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: {transcribing: false}};
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: {transcribing: true}};
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.transcript.csis[0];
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.transcript.text,
190
- currentSpokenLanguage: fakeVoiceaPayload.transcript.transcript_language_code,
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({