@webex/internal-plugin-voicea 3.0.0-beta.2 → 3.0.0-beta.200
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/README.md +24 -21
- package/dist/constants.js +13 -3
- package/dist/constants.js.map +1 -1
- package/dist/index.js +0 -11
- package/dist/index.js.map +1 -1
- package/dist/utils.js +0 -4
- package/dist/utils.js.map +1 -1
- package/dist/voicea.js +125 -142
- package/dist/voicea.js.map +1 -1
- package/dist/voicea.types.js +0 -1
- package/dist/voicea.types.js.map +1 -1
- package/package.json +9 -9
- package/src/constants.ts +15 -3
- package/src/utils.ts +1 -2
- package/src/voicea.ts +122 -44
- package/src/voicea.types.ts +2 -2
- package/test/unit/spec/voicea.js +145 -43
package/dist/voicea.js
CHANGED
|
@@ -1,101 +1,68 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
|
|
4
|
-
|
|
5
4
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
6
|
-
|
|
7
5
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
8
|
-
|
|
9
6
|
_Object$defineProperty(exports, "__esModule", {
|
|
10
7
|
value: true
|
|
11
8
|
});
|
|
12
|
-
|
|
13
9
|
exports.default = exports.VoiceaChannel = void 0;
|
|
14
|
-
|
|
15
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
16
|
-
|
|
17
11
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
18
|
-
|
|
19
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
20
|
-
|
|
21
13
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
22
|
-
|
|
23
14
|
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
|
|
24
|
-
|
|
25
15
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
26
|
-
|
|
27
16
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
28
|
-
|
|
29
17
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
30
|
-
|
|
31
18
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
32
|
-
|
|
33
19
|
var _uuid = _interopRequireDefault(require("uuid"));
|
|
34
|
-
|
|
35
20
|
var _pluginMeetings = require("@webex/plugin-meetings");
|
|
36
|
-
|
|
37
21
|
var _webexCore = require("@webex/webex-core");
|
|
38
|
-
|
|
39
22
|
var _constants = require("./constants");
|
|
40
|
-
|
|
41
23
|
var _utils = require("./utils");
|
|
42
|
-
|
|
43
24
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
44
|
-
|
|
45
25
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
46
|
-
|
|
47
26
|
/**
|
|
48
|
-
* VoiceaChannel to hold single instance of LLM
|
|
27
|
+
* @description VoiceaChannel to hold single instance of LLM
|
|
28
|
+
* @export
|
|
29
|
+
* @class VoiceaChannel
|
|
49
30
|
*/
|
|
50
31
|
var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
|
|
51
32
|
(0, _inherits2.default)(VoiceaChannel, _WebexPlugin);
|
|
52
|
-
|
|
53
33
|
var _super = _createSuper(VoiceaChannel);
|
|
54
|
-
|
|
55
34
|
/**
|
|
56
35
|
* Initializes Voicea plugin
|
|
57
36
|
* @param {any} args
|
|
58
37
|
*/
|
|
59
38
|
function VoiceaChannel() {
|
|
60
39
|
var _this;
|
|
61
|
-
|
|
62
40
|
(0, _classCallCheck2.default)(this, VoiceaChannel);
|
|
63
|
-
|
|
64
41
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
65
42
|
args[_key] = arguments[_key];
|
|
66
43
|
}
|
|
67
|
-
|
|
68
44
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
69
45
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "namespace", _constants.VOICEA);
|
|
70
46
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "seqNum", void 0);
|
|
71
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hasVoiceaJoined", void 0);
|
|
72
47
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "areCaptionsEnabled", void 0);
|
|
73
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isTranscribingEnabled", void 0);
|
|
74
48
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hasSubscribedToEvents", false);
|
|
75
49
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "vmcDeviceId", void 0);
|
|
50
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "announceStatus", void 0);
|
|
51
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "captionStatus", void 0);
|
|
76
52
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "eventProcessor", function (e) {
|
|
77
|
-
e;
|
|
78
53
|
_this.seqNum = e.sequenceNumber + 1;
|
|
79
|
-
|
|
80
54
|
switch (e.data.relayType) {
|
|
81
55
|
case _constants.VOICEA_RELAY_TYPES.ANNOUNCEMENT:
|
|
82
56
|
_this.vmcDeviceId = e.headers.from;
|
|
83
|
-
_this.
|
|
84
|
-
|
|
57
|
+
_this.announceStatus = _constants.ANNOUNCE_STATUS.JOINED;
|
|
85
58
|
_this.processAnnouncementMessage(e.data.voiceaPayload);
|
|
86
|
-
|
|
87
59
|
break;
|
|
88
|
-
|
|
89
60
|
case _constants.VOICEA_RELAY_TYPES.TRANSLATION_RESPONSE:
|
|
90
61
|
_this.processCaptionLanguageResponse(e.data.voiceaPayload);
|
|
91
|
-
|
|
92
62
|
break;
|
|
93
|
-
|
|
94
63
|
case _constants.VOICEA_RELAY_TYPES.TRANSCRIPTION:
|
|
95
64
|
_this.processTranscription(e.data.voiceaPayload);
|
|
96
|
-
|
|
97
65
|
break;
|
|
98
|
-
|
|
99
66
|
default:
|
|
100
67
|
break;
|
|
101
68
|
}
|
|
@@ -111,9 +78,7 @@ var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
111
78
|
transcriptId: voiceaPayload.transcript_id,
|
|
112
79
|
transcripts: voiceaPayload.transcripts
|
|
113
80
|
});
|
|
114
|
-
|
|
115
81
|
break;
|
|
116
|
-
|
|
117
82
|
case _constants.TRANSCRIPTION_TYPE.TRANSCRIPT_FINAL_RESULT:
|
|
118
83
|
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
119
84
|
file: 'voicea',
|
|
@@ -128,9 +93,7 @@ var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
128
93
|
},
|
|
129
94
|
timestamp: (0, _utils.millisToMinutesAndSeconds)(voiceaPayload.transcript.end_millis)
|
|
130
95
|
});
|
|
131
|
-
|
|
132
96
|
break;
|
|
133
|
-
|
|
134
97
|
case _constants.TRANSCRIPTION_TYPE.HIGHLIGHT_CREATED:
|
|
135
98
|
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
136
99
|
file: 'voicea',
|
|
@@ -143,9 +106,7 @@ var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
143
106
|
highlightSource: voiceaPayload.highlight.highlight_source,
|
|
144
107
|
timestamp: (0, _utils.millisToMinutesAndSeconds)(voiceaPayload.highlight.end_millis)
|
|
145
108
|
});
|
|
146
|
-
|
|
147
109
|
break;
|
|
148
|
-
|
|
149
110
|
case _constants.TRANSCRIPTION_TYPE.EVA_THANKS:
|
|
150
111
|
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
151
112
|
file: 'voicea',
|
|
@@ -154,9 +115,7 @@ var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
154
115
|
isListening: false,
|
|
155
116
|
text: voiceaPayload.command_response
|
|
156
117
|
});
|
|
157
|
-
|
|
158
118
|
break;
|
|
159
|
-
|
|
160
119
|
case _constants.TRANSCRIPTION_TYPE.EVA_WAKE:
|
|
161
120
|
case _constants.TRANSCRIPTION_TYPE.EVA_CANCEL:
|
|
162
121
|
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
@@ -165,9 +124,7 @@ var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
165
124
|
}, _constants.EVENT_TRIGGERS.EVA_COMMAND, {
|
|
166
125
|
isListening: voiceaPayload.type === _constants.TRANSCRIPTION_TYPE.EVA_WAKE
|
|
167
126
|
});
|
|
168
|
-
|
|
169
127
|
break;
|
|
170
|
-
|
|
171
128
|
default:
|
|
172
129
|
break;
|
|
173
130
|
}
|
|
@@ -192,27 +149,25 @@ var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
192
149
|
});
|
|
193
150
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "processAnnouncementMessage", function (voiceaPayload) {
|
|
194
151
|
var _voiceaPayload$transl, _voiceaPayload$transl2, _voiceaPayload$transl3, _voiceaPayload$transl4, _voiceaPayload$ASR$sp, _voiceaPayload$ASR;
|
|
195
|
-
|
|
196
152
|
var voiceaLanguageOptions = {
|
|
197
153
|
captionLanguages: (_voiceaPayload$transl = voiceaPayload === null || voiceaPayload === void 0 ? void 0 : (_voiceaPayload$transl2 = voiceaPayload.translation) === null || _voiceaPayload$transl2 === void 0 ? void 0 : _voiceaPayload$transl2.allowed_languages) !== null && _voiceaPayload$transl !== void 0 ? _voiceaPayload$transl : [],
|
|
198
154
|
maxLanguages: (_voiceaPayload$transl3 = voiceaPayload === null || voiceaPayload === void 0 ? void 0 : (_voiceaPayload$transl4 = voiceaPayload.translation) === null || _voiceaPayload$transl4 === void 0 ? void 0 : _voiceaPayload$transl4.max_languages) !== null && _voiceaPayload$transl3 !== void 0 ? _voiceaPayload$transl3 : 0,
|
|
199
155
|
spokenLanguages: (_voiceaPayload$ASR$sp = voiceaPayload === null || voiceaPayload === void 0 ? void 0 : (_voiceaPayload$ASR = voiceaPayload.ASR) === null || _voiceaPayload$ASR === void 0 ? void 0 : _voiceaPayload$ASR.spoken_languages) !== null && _voiceaPayload$ASR$sp !== void 0 ? _voiceaPayload$ASR$sp : []
|
|
200
156
|
};
|
|
201
|
-
|
|
202
157
|
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
203
158
|
file: 'voicea',
|
|
204
159
|
function: 'processAnnouncementMessage'
|
|
205
160
|
}, _constants.EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT, voiceaLanguageOptions);
|
|
206
161
|
});
|
|
207
162
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "sendAnnouncement", function () {
|
|
208
|
-
|
|
209
|
-
|
|
163
|
+
_this.announceStatus = _constants.ANNOUNCE_STATUS.JOINING;
|
|
210
164
|
_this.listenToEvents();
|
|
211
|
-
|
|
165
|
+
// @ts-ignore
|
|
212
166
|
_this.webex.internal.llm.socket.send({
|
|
213
167
|
id: "".concat(_this.seqNum),
|
|
214
168
|
type: 'publishRequest',
|
|
215
169
|
recipients: {
|
|
170
|
+
// @ts-ignore
|
|
216
171
|
route: _this.webex.internal.llm.getBinding()
|
|
217
172
|
},
|
|
218
173
|
headers: {},
|
|
@@ -225,32 +180,37 @@ var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
225
180
|
},
|
|
226
181
|
trackingId: "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString())
|
|
227
182
|
});
|
|
228
|
-
|
|
229
183
|
_this.seqNum += 1;
|
|
230
184
|
});
|
|
231
185
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setSpokenLanguage", function (languageCode) {
|
|
232
|
-
return
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
186
|
+
return (
|
|
187
|
+
// @ts-ignore
|
|
188
|
+
_this.request({
|
|
189
|
+
method: 'PUT',
|
|
190
|
+
// @ts-ignore
|
|
191
|
+
url: "".concat(_this.webex.internal.llm.getLocusUrl(), "/controls/"),
|
|
192
|
+
body: {
|
|
193
|
+
languageCode: languageCode
|
|
194
|
+
}
|
|
195
|
+
}).then(function () {
|
|
196
|
+
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
197
|
+
file: 'voicea',
|
|
198
|
+
function: 'setSpokenLanguage'
|
|
199
|
+
}, _constants.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, {
|
|
200
|
+
languageCode: languageCode
|
|
201
|
+
});
|
|
202
|
+
})
|
|
203
|
+
);
|
|
246
204
|
});
|
|
247
205
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "requestLanguage", function (languageCode) {
|
|
206
|
+
// @ts-ignore
|
|
248
207
|
if (!_this.webex.internal.llm.isConnected()) return;
|
|
249
|
-
|
|
208
|
+
// @ts-ignore
|
|
250
209
|
_this.webex.internal.llm.socket.send({
|
|
251
210
|
id: "".concat(_this.seqNum),
|
|
252
211
|
type: 'publishRequest',
|
|
253
212
|
recipients: {
|
|
213
|
+
// @ts-ignore
|
|
254
214
|
route: _this.webex.internal.llm.getBinding()
|
|
255
215
|
},
|
|
256
216
|
headers: {
|
|
@@ -266,132 +226,155 @@ var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
266
226
|
},
|
|
267
227
|
trackingId: "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString())
|
|
268
228
|
});
|
|
269
|
-
|
|
270
229
|
_this.seqNum += 1;
|
|
271
230
|
});
|
|
231
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "requestTurnOnCaptions", function () {
|
|
232
|
+
_this.captionStatus = _constants.TURN_ON_CAPTION_STATUS.SENDING;
|
|
233
|
+
// @ts-ignore
|
|
234
|
+
// eslint-disable-next-line newline-before-return
|
|
235
|
+
return _this.request({
|
|
236
|
+
method: 'PUT',
|
|
237
|
+
// @ts-ignore
|
|
238
|
+
url: "".concat(_this.webex.internal.llm.getLocusUrl(), "/controls/"),
|
|
239
|
+
body: {
|
|
240
|
+
transcribe: {
|
|
241
|
+
caption: true
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}).then(function () {
|
|
245
|
+
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
246
|
+
file: 'voicea',
|
|
247
|
+
function: 'turnOnCaptions'
|
|
248
|
+
}, _constants.EVENT_TRIGGERS.CAPTIONS_TURNED_ON);
|
|
249
|
+
_this.areCaptionsEnabled = true;
|
|
250
|
+
_this.captionStatus = _constants.TURN_ON_CAPTION_STATUS.ENABLED;
|
|
251
|
+
_this.announce();
|
|
252
|
+
}).catch(function () {
|
|
253
|
+
_this.captionStatus = _constants.TURN_ON_CAPTION_STATUS.IDLE;
|
|
254
|
+
throw new Error('turn on captions fail');
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isAnnounceProcessing", function () {
|
|
258
|
+
return [_constants.ANNOUNCE_STATUS.JOINING, _constants.ANNOUNCE_STATUS.JOINED].includes(_this.announceStatus);
|
|
259
|
+
});
|
|
260
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "announce", function () {
|
|
261
|
+
if (_this.isAnnounceProcessing()) return;
|
|
262
|
+
// @ts-ignore
|
|
263
|
+
if (!_this.webex.internal.llm.isConnected()) {
|
|
264
|
+
throw new Error('voicea can not announce before llm connected');
|
|
265
|
+
}
|
|
266
|
+
_this.sendAnnouncement();
|
|
267
|
+
});
|
|
268
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isCaptionProcessing", function () {
|
|
269
|
+
return [_constants.TURN_ON_CAPTION_STATUS.SENDING, _constants.TURN_ON_CAPTION_STATUS.ENABLED].includes(_this.captionStatus);
|
|
270
|
+
});
|
|
272
271
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "turnOnCaptions", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
273
272
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
274
|
-
while (1) {
|
|
275
|
-
|
|
273
|
+
while (1) switch (_context.prev = _context.next) {
|
|
274
|
+
case 0:
|
|
275
|
+
if (!_this.isCaptionProcessing()) {
|
|
276
|
+
_context.next = 2;
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
279
|
+
return _context.abrupt("return", undefined);
|
|
280
|
+
case 2:
|
|
281
|
+
if (_this.webex.internal.llm.isConnected()) {
|
|
282
|
+
_context.next = 4;
|
|
283
|
+
break;
|
|
284
|
+
}
|
|
285
|
+
throw new Error('can not turn on captions before llm connected');
|
|
286
|
+
case 4:
|
|
287
|
+
return _context.abrupt("return", _this.requestTurnOnCaptions());
|
|
288
|
+
case 5:
|
|
289
|
+
case "end":
|
|
290
|
+
return _context.stop();
|
|
291
|
+
}
|
|
292
|
+
}, _callee);
|
|
293
|
+
})));
|
|
294
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "toggleTranscribing", /*#__PURE__*/function () {
|
|
295
|
+
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(activate) {
|
|
296
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
297
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
276
298
|
case 0:
|
|
277
|
-
|
|
278
|
-
_context.next = 2;
|
|
279
|
-
break;
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
return _context.abrupt("return", undefined);
|
|
283
|
-
|
|
284
|
-
case 2:
|
|
285
|
-
return _context.abrupt("return", _this.request({
|
|
299
|
+
return _context2.abrupt("return", _this.request({
|
|
286
300
|
method: 'PUT',
|
|
301
|
+
// @ts-ignore
|
|
287
302
|
url: "".concat(_this.webex.internal.llm.getLocusUrl(), "/controls/"),
|
|
288
303
|
body: {
|
|
289
304
|
transcribe: {
|
|
290
|
-
|
|
305
|
+
transcribing: activate
|
|
291
306
|
}
|
|
292
307
|
}
|
|
293
308
|
}).then(function () {
|
|
294
|
-
|
|
295
|
-
file: 'voicea',
|
|
296
|
-
function: 'turnOnCaptions'
|
|
297
|
-
}, _constants.EVENT_TRIGGERS.CAPTIONS_TURNED_ON);
|
|
298
|
-
|
|
299
|
-
_this.areCaptionsEnabled = true;
|
|
300
|
-
|
|
301
|
-
_this.sendAnnouncement();
|
|
309
|
+
if (activate && !_this.areCaptionsEnabled) _this.turnOnCaptions();
|
|
302
310
|
}));
|
|
303
|
-
|
|
304
|
-
case 3:
|
|
311
|
+
case 1:
|
|
305
312
|
case "end":
|
|
306
|
-
return
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
}, _callee);
|
|
310
|
-
})));
|
|
311
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "toggleTranscribing", /*#__PURE__*/function () {
|
|
312
|
-
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(activate) {
|
|
313
|
-
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
314
|
-
while (1) {
|
|
315
|
-
switch (_context2.prev = _context2.next) {
|
|
316
|
-
case 0:
|
|
317
|
-
if (!(_this.isTranscribingEnabled === activate)) {
|
|
318
|
-
_context2.next = 2;
|
|
319
|
-
break;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
return _context2.abrupt("return", undefined);
|
|
323
|
-
|
|
324
|
-
case 2:
|
|
325
|
-
return _context2.abrupt("return", _this.request({
|
|
326
|
-
method: 'PUT',
|
|
327
|
-
url: "".concat(_this.webex.internal.llm.getLocusUrl(), "/controls/"),
|
|
328
|
-
body: {
|
|
329
|
-
transcribe: {
|
|
330
|
-
transcribing: activate
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
}).then(function () {
|
|
334
|
-
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
335
|
-
file: 'voicea',
|
|
336
|
-
function: 'toggleTranscribing'
|
|
337
|
-
}, activate ? _constants.EVENT_TRIGGERS.TRANSCRIBING_ON : _constants.EVENT_TRIGGERS.TRANSCRIBING_OFF);
|
|
338
|
-
|
|
339
|
-
_this.isTranscribingEnabled = activate;
|
|
340
|
-
if (activate && !_this.areCaptionsEnabled && !_this.hasVoiceaJoined) _this.turnOnCaptions();
|
|
341
|
-
}));
|
|
342
|
-
|
|
343
|
-
case 3:
|
|
344
|
-
case "end":
|
|
345
|
-
return _context2.stop();
|
|
346
|
-
}
|
|
313
|
+
return _context2.stop();
|
|
347
314
|
}
|
|
348
315
|
}, _callee2);
|
|
349
316
|
}));
|
|
350
|
-
|
|
351
317
|
return function (_x) {
|
|
352
318
|
return _ref2.apply(this, arguments);
|
|
353
319
|
};
|
|
354
320
|
}());
|
|
321
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getCaptionStatus", function () {
|
|
322
|
+
return _this.captionStatus;
|
|
323
|
+
});
|
|
324
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getAnnounceStatus", function () {
|
|
325
|
+
return _this.announceStatus;
|
|
326
|
+
});
|
|
355
327
|
_this.seqNum = 1;
|
|
356
|
-
_this.hasVoiceaJoined = false;
|
|
357
328
|
_this.areCaptionsEnabled = false;
|
|
358
|
-
_this.isTranscribingEnabled = false;
|
|
359
329
|
_this.vmcDeviceId = undefined;
|
|
330
|
+
_this.announceStatus = _constants.ANNOUNCE_STATUS.IDLE;
|
|
331
|
+
_this.captionStatus = _constants.TURN_ON_CAPTION_STATUS.IDLE;
|
|
360
332
|
return _this;
|
|
361
333
|
}
|
|
334
|
+
|
|
362
335
|
/**
|
|
363
336
|
* Process Transcript and send alert
|
|
364
337
|
* @param {TranscriptionResponse} voiceaPayload
|
|
365
338
|
* @returns {void}
|
|
366
339
|
*/
|
|
367
|
-
|
|
368
|
-
|
|
369
340
|
(0, _createClass2.default)(VoiceaChannel, [{
|
|
370
341
|
key: "listenToEvents",
|
|
371
342
|
value:
|
|
343
|
+
/**
|
|
344
|
+
* @param {Object} e
|
|
345
|
+
* @returns {undefined}
|
|
346
|
+
*/
|
|
347
|
+
|
|
372
348
|
/**
|
|
373
349
|
* Listen to websocket messages
|
|
350
|
+
* @returns {undefined}
|
|
374
351
|
*/
|
|
375
352
|
function listenToEvents() {
|
|
376
353
|
if (!this.hasSubscribedToEvents) {
|
|
354
|
+
// @ts-ignore
|
|
377
355
|
this.webex.internal.llm.on('event:relay.event', this.eventProcessor);
|
|
378
356
|
this.hasSubscribedToEvents = true;
|
|
379
357
|
}
|
|
380
358
|
}
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* Listen to websocket messages
|
|
362
|
+
* @returns {void}
|
|
363
|
+
*/
|
|
381
364
|
}, {
|
|
382
365
|
key: "deregisterEvents",
|
|
383
366
|
value: function deregisterEvents() {
|
|
384
|
-
this.hasVoiceaJoined = false;
|
|
385
367
|
this.areCaptionsEnabled = false;
|
|
386
|
-
this.isTranscribingEnabled = false;
|
|
387
368
|
this.vmcDeviceId = undefined;
|
|
369
|
+
// @ts-ignore
|
|
388
370
|
this.webex.internal.llm.off('event:relay.event', this.eventProcessor);
|
|
389
371
|
this.hasSubscribedToEvents = false;
|
|
372
|
+
this.announceStatus = _constants.ANNOUNCE_STATUS.IDLE;
|
|
373
|
+
this.captionStatus = _constants.TURN_ON_CAPTION_STATUS.IDLE;
|
|
390
374
|
}
|
|
391
375
|
}]);
|
|
392
376
|
return VoiceaChannel;
|
|
393
377
|
}(_webexCore.WebexPlugin);
|
|
394
|
-
|
|
395
378
|
exports.VoiceaChannel = VoiceaChannel;
|
|
396
379
|
var _default = VoiceaChannel;
|
|
397
380
|
exports.default = _default;
|
package/dist/voicea.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["VoiceaChannel","args","VOICEA","e","seqNum","sequenceNumber","data","relayType","VOICEA_RELAY_TYPES","ANNOUNCEMENT","vmcDeviceId","headers","from","hasVoiceaJoined","processAnnouncementMessage","voiceaPayload","TRANSLATION_RESPONSE","processCaptionLanguageResponse","TRANSCRIPTION","processTranscription","type","TRANSCRIPTION_TYPE","TRANSCRIPT_INTERIM_RESULTS","Trigger","trigger","file","function","EVENT_TRIGGERS","NEW_CAPTION","isFinal","transcriptId","transcript_id","transcripts","TRANSCRIPT_FINAL_RESULT","transcript","csis","text","transcriptLanguageCode","transcript_language_code","timestamp","millisToMinutesAndSeconds","end_millis","HIGHLIGHT_CREATED","highlight","highlightId","highlight_id","highlightLabel","highlight_label","highlightSource","highlight_source","EVA_THANKS","EVA_COMMAND","isListening","command_response","EVA_WAKE","EVA_CANCEL","statusCode","CAPTION_LANGUAGE_UPDATE","errorCode","errorMessage","message","voiceaLanguageOptions","captionLanguages","translation","allowed_languages","maxLanguages","max_languages","spokenLanguages","ASR","spoken_languages","VOICEA_ANNOUNCEMENT","webex","internal","llm","isConnected","listenToEvents","socket","send","id","recipients","route","getBinding","clientPayload","version","eventType","CLIENT_ANNOUNCEMENT","trackingId","config","trackingIdPrefix","uuid","v4","toString","languageCode","request","method","url","getLocusUrl","body","then","SPOKEN_LANGUAGE_UPDATE","to","translationLanguage","TRANSLATION_REQUEST","areCaptionsEnabled","undefined","transcribe","caption","CAPTIONS_TURNED_ON","sendAnnouncement","activate","isTranscribingEnabled","transcribing","TRANSCRIBING_ON","TRANSCRIBING_OFF","turnOnCaptions","hasSubscribedToEvents","on","eventProcessor","off","WebexPlugin"],"sources":["voicea.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {TriggerProxy as Trigger} from '@webex/plugin-meetings';\nimport {WebexPlugin, config} from '@webex/webex-core';\n\nimport {EVENT_TRIGGERS, VOICEA_RELAY_TYPES, TRANSCRIPTION_TYPE, VOICEA} from './constants';\n// eslint-disable-next-line no-unused-vars\nimport {\n AnnouncementPayload,\n CaptionLanguageResponse,\n TranscriptionResponse,\n IVoiceaChannel,\n} from './voicea.types';\nimport {millisToMinutesAndSeconds} from './utils';\n\n/**\n * VoiceaChannel to hold single instance of LLM\n */\nexport class VoiceaChannel extends WebexPlugin implements IVoiceaChannel {\n namespace = VOICEA;\n\n private seqNum: number;\n\n private hasVoiceaJoined: boolean;\n\n private areCaptionsEnabled: boolean;\n\n private isTranscribingEnabled: boolean;\n\n private hasSubscribedToEvents: boolean = false;\n\n private vmcDeviceId?: string;\n\n private eventProcessor = (e) => {\n e;\n this.seqNum = e.sequenceNumber + 1;\n switch (e.data.relayType) {\n case VOICEA_RELAY_TYPES.ANNOUNCEMENT:\n this.vmcDeviceId = e.headers.from;\n this.hasVoiceaJoined = true;\n this.processAnnouncementMessage(e.data.voiceaPayload);\n break;\n case VOICEA_RELAY_TYPES.TRANSLATION_RESPONSE:\n this.processCaptionLanguageResponse(e.data.voiceaPayload);\n break;\n case VOICEA_RELAY_TYPES.TRANSCRIPTION:\n this.processTranscription(e.data.voiceaPayload);\n break;\n default:\n break;\n }\n };\n /**\n * Listen to websocket messages\n */\n private listenToEvents() {\n if (!this.hasSubscribedToEvents) {\n this.webex.internal.llm.on('event:relay.event', this.eventProcessor);\n this.hasSubscribedToEvents = true;\n }\n }\n\n public deregisterEvents() {\n this.hasVoiceaJoined = false;\n this.areCaptionsEnabled = false;\n this.isTranscribingEnabled = false;\n this.vmcDeviceId = undefined;\n this.webex.internal.llm.off('event:relay.event', this.eventProcessor);\n this.hasSubscribedToEvents = false;\n }\n\n /**\n * Initializes Voicea plugin\n * @param {any} args\n */\n constructor(...args) {\n super(...args);\n this.seqNum = 1;\n this.hasVoiceaJoined = false;\n this.areCaptionsEnabled = false;\n this.isTranscribingEnabled = false;\n this.vmcDeviceId = undefined;\n }\n\n /**\n * Process Transcript and send alert\n * @param {TranscriptionResponse} voiceaPayload\n * @returns {void}\n */\n private processTranscription = (voiceaPayload: TranscriptionResponse): void => {\n switch (voiceaPayload.type) {\n case TRANSCRIPTION_TYPE.TRANSCRIPT_INTERIM_RESULTS:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.NEW_CAPTION,\n {\n isFinal: false,\n transcriptId: voiceaPayload.transcript_id,\n transcripts: voiceaPayload.transcripts,\n }\n );\n break;\n\n case TRANSCRIPTION_TYPE.TRANSCRIPT_FINAL_RESULT:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.NEW_CAPTION,\n {\n isFinal: true,\n transcriptId: voiceaPayload.transcript_id,\n transcript: {\n csis: voiceaPayload.csis,\n text: voiceaPayload.transcript.text,\n transcriptLanguageCode: voiceaPayload.transcript.transcript_language_code,\n },\n timestamp: millisToMinutesAndSeconds(voiceaPayload.transcript.end_millis),\n }\n );\n break;\n\n case TRANSCRIPTION_TYPE.HIGHLIGHT_CREATED:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.HIGHLIGHT_CREATED,\n {\n csis: voiceaPayload.highlight.csis,\n highlightId: voiceaPayload.highlight.highlight_id,\n text: voiceaPayload.highlight.transcript,\n highlightLabel: voiceaPayload.highlight.highlight_label,\n highlightSource: voiceaPayload.highlight.highlight_source,\n timestamp: millisToMinutesAndSeconds(voiceaPayload.highlight.end_millis),\n }\n );\n break;\n\n case TRANSCRIPTION_TYPE.EVA_THANKS:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.EVA_COMMAND,\n {\n isListening: false,\n text: voiceaPayload.command_response,\n }\n );\n break;\n\n case TRANSCRIPTION_TYPE.EVA_WAKE:\n case TRANSCRIPTION_TYPE.EVA_CANCEL:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.EVA_COMMAND,\n {\n isListening: voiceaPayload.type === TRANSCRIPTION_TYPE.EVA_WAKE,\n }\n );\n break;\n\n default:\n break;\n }\n };\n\n /**\n * Processes Caption Language Response\n * @param {CaptionLanguageResponse} voiceaPayload\n * @returns {void}\n */\n private processCaptionLanguageResponse = (voiceaPayload: CaptionLanguageResponse): void => {\n if (voiceaPayload.statusCode === 200) {\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processCaptionLanguageResponse',\n },\n EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE,\n {statusCode: 200}\n );\n } else {\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processCaptionLanguageResponse',\n },\n EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE,\n {statusCode: voiceaPayload.errorCode, errorMessage: voiceaPayload.message}\n );\n }\n };\n\n /**\n * processes voicea announcement response and triggers event\n * @param {Object} voiceaPayload\n * @returns {void}\n */\n private processAnnouncementMessage = (voiceaPayload: AnnouncementPayload): void => {\n const voiceaLanguageOptions = {\n captionLanguages: voiceaPayload?.translation?.allowed_languages ?? [],\n maxLanguages: voiceaPayload?.translation?.max_languages ?? 0,\n spokenLanguages: voiceaPayload?.ASR?.spoken_languages ?? [],\n };\n\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processAnnouncementMessage',\n },\n EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT,\n voiceaLanguageOptions\n );\n };\n\n /**\n * Sends Announcement to add voicea to the meeting\n * @returns {void}\n */\n private sendAnnouncement = (): void => {\n if (this.hasVoiceaJoined || !this.webex.internal.llm.isConnected()) return;\n\n this.listenToEvents();\n\n this.webex.internal.llm.socket.send({\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n route: this.webex.internal.llm.getBinding(),\n },\n headers: {},\n data: {\n clientPayload: {\n version: 'v2',\n },\n eventType: 'relay.event',\n relayType: VOICEA_RELAY_TYPES.CLIENT_ANNOUNCEMENT,\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n });\n this.seqNum += 1;\n };\n\n /**\n * Set Spoken Language for the meeting\n * @param {string} languageCode\n * @returns {Promise}\n */\n public setSpokenLanguage = (languageCode: string): Promise<void> =>\n this.request({\n method: 'PUT',\n url: `${this.webex.internal.llm.getLocusUrl()}/controls/`,\n body: {\n languageCode,\n },\n }).then(() => {\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'setSpokenLanguage',\n },\n EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE,\n {languageCode}\n );\n });\n\n /**\n * Request Language translation\n * @param {string} languageCode\n * @returns {void}\n */\n public requestLanguage = (languageCode: string): void => {\n if (!this.webex.internal.llm.isConnected()) return;\n this.webex.internal.llm.socket.send({\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n route: this.webex.internal.llm.getBinding(),\n },\n headers: {\n to: this.vmcDeviceId,\n },\n data: {\n clientPayload: {\n translationLanguage: languageCode,\n id: uuid.v4(),\n },\n eventType: 'relay.event',\n relayType: VOICEA_RELAY_TYPES.TRANSLATION_REQUEST,\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n });\n this.seqNum += 1;\n };\n\n /**\n * Turn on Captions\n * @returns {Promise}\n */\n public turnOnCaptions = async (): undefined | Promise<void> => {\n if (this.hasVoiceaJoined && this.areCaptionsEnabled) return undefined;\n\n return this.request({\n method: 'PUT',\n url: `${this.webex.internal.llm.getLocusUrl()}/controls/`,\n body: {\n transcribe: {caption: true},\n },\n }).then(() => {\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'turnOnCaptions',\n },\n EVENT_TRIGGERS.CAPTIONS_TURNED_ON\n );\n this.areCaptionsEnabled = true;\n this.sendAnnouncement();\n });\n };\n\n /**\n * Toggle transcribing for highlights\n * @param {bool} activate if true transcribing is turned on\n * @returns {Promise}\n */\n public toggleTranscribing = async (activate: boolean): undefined | Promise<void> => {\n if (this.isTranscribingEnabled === activate) return undefined;\n\n return this.request({\n method: 'PUT',\n url: `${this.webex.internal.llm.getLocusUrl()}/controls/`,\n body: {\n transcribe: {transcribing: activate},\n },\n }).then(() => {\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'toggleTranscribing',\n },\n activate ? EVENT_TRIGGERS.TRANSCRIBING_ON : EVENT_TRIGGERS.TRANSCRIBING_OFF\n );\n this.isTranscribingEnabled = activate;\n if (activate && !this.areCaptionsEnabled && !this.hasVoiceaJoined) this.turnOnCaptions();\n });\n };\n}\n\nexport default VoiceaChannel;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["VoiceaChannel","args","VOICEA","e","seqNum","sequenceNumber","data","relayType","VOICEA_RELAY_TYPES","ANNOUNCEMENT","vmcDeviceId","headers","from","announceStatus","ANNOUNCE_STATUS","JOINED","processAnnouncementMessage","voiceaPayload","TRANSLATION_RESPONSE","processCaptionLanguageResponse","TRANSCRIPTION","processTranscription","type","TRANSCRIPTION_TYPE","TRANSCRIPT_INTERIM_RESULTS","Trigger","trigger","file","function","EVENT_TRIGGERS","NEW_CAPTION","isFinal","transcriptId","transcript_id","transcripts","TRANSCRIPT_FINAL_RESULT","transcript","csis","text","transcriptLanguageCode","transcript_language_code","timestamp","millisToMinutesAndSeconds","end_millis","HIGHLIGHT_CREATED","highlight","highlightId","highlight_id","highlightLabel","highlight_label","highlightSource","highlight_source","EVA_THANKS","EVA_COMMAND","isListening","command_response","EVA_WAKE","EVA_CANCEL","statusCode","CAPTION_LANGUAGE_UPDATE","errorCode","errorMessage","message","voiceaLanguageOptions","captionLanguages","translation","allowed_languages","maxLanguages","max_languages","spokenLanguages","ASR","spoken_languages","VOICEA_ANNOUNCEMENT","JOINING","listenToEvents","webex","internal","llm","socket","send","id","recipients","route","getBinding","clientPayload","version","eventType","CLIENT_ANNOUNCEMENT","trackingId","config","trackingIdPrefix","uuid","v4","toString","languageCode","request","method","url","getLocusUrl","body","then","SPOKEN_LANGUAGE_UPDATE","isConnected","to","translationLanguage","TRANSLATION_REQUEST","captionStatus","TURN_ON_CAPTION_STATUS","SENDING","transcribe","caption","CAPTIONS_TURNED_ON","areCaptionsEnabled","ENABLED","announce","catch","IDLE","Error","includes","isAnnounceProcessing","sendAnnouncement","isCaptionProcessing","undefined","requestTurnOnCaptions","activate","transcribing","turnOnCaptions","hasSubscribedToEvents","on","eventProcessor","off","WebexPlugin"],"sources":["voicea.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {TriggerProxy as Trigger} from '@webex/plugin-meetings';\nimport {WebexPlugin, config} from '@webex/webex-core';\n\nimport {\n EVENT_TRIGGERS,\n VOICEA_RELAY_TYPES,\n TRANSCRIPTION_TYPE,\n VOICEA,\n ANNOUNCE_STATUS,\n TURN_ON_CAPTION_STATUS,\n} from './constants';\n// eslint-disable-next-line no-unused-vars\nimport {\n AnnouncementPayload,\n CaptionLanguageResponse,\n TranscriptionResponse,\n IVoiceaChannel,\n} from './voicea.types';\nimport {millisToMinutesAndSeconds} from './utils';\n\n/**\n * @description VoiceaChannel to hold single instance of LLM\n * @export\n * @class VoiceaChannel\n */\nexport class VoiceaChannel extends WebexPlugin implements IVoiceaChannel {\n namespace = VOICEA;\n\n private seqNum: number;\n\n private areCaptionsEnabled: boolean;\n\n private hasSubscribedToEvents = false;\n\n private vmcDeviceId?: string;\n\n private announceStatus: string;\n\n private captionStatus: string;\n\n /**\n * @param {Object} e\n * @returns {undefined}\n */\n\n private eventProcessor = (e) => {\n this.seqNum = e.sequenceNumber + 1;\n switch (e.data.relayType) {\n case VOICEA_RELAY_TYPES.ANNOUNCEMENT:\n this.vmcDeviceId = e.headers.from;\n this.announceStatus = ANNOUNCE_STATUS.JOINED;\n this.processAnnouncementMessage(e.data.voiceaPayload);\n break;\n case VOICEA_RELAY_TYPES.TRANSLATION_RESPONSE:\n this.processCaptionLanguageResponse(e.data.voiceaPayload);\n break;\n case VOICEA_RELAY_TYPES.TRANSCRIPTION:\n this.processTranscription(e.data.voiceaPayload);\n break;\n default:\n break;\n }\n };\n\n /**\n * Listen to websocket messages\n * @returns {undefined}\n */\n private listenToEvents() {\n if (!this.hasSubscribedToEvents) {\n // @ts-ignore\n this.webex.internal.llm.on('event:relay.event', this.eventProcessor);\n this.hasSubscribedToEvents = true;\n }\n }\n\n /**\n * Listen to websocket messages\n * @returns {void}\n */\n public deregisterEvents() {\n this.areCaptionsEnabled = false;\n this.vmcDeviceId = undefined;\n // @ts-ignore\n this.webex.internal.llm.off('event:relay.event', this.eventProcessor);\n this.hasSubscribedToEvents = false;\n this.announceStatus = ANNOUNCE_STATUS.IDLE;\n this.captionStatus = TURN_ON_CAPTION_STATUS.IDLE;\n }\n\n /**\n * Initializes Voicea plugin\n * @param {any} args\n */\n constructor(...args) {\n super(...args);\n this.seqNum = 1;\n this.areCaptionsEnabled = false;\n this.vmcDeviceId = undefined;\n this.announceStatus = ANNOUNCE_STATUS.IDLE;\n this.captionStatus = TURN_ON_CAPTION_STATUS.IDLE;\n }\n\n /**\n * Process Transcript and send alert\n * @param {TranscriptionResponse} voiceaPayload\n * @returns {void}\n */\n private processTranscription = (voiceaPayload: TranscriptionResponse): void => {\n switch (voiceaPayload.type) {\n case TRANSCRIPTION_TYPE.TRANSCRIPT_INTERIM_RESULTS:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.NEW_CAPTION,\n {\n isFinal: false,\n transcriptId: voiceaPayload.transcript_id,\n transcripts: voiceaPayload.transcripts,\n }\n );\n break;\n\n case TRANSCRIPTION_TYPE.TRANSCRIPT_FINAL_RESULT:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.NEW_CAPTION,\n {\n isFinal: true,\n transcriptId: voiceaPayload.transcript_id,\n transcript: {\n csis: voiceaPayload.csis,\n text: voiceaPayload.transcript.text,\n transcriptLanguageCode: voiceaPayload.transcript.transcript_language_code,\n },\n timestamp: millisToMinutesAndSeconds(voiceaPayload.transcript.end_millis),\n }\n );\n break;\n\n case TRANSCRIPTION_TYPE.HIGHLIGHT_CREATED:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.HIGHLIGHT_CREATED,\n {\n csis: voiceaPayload.highlight.csis,\n highlightId: voiceaPayload.highlight.highlight_id,\n text: voiceaPayload.highlight.transcript,\n highlightLabel: voiceaPayload.highlight.highlight_label,\n highlightSource: voiceaPayload.highlight.highlight_source,\n timestamp: millisToMinutesAndSeconds(voiceaPayload.highlight.end_millis),\n }\n );\n break;\n\n case TRANSCRIPTION_TYPE.EVA_THANKS:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.EVA_COMMAND,\n {\n isListening: false,\n text: voiceaPayload.command_response,\n }\n );\n break;\n\n case TRANSCRIPTION_TYPE.EVA_WAKE:\n case TRANSCRIPTION_TYPE.EVA_CANCEL:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.EVA_COMMAND,\n {\n isListening: voiceaPayload.type === TRANSCRIPTION_TYPE.EVA_WAKE,\n }\n );\n break;\n\n default:\n break;\n }\n };\n\n /**\n * Processes Caption Language Response\n * @param {CaptionLanguageResponse} voiceaPayload\n * @returns {void}\n */\n private processCaptionLanguageResponse = (voiceaPayload: CaptionLanguageResponse): void => {\n if (voiceaPayload.statusCode === 200) {\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processCaptionLanguageResponse',\n },\n EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE,\n {statusCode: 200}\n );\n } else {\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processCaptionLanguageResponse',\n },\n EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE,\n {statusCode: voiceaPayload.errorCode, errorMessage: voiceaPayload.message}\n );\n }\n };\n\n /**\n * processes voicea announcement response and triggers event\n * @param {Object} voiceaPayload\n * @returns {void}\n */\n private processAnnouncementMessage = (voiceaPayload: AnnouncementPayload): void => {\n const voiceaLanguageOptions = {\n captionLanguages: voiceaPayload?.translation?.allowed_languages ?? [],\n maxLanguages: voiceaPayload?.translation?.max_languages ?? 0,\n spokenLanguages: voiceaPayload?.ASR?.spoken_languages ?? [],\n };\n\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processAnnouncementMessage',\n },\n EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT,\n voiceaLanguageOptions\n );\n };\n\n /**\n * Sends Announcement to add voicea to the meeting\n * @returns {void}\n */\n private sendAnnouncement = (): void => {\n this.announceStatus = ANNOUNCE_STATUS.JOINING;\n this.listenToEvents();\n // @ts-ignore\n this.webex.internal.llm.socket.send({\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n // @ts-ignore\n route: this.webex.internal.llm.getBinding(),\n },\n headers: {},\n data: {\n clientPayload: {\n version: 'v2',\n },\n eventType: 'relay.event',\n relayType: VOICEA_RELAY_TYPES.CLIENT_ANNOUNCEMENT,\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n });\n this.seqNum += 1;\n };\n\n /**\n * Set Spoken Language for the meeting\n * @param {string} languageCode\n * @returns {Promise}\n */\n public setSpokenLanguage = (languageCode: string): Promise<void> =>\n // @ts-ignore\n this.request({\n method: 'PUT',\n // @ts-ignore\n url: `${this.webex.internal.llm.getLocusUrl()}/controls/`,\n body: {\n languageCode,\n },\n }).then(() => {\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'setSpokenLanguage',\n },\n EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE,\n {languageCode}\n );\n });\n\n /**\n * Request Language translation\n * @param {string} languageCode\n * @returns {void}\n */\n public requestLanguage = (languageCode: string): void => {\n // @ts-ignore\n if (!this.webex.internal.llm.isConnected()) return;\n // @ts-ignore\n this.webex.internal.llm.socket.send({\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n // @ts-ignore\n route: this.webex.internal.llm.getBinding(),\n },\n headers: {\n to: this.vmcDeviceId,\n },\n data: {\n clientPayload: {\n translationLanguage: languageCode,\n id: uuid.v4(),\n },\n eventType: 'relay.event',\n relayType: VOICEA_RELAY_TYPES.TRANSLATION_REQUEST,\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n });\n this.seqNum += 1;\n };\n\n /**\n * request turn on Captions\n * @returns {Promise}\n */\n private requestTurnOnCaptions = (): undefined | Promise<void> => {\n this.captionStatus = TURN_ON_CAPTION_STATUS.SENDING;\n // @ts-ignore\n // eslint-disable-next-line newline-before-return\n return this.request({\n method: 'PUT',\n // @ts-ignore\n url: `${this.webex.internal.llm.getLocusUrl()}/controls/`,\n body: {\n transcribe: {caption: true},\n },\n })\n .then(() => {\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'turnOnCaptions',\n },\n EVENT_TRIGGERS.CAPTIONS_TURNED_ON\n );\n this.areCaptionsEnabled = true;\n this.captionStatus = TURN_ON_CAPTION_STATUS.ENABLED;\n this.announce();\n })\n .catch(() => {\n this.captionStatus = TURN_ON_CAPTION_STATUS.IDLE;\n throw new Error('turn on captions fail');\n });\n };\n\n /**\n * is announce processing\n * @returns {boolean}\n */\n private isAnnounceProcessing = () =>\n [ANNOUNCE_STATUS.JOINING, ANNOUNCE_STATUS.JOINED].includes(this.announceStatus);\n\n /**\n * announce to voicea data chanel\n * @returns {void}\n */\n public announce = () => {\n if (this.isAnnounceProcessing()) return;\n // @ts-ignore\n if (!this.webex.internal.llm.isConnected()) {\n throw new Error('voicea can not announce before llm connected');\n }\n this.sendAnnouncement();\n };\n\n /**\n * is turn on caption processing\n * @returns {boolean}\n */\n private isCaptionProcessing = () =>\n [TURN_ON_CAPTION_STATUS.SENDING, TURN_ON_CAPTION_STATUS.ENABLED].includes(this.captionStatus);\n\n /**\n * Turn on Captions\n * @returns {Promise}\n */\n public turnOnCaptions = async (): undefined | Promise<void> => {\n if (this.isCaptionProcessing()) return undefined;\n // @ts-ignore\n if (!this.webex.internal.llm.isConnected()) {\n throw new Error('can not turn on captions before llm connected');\n }\n\n return this.requestTurnOnCaptions();\n };\n\n /**\n * Toggle transcribing for highlights\n * @param {bool} activate if true transcribing is turned on\n * @returns {Promise}\n */\n public toggleTranscribing = async (activate: boolean): undefined | Promise<void> => {\n // @ts-ignore\n return this.request({\n method: 'PUT',\n // @ts-ignore\n url: `${this.webex.internal.llm.getLocusUrl()}/controls/`,\n body: {\n transcribe: {transcribing: activate},\n },\n }).then(() => {\n if (activate && !this.areCaptionsEnabled) this.turnOnCaptions();\n });\n };\n\n /**\n * get caption status\n * @returns {string}\n */\n public getCaptionStatus = () => this.captionStatus;\n\n /**\n * get announce status\n * @returns {string}\n */\n public getAnnounceStatus = () => this.announceStatus;\n}\n\nexport default VoiceaChannel;\n"],"mappings":"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"}
|
package/dist/voicea.types.js
CHANGED
package/dist/voicea.types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["voicea.types.ts"],"sourcesContent":["/* eslint-disable camelcase */\n/* eslint-disable no-undef */\n\n/**\n * Type for payload\n */\ninterface AnnouncementPayload {\n translation: {\n max_languages: number;\n allowed_languages: string[];\n };\n\n ASR: {\n spoken_languages: string[];\n };\n}\n\n// eslint-disable-next-line no-undef\ntype TRANSCRIPTION_TYPES =\n | 'unknown'\n | 'eva_wake'\n | 'eva_thanks'\n | 'eva_cancel'\n | 'highlight_created'\n | 'transcript_interim_results'\n | 'transcript_final_result';\n\n/**\n * Class for an Transcription Object\n */\ninterface Transcription {\n start_millis: number;\n end_millis: number;\n text: string;\n transcript_language_code: string;\n translations: {[x: string]: string};\n csis: number[];\n last_packet_timestamp_ms: number;\n}\n\n/**\n * Highlights\n */\ninterface Highlight {\n highlight_id: string;\n transcript: string;\n highlight_label: string;\n highlight_source: string;\n start_millis: number;\n end_millis: number;\n csis: number[];\n}\n/**\n * Type for Transcription message\n */\ninterface TranscriptionResponse {\n type: TRANSCRIPTION_TYPES;\n transcript_id: string;\n translations?: {[x: string]: string};\n transcripts?: Transcription[];\n transcript?: Transcription;\n highlight?: Highlight;\n csis: number[];\n data: string;\n command_response: string;\n}\n/**\n * Type for CaptionLanguageResponse\n */\ninterface CaptionLanguageResponse {\n requestId: string;\n statusCode: number;\n errorCode: number;\n message: string;\n}\n\ninterface IVoiceaChannel {\n setSpokenLanguage: (languageCode: string) => Promise<void>;\n requestLanguage: (languageCode: string) => void;\n turnOnCaptions: () => undefined | Promise<void>;\n toggleTranscribing: (activate: boolean) => undefined | Promise<void>;\n deregisterEvents: () =>
|
|
1
|
+
{"version":3,"names":[],"sources":["voicea.types.ts"],"sourcesContent":["/* eslint-disable camelcase */\n/* eslint-disable no-undef */\n\n/**\n * Type for payload\n */\ninterface AnnouncementPayload {\n translation: {\n max_languages: number;\n allowed_languages: string[];\n };\n\n ASR: {\n spoken_languages: string[];\n };\n}\n\n// eslint-disable-next-line no-undef\ntype TRANSCRIPTION_TYPES =\n | 'unknown'\n | 'eva_wake'\n | 'eva_thanks'\n | 'eva_cancel'\n | 'highlight_created'\n | 'transcript_interim_results'\n | 'transcript_final_result';\n\n/**\n * Class for an Transcription Object\n */\ninterface Transcription {\n start_millis: number;\n end_millis: number;\n text: string;\n transcript_language_code: string;\n translations: {[x: string]: string};\n csis: number[];\n last_packet_timestamp_ms: number;\n}\n\n/**\n * Highlights\n */\ninterface Highlight {\n highlight_id: string;\n transcript: string;\n highlight_label: string;\n highlight_source: string;\n start_millis: number;\n end_millis: number;\n csis: number[];\n}\n/**\n * Type for Transcription message\n */\ninterface TranscriptionResponse {\n type: TRANSCRIPTION_TYPES;\n transcript_id: string;\n translations?: {[x: string]: string};\n transcripts?: Transcription[];\n transcript?: Transcription;\n highlight?: Highlight;\n csis: number[];\n data: string;\n command_response: string;\n}\n/**\n * Type for CaptionLanguageResponse\n */\ninterface CaptionLanguageResponse {\n requestId: string;\n statusCode: number;\n errorCode: number;\n message: string;\n}\n\ninterface IVoiceaChannel {\n setSpokenLanguage: (languageCode: string) => Promise<void>;\n requestLanguage: (languageCode: string) => void;\n turnOnCaptions: () => undefined | Promise<void>;\n toggleTranscribing: (activate: boolean) => undefined | Promise<void>;\n deregisterEvents: () => void;\n}\n\nexport type {\n AnnouncementPayload,\n CaptionLanguageResponse,\n TranscriptionResponse,\n Transcription,\n Highlight,\n IVoiceaChannel,\n};\n"],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/internal-plugin-voicea",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.200",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
"node": ">=16"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@webex/internal-plugin-llm": "3.0.0-beta.
|
|
18
|
-
"@webex/internal-plugin-mercury": "3.0.0-beta.
|
|
19
|
-
"@webex/internal-plugin-voicea": "3.0.0-beta.
|
|
20
|
-
"@webex/plugin-meetings": "3.0.0-beta.
|
|
21
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
17
|
+
"@webex/internal-plugin-llm": "3.0.0-beta.200",
|
|
18
|
+
"@webex/internal-plugin-mercury": "3.0.0-beta.200",
|
|
19
|
+
"@webex/internal-plugin-voicea": "3.0.0-beta.200",
|
|
20
|
+
"@webex/plugin-meetings": "3.0.0-beta.200",
|
|
21
|
+
"@webex/webex-core": "3.0.0-beta.200",
|
|
22
22
|
"uuid": "^3.3.2"
|
|
23
23
|
},
|
|
24
24
|
"browserify": {
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
]
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
32
|
-
"@webex/test-helper-mock-web-socket": "3.0.0-beta.
|
|
33
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
31
|
+
"@webex/test-helper-chai": "3.0.0-beta.200",
|
|
32
|
+
"@webex/test-helper-mock-web-socket": "3.0.0-beta.200",
|
|
33
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.200",
|
|
34
34
|
"sinon": "^9.2.4"
|
|
35
35
|
}
|
|
36
36
|
}
|