@webex/internal-plugin-voicea 2.24.0 → 2.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/voicea.js +18 -18
- package/dist/voicea.js.map +1 -1
- package/package.json +5 -3
- package/src/index.ts +6 -0
- package/src/voicea.ts +5 -5
- package/test/unit/spec/voicea.js +3 -2
- package/src/index.js +0 -6
package/dist/index.js
CHANGED
|
@@ -23,7 +23,7 @@ _Object$defineProperty(exports, "default", {
|
|
|
23
23
|
|
|
24
24
|
var WebexCore = _interopRequireWildcard(require("@webex/webex-core"));
|
|
25
25
|
|
|
26
|
-
var _voicea = _interopRequireDefault(require("
|
|
26
|
+
var _voicea = _interopRequireDefault(require("./voicea"));
|
|
27
27
|
|
|
28
28
|
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
29
29
|
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["WebexCore","registerInternalPlugin","VoiceaChannel"],"sources":["index.
|
|
1
|
+
{"version":3,"names":["WebexCore","registerInternalPlugin","VoiceaChannel"],"sources":["index.ts"],"sourcesContent":["import * as WebexCore from '@webex/webex-core';\nimport VoiceaChannel from './voicea';\n\nWebexCore.registerInternalPlugin('voicea', VoiceaChannel, {});\n\nexport {default} from './voicea';"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;AAEAA,SAAS,CAACC,sBAAV,CAAiC,QAAjC,EAA2CC,eAA3C,EAA0D,EAA1D"}
|
package/dist/voicea.js
CHANGED
|
@@ -34,9 +34,9 @@ var _uuid = _interopRequireDefault(require("uuid"));
|
|
|
34
34
|
|
|
35
35
|
var _internalPluginLlm = _interopRequireDefault(require("@webex/internal-plugin-llm"));
|
|
36
36
|
|
|
37
|
-
var
|
|
37
|
+
var _pluginMeetings = require("@webex/plugin-meetings");
|
|
38
38
|
|
|
39
|
-
var
|
|
39
|
+
var _webexCore = require("@webex/webex-core");
|
|
40
40
|
|
|
41
41
|
var _constants = require("./constants");
|
|
42
42
|
|
|
@@ -76,7 +76,7 @@ var VoiceaChannel = /*#__PURE__*/function (_LLMChannel) {
|
|
|
76
76
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "processTranscription", function (voiceaPayload) {
|
|
77
77
|
switch (voiceaPayload.type) {
|
|
78
78
|
case _constants.TRANSCRIPTION_TYPE.TRANSCRIPT_INTERIM_RESULTS:
|
|
79
|
-
|
|
79
|
+
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
80
80
|
file: 'voicea',
|
|
81
81
|
function: 'processTranscription'
|
|
82
82
|
}, _constants.EVENT_TRIGGERS.NEW_CAPTION, {
|
|
@@ -92,7 +92,7 @@ var VoiceaChannel = /*#__PURE__*/function (_LLMChannel) {
|
|
|
92
92
|
break;
|
|
93
93
|
|
|
94
94
|
case _constants.TRANSCRIPTION_TYPE.TRANSCRIPT_FINAL_RESULT:
|
|
95
|
-
|
|
95
|
+
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
96
96
|
file: 'voicea',
|
|
97
97
|
function: 'processTranscription'
|
|
98
98
|
}, _constants.EVENT_TRIGGERS.NEW_CAPTION, {
|
|
@@ -109,7 +109,7 @@ var VoiceaChannel = /*#__PURE__*/function (_LLMChannel) {
|
|
|
109
109
|
break;
|
|
110
110
|
|
|
111
111
|
case _constants.TRANSCRIPTION_TYPE.HIGHLIGHT_CREATED:
|
|
112
|
-
|
|
112
|
+
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
113
113
|
file: 'voicea',
|
|
114
114
|
function: 'processTranscription'
|
|
115
115
|
}, _constants.EVENT_TRIGGERS.HIGHLIGHT_CREATED, {
|
|
@@ -124,7 +124,7 @@ var VoiceaChannel = /*#__PURE__*/function (_LLMChannel) {
|
|
|
124
124
|
break;
|
|
125
125
|
|
|
126
126
|
case _constants.TRANSCRIPTION_TYPE.EVA_THANKS:
|
|
127
|
-
|
|
127
|
+
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
128
128
|
file: 'voicea',
|
|
129
129
|
function: 'processTranscription'
|
|
130
130
|
}, _constants.EVENT_TRIGGERS.EVA_COMMAND, {
|
|
@@ -136,7 +136,7 @@ var VoiceaChannel = /*#__PURE__*/function (_LLMChannel) {
|
|
|
136
136
|
|
|
137
137
|
case _constants.TRANSCRIPTION_TYPE.EVA_WAKE:
|
|
138
138
|
case _constants.TRANSCRIPTION_TYPE.EVA_CANCEL:
|
|
139
|
-
|
|
139
|
+
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
140
140
|
file: 'voicea',
|
|
141
141
|
function: 'processTranscription'
|
|
142
142
|
}, _constants.EVENT_TRIGGERS.EVA_COMMAND, {
|
|
@@ -151,14 +151,14 @@ var VoiceaChannel = /*#__PURE__*/function (_LLMChannel) {
|
|
|
151
151
|
});
|
|
152
152
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "processCaptionLanguageResponse", function (voiceaPayload) {
|
|
153
153
|
if (voiceaPayload.statusCode === 200) {
|
|
154
|
-
|
|
154
|
+
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
155
155
|
file: 'voicea',
|
|
156
156
|
function: 'processCaptionLanguageResponse'
|
|
157
157
|
}, _constants.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, {
|
|
158
158
|
statusCode: 200
|
|
159
159
|
});
|
|
160
160
|
} else {
|
|
161
|
-
|
|
161
|
+
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
162
162
|
file: 'voicea',
|
|
163
163
|
function: 'processCaptionLanguageResponse'
|
|
164
164
|
}, _constants.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, {
|
|
@@ -176,7 +176,7 @@ var VoiceaChannel = /*#__PURE__*/function (_LLMChannel) {
|
|
|
176
176
|
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 : []
|
|
177
177
|
};
|
|
178
178
|
|
|
179
|
-
|
|
179
|
+
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
180
180
|
file: 'voicea',
|
|
181
181
|
function: 'processAnnouncementMessage'
|
|
182
182
|
}, _constants.EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT, voiceaLanguageOptions);
|
|
@@ -198,7 +198,7 @@ var VoiceaChannel = /*#__PURE__*/function (_LLMChannel) {
|
|
|
198
198
|
eventType: 'relay.event',
|
|
199
199
|
relayType: _constants.VOICEA_RELAY_TYPES.CLIENT_ANNOUNCEMENT
|
|
200
200
|
},
|
|
201
|
-
trackingId: "".concat(
|
|
201
|
+
trackingId: "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString())
|
|
202
202
|
});
|
|
203
203
|
|
|
204
204
|
_this.seqNum += 1;
|
|
@@ -206,12 +206,12 @@ var VoiceaChannel = /*#__PURE__*/function (_LLMChannel) {
|
|
|
206
206
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setSpokenLanguage", function (languageCode) {
|
|
207
207
|
return _this.request({
|
|
208
208
|
method: 'PUT',
|
|
209
|
-
url: "".concat(_this.
|
|
209
|
+
url: "".concat(_this.getLocusUrl(), "/controls/"),
|
|
210
210
|
body: {
|
|
211
211
|
languageCode: languageCode
|
|
212
212
|
}
|
|
213
213
|
}).then(function () {
|
|
214
|
-
|
|
214
|
+
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
215
215
|
file: 'voicea',
|
|
216
216
|
function: 'setSpokenLanguage'
|
|
217
217
|
}, _constants.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, {
|
|
@@ -237,7 +237,7 @@ var VoiceaChannel = /*#__PURE__*/function (_LLMChannel) {
|
|
|
237
237
|
eventType: 'relay.event',
|
|
238
238
|
relayType: _constants.VOICEA_RELAY_TYPES.TRANSLATION_REQUEST
|
|
239
239
|
},
|
|
240
|
-
trackingId: "".concat(
|
|
240
|
+
trackingId: "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString())
|
|
241
241
|
});
|
|
242
242
|
|
|
243
243
|
_this.seqNum += 1;
|
|
@@ -257,14 +257,14 @@ var VoiceaChannel = /*#__PURE__*/function (_LLMChannel) {
|
|
|
257
257
|
case 2:
|
|
258
258
|
return _context.abrupt("return", _this.request({
|
|
259
259
|
method: 'PUT',
|
|
260
|
-
url: "".concat(_this.
|
|
260
|
+
url: "".concat(_this.getLocusUrl(), "/controls/"),
|
|
261
261
|
body: {
|
|
262
262
|
transcribe: {
|
|
263
263
|
caption: true
|
|
264
264
|
}
|
|
265
265
|
}
|
|
266
266
|
}).then(function () {
|
|
267
|
-
|
|
267
|
+
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
268
268
|
file: 'voicea',
|
|
269
269
|
function: 'turnOnCaptions'
|
|
270
270
|
}, _constants.EVENT_TRIGGERS.CAPTIONS_TURNED_ON);
|
|
@@ -297,14 +297,14 @@ var VoiceaChannel = /*#__PURE__*/function (_LLMChannel) {
|
|
|
297
297
|
case 2:
|
|
298
298
|
return _context2.abrupt("return", _this.request({
|
|
299
299
|
method: 'PUT',
|
|
300
|
-
url: "".concat(_this.
|
|
300
|
+
url: "".concat(_this.getLocusUrl(), "/controls/"),
|
|
301
301
|
body: {
|
|
302
302
|
transcribe: {
|
|
303
303
|
transcribing: activate
|
|
304
304
|
}
|
|
305
305
|
}
|
|
306
306
|
}).then(function () {
|
|
307
|
-
|
|
307
|
+
_pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
308
308
|
file: 'voicea',
|
|
309
309
|
function: 'toggleTranscribing'
|
|
310
310
|
}, activate ? _constants.EVENT_TRIGGERS.TRANSCRIBING_ON : _constants.EVENT_TRIGGERS.TRANSCRIBING_OFF);
|
package/dist/voicea.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["VoiceaChannel","args","voiceaPayload","type","TRANSCRIPTION_TYPE","TRANSCRIPT_INTERIM_RESULTS","Trigger","trigger","file","function","EVENT_TRIGGERS","NEW_CAPTION","isFinal","transcriptId","transcript_id","translations","transcript","csis","text","data","TRANSCRIPT_FINAL_RESULT","timestamp","millisToMinutesAndSeconds","end_millis","start_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","hasVoiceaJoined","socket","send","id","seqNum","recipients","route","getBinding","headers","clientPayload","version","eventType","relayType","VOICEA_RELAY_TYPES","CLIENT_ANNOUNCEMENT","trackingId","config","trackingIdPrefix","uuid","v4","toString","languageCode","request","method","url","locusUrl","body","then","SPOKEN_LANGUAGE_UPDATE","to","vmcDeviceId","translationLanguage","TRANSLATION_REQUEST","areCaptionsEnabled","undefined","transcribe","caption","CAPTIONS_TURNED_ON","sendAnnouncement","activate","isTranscribingEnabled","transcribing","TRANSCRIBING_ON","TRANSCRIBING_OFF","turnOnCaptions","on","e","sequenceNumber","ANNOUNCEMENT","from","processAnnouncementMessage","TRANSLATION_RESPONSE","processCaptionLanguageResponse","TRANSCRIPTION","processTranscription","LLMChannel"],"sources":["voicea.ts"],"sourcesContent":["import uuid from 'uuid';\nimport LLMChannel from '@webex/internal-plugin-llm';\nimport config from '@webex/webex-core/src/config';\nimport Trigger from '@webex/plugin-meetings/src/common/events/trigger-proxy';\n\nimport {EVENT_TRIGGERS, VOICEA_RELAY_TYPES, TRANSCRIPTION_TYPE} from './constants';\n// eslint-disable-next-line no-unused-vars\nimport {AnnouncementPayload, CaptionLanguageResponse, TranscriptionResponse, IVoiceaChannel} from './voicea.types';\nimport {millisToMinutesAndSeconds} from './utils';\n/**\n * VoiceaChannel to hold single instance of LLM\n */\nexport class VoiceaChannel extends LLMChannel implements IVoiceaChannel {\n private seqNum: number;\n\n private hasVoiceaJoined: boolean;\n\n private areCaptionsEnabled: boolean;\n\n private isTranscribingEnabled:boolean;\n\n private vmcDeviceId: string;\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 this.on('event:relay.event', (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.voiceaPayload);\n break;\n case VOICEA_RELAY_TYPES.TRANSLATION_RESPONSE:\n this.processCaptionLanguageResponse(e.voiceaPayload);\n break;\n case VOICEA_RELAY_TYPES.TRANSCRIPTION:\n this.processTranscription(e.voiceaPayload);\n break;\n default:\n break;\n }\n });\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(this, {\n file: 'voicea',\n function: 'processTranscription'\n },\n EVENT_TRIGGERS.NEW_CAPTION, {\n isFinal: false,\n transcriptId: voiceaPayload.transcript_id,\n translations: voiceaPayload.translations,\n transcript: {\n csis: voiceaPayload.csis,\n text: voiceaPayload.data\n },\n });\n break;\n\n case TRANSCRIPTION_TYPE.TRANSCRIPT_FINAL_RESULT:\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'processTranscription'\n },\n EVENT_TRIGGERS.NEW_CAPTION, {\n isFinal: true,\n transcriptId: voiceaPayload.transcript_id,\n translations: voiceaPayload.translations,\n transcript: {\n csis: voiceaPayload.csis,\n text: voiceaPayload.data\n },\n timestamp: millisToMinutesAndSeconds(voiceaPayload.transcript.end_millis - voiceaPayload.transcript.start_millis)\n });\n break;\n\n case TRANSCRIPTION_TYPE.HIGHLIGHT_CREATED:\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'processTranscription'\n },\n EVENT_TRIGGERS.HIGHLIGHT_CREATED, {\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 - voiceaPayload.highlight.start_millis)\n });\n break;\n\n case TRANSCRIPTION_TYPE.EVA_THANKS:\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'processTranscription'\n },\n EVENT_TRIGGERS.EVA_COMMAND, {\n isListening: false, text: voiceaPayload.command_response\n });\n break;\n\n case TRANSCRIPTION_TYPE.EVA_WAKE:\n case TRANSCRIPTION_TYPE.EVA_CANCEL:\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'processTranscription'\n },\n EVENT_TRIGGERS.EVA_COMMAND, {\n isListening: voiceaPayload.type === TRANSCRIPTION_TYPE.EVA_WAKE\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(this, {\n file: 'voicea',\n function: 'processCaptionLanguageResponse'\n },\n EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, {statusCode: 200});\n }\n else {\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'processCaptionLanguageResponse'\n },\n EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, {statusCode: voiceaPayload.errorCode, errorMessage: voiceaPayload.message});\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 /**\n * Sends Announcement to add voicea to the meeting\n * @returns {void}\n */\n private sendAnnouncement = ():void => {\n if (this.hasVoiceaJoined) return;\n this.socket.send({\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n route: this.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> => this.request({\n method: 'PUT',\n url: `${this.locusUrl}/controls/`,\n body: {\n languageCode\n }\n }).then(() => {\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'setSpokenLanguage'\n },\n EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE,\n {languageCode});\n });\n\n /**\n * Request Language translation\n * @param {string} languageCode\n * @returns {void}\n */\n public requestLanguage = (languageCode: string): void => {\n this.socket.send({\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n route: this.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.locusUrl}/controls/`,\n body: {\n transcribe: {caption: true}\n }\n }).then(() => {\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'turnOnCaptions'\n },\n EVENT_TRIGGERS.CAPTIONS_TURNED_ON);\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.locusUrl}/controls/`,\n body: {\n transcribe: {transcribing: activate}\n }\n }).then(() => {\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'toggleTranscribing'\n },\n activate ? EVENT_TRIGGERS.TRANSCRIBING_ON : EVENT_TRIGGERS.TRANSCRIBING_OFF);\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","voiceaPayload","type","TRANSCRIPTION_TYPE","TRANSCRIPT_INTERIM_RESULTS","Trigger","trigger","file","function","EVENT_TRIGGERS","NEW_CAPTION","isFinal","transcriptId","transcript_id","translations","transcript","csis","text","data","TRANSCRIPT_FINAL_RESULT","timestamp","millisToMinutesAndSeconds","end_millis","start_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","hasVoiceaJoined","socket","send","id","seqNum","recipients","route","getBinding","headers","clientPayload","version","eventType","relayType","VOICEA_RELAY_TYPES","CLIENT_ANNOUNCEMENT","trackingId","config","trackingIdPrefix","uuid","v4","toString","languageCode","request","method","url","getLocusUrl","body","then","SPOKEN_LANGUAGE_UPDATE","to","vmcDeviceId","translationLanguage","TRANSLATION_REQUEST","areCaptionsEnabled","undefined","transcribe","caption","CAPTIONS_TURNED_ON","sendAnnouncement","activate","isTranscribingEnabled","transcribing","TRANSCRIBING_ON","TRANSCRIBING_OFF","turnOnCaptions","on","e","sequenceNumber","ANNOUNCEMENT","from","processAnnouncementMessage","TRANSLATION_RESPONSE","processCaptionLanguageResponse","TRANSCRIPTION","processTranscription","LLMChannel"],"sources":["voicea.ts"],"sourcesContent":["import uuid from 'uuid';\nimport LLMChannel from '@webex/internal-plugin-llm';\nimport {TriggerProxy as Trigger} from '@webex/plugin-meetings';\nimport {config} from '@webex/webex-core';\n\nimport {EVENT_TRIGGERS, VOICEA_RELAY_TYPES, TRANSCRIPTION_TYPE} from './constants';\n// eslint-disable-next-line no-unused-vars\nimport {AnnouncementPayload, CaptionLanguageResponse, TranscriptionResponse, IVoiceaChannel} from './voicea.types';\nimport {millisToMinutesAndSeconds} from './utils';\n/**\n * VoiceaChannel to hold single instance of LLM\n */\nexport class VoiceaChannel extends LLMChannel implements IVoiceaChannel {\n private seqNum: number;\n\n private hasVoiceaJoined: boolean;\n\n private areCaptionsEnabled: boolean;\n\n private isTranscribingEnabled:boolean;\n\n private vmcDeviceId: string;\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 this.on('event:relay.event', (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.voiceaPayload);\n break;\n case VOICEA_RELAY_TYPES.TRANSLATION_RESPONSE:\n this.processCaptionLanguageResponse(e.voiceaPayload);\n break;\n case VOICEA_RELAY_TYPES.TRANSCRIPTION:\n this.processTranscription(e.voiceaPayload);\n break;\n default:\n break;\n }\n });\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(this, {\n file: 'voicea',\n function: 'processTranscription'\n },\n EVENT_TRIGGERS.NEW_CAPTION, {\n isFinal: false,\n transcriptId: voiceaPayload.transcript_id,\n translations: voiceaPayload.translations,\n transcript: {\n csis: voiceaPayload.csis,\n text: voiceaPayload.data\n },\n });\n break;\n\n case TRANSCRIPTION_TYPE.TRANSCRIPT_FINAL_RESULT:\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'processTranscription'\n },\n EVENT_TRIGGERS.NEW_CAPTION, {\n isFinal: true,\n transcriptId: voiceaPayload.transcript_id,\n translations: voiceaPayload.translations,\n transcript: {\n csis: voiceaPayload.csis,\n text: voiceaPayload.data\n },\n timestamp: millisToMinutesAndSeconds(voiceaPayload.transcript.end_millis - voiceaPayload.transcript.start_millis)\n });\n break;\n\n case TRANSCRIPTION_TYPE.HIGHLIGHT_CREATED:\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'processTranscription'\n },\n EVENT_TRIGGERS.HIGHLIGHT_CREATED, {\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 - voiceaPayload.highlight.start_millis)\n });\n break;\n\n case TRANSCRIPTION_TYPE.EVA_THANKS:\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'processTranscription'\n },\n EVENT_TRIGGERS.EVA_COMMAND, {\n isListening: false, text: voiceaPayload.command_response\n });\n break;\n\n case TRANSCRIPTION_TYPE.EVA_WAKE:\n case TRANSCRIPTION_TYPE.EVA_CANCEL:\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'processTranscription'\n },\n EVENT_TRIGGERS.EVA_COMMAND, {\n isListening: voiceaPayload.type === TRANSCRIPTION_TYPE.EVA_WAKE\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(this, {\n file: 'voicea',\n function: 'processCaptionLanguageResponse'\n },\n EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, {statusCode: 200});\n }\n else {\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'processCaptionLanguageResponse'\n },\n EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, {statusCode: voiceaPayload.errorCode, errorMessage: voiceaPayload.message});\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 /**\n * Sends Announcement to add voicea to the meeting\n * @returns {void}\n */\n private sendAnnouncement = ():void => {\n if (this.hasVoiceaJoined) return;\n this.socket.send({\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n route: this.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> => this.request({\n method: 'PUT',\n url: `${this.getLocusUrl()}/controls/`,\n body: {\n languageCode\n }\n }).then(() => {\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'setSpokenLanguage'\n },\n EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE,\n {languageCode});\n });\n\n /**\n * Request Language translation\n * @param {string} languageCode\n * @returns {void}\n */\n public requestLanguage = (languageCode: string): void => {\n this.socket.send({\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n route: this.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.getLocusUrl()}/controls/`,\n body: {\n transcribe: {caption: true}\n }\n }).then(() => {\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'turnOnCaptions'\n },\n EVENT_TRIGGERS.CAPTIONS_TURNED_ON);\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.getLocusUrl()}/controls/`,\n body: {\n transcribe: {transcribing: activate}\n }\n }).then(() => {\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'toggleTranscribing'\n },\n activate ? EVENT_TRIGGERS.TRANSCRIBING_ON : EVENT_TRIGGERS.TRANSCRIBING_OFF);\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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/internal-plugin-voicea",
|
|
3
|
-
"version": "2.24.
|
|
3
|
+
"version": "2.24.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,8 +11,10 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@babel/runtime-corejs2": "^7.14.8",
|
|
14
|
-
"@webex/webex-core": "2.24.
|
|
15
|
-
"
|
|
14
|
+
"@webex/webex-core": "2.24.1",
|
|
15
|
+
"uuid": "^3.3.2",
|
|
16
|
+
"@webex/internal-plugin-llm": "2.24.1",
|
|
17
|
+
"@webex/plugin-meetings": "2.24.1",
|
|
16
18
|
"envify": "^4.1.0"
|
|
17
19
|
},
|
|
18
20
|
"browserify": {
|
package/src/index.ts
ADDED
package/src/voicea.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import uuid from 'uuid';
|
|
2
2
|
import LLMChannel from '@webex/internal-plugin-llm';
|
|
3
|
-
import
|
|
4
|
-
import
|
|
3
|
+
import {TriggerProxy as Trigger} from '@webex/plugin-meetings';
|
|
4
|
+
import {config} from '@webex/webex-core';
|
|
5
5
|
|
|
6
6
|
import {EVENT_TRIGGERS, VOICEA_RELAY_TYPES, TRANSCRIPTION_TYPE} from './constants';
|
|
7
7
|
// eslint-disable-next-line no-unused-vars
|
|
@@ -212,7 +212,7 @@ export class VoiceaChannel extends LLMChannel implements IVoiceaChannel {
|
|
|
212
212
|
*/
|
|
213
213
|
public setSpokenLanguage = (languageCode: string):Promise<void> => this.request({
|
|
214
214
|
method: 'PUT',
|
|
215
|
-
url: `${this.
|
|
215
|
+
url: `${this.getLocusUrl()}/controls/`,
|
|
216
216
|
body: {
|
|
217
217
|
languageCode
|
|
218
218
|
}
|
|
@@ -262,7 +262,7 @@ export class VoiceaChannel extends LLMChannel implements IVoiceaChannel {
|
|
|
262
262
|
|
|
263
263
|
return this.request({
|
|
264
264
|
method: 'PUT',
|
|
265
|
-
url: `${this.
|
|
265
|
+
url: `${this.getLocusUrl()}/controls/`,
|
|
266
266
|
body: {
|
|
267
267
|
transcribe: {caption: true}
|
|
268
268
|
}
|
|
@@ -287,7 +287,7 @@ export class VoiceaChannel extends LLMChannel implements IVoiceaChannel {
|
|
|
287
287
|
|
|
288
288
|
return this.request({
|
|
289
289
|
method: 'PUT',
|
|
290
|
-
url: `${this.
|
|
290
|
+
url: `${this.getLocusUrl()}/controls/`,
|
|
291
291
|
body: {
|
|
292
292
|
transcribe: {transcribing: activate}
|
|
293
293
|
}
|
package/test/unit/spec/voicea.js
CHANGED
|
@@ -4,8 +4,9 @@ import {assert} from '@webex/test-helper-chai';
|
|
|
4
4
|
import sinon from 'sinon';
|
|
5
5
|
import Mercury from '@webex/internal-plugin-mercury';
|
|
6
6
|
import LLMChannel from '@webex/internal-plugin-llm';
|
|
7
|
-
|
|
8
|
-
import VoiceaService from '
|
|
7
|
+
|
|
8
|
+
import VoiceaService from '../../../src/index';
|
|
9
|
+
import {EVENT_TRIGGERS} from '../../../src/constants';
|
|
9
10
|
|
|
10
11
|
describe('plugin-voicea', () => {
|
|
11
12
|
const locusUrl = 'locusUrl';
|
package/src/index.js
DELETED