@webex/internal-plugin-voicea 3.10.0-next.5 → 3.10.0-next.7
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/constants.js +2 -1
- package/dist/constants.js.map +1 -1
- package/dist/types/constants.d.ts +1 -0
- package/dist/types/voicea.d.ts +1 -1
- package/dist/voicea.js +14 -9
- package/dist/voicea.js.map +1 -1
- package/package.json +4 -4
- package/src/constants.ts +2 -0
- package/src/voicea.ts +12 -7
- package/test/unit/spec/voicea.js +31 -43
package/dist/constants.js
CHANGED
|
@@ -15,7 +15,8 @@ var EVENT_TRIGGERS = exports.EVENT_TRIGGERS = {
|
|
|
15
15
|
NEW_CAPTION: 'voicea:newCaption',
|
|
16
16
|
EVA_COMMAND: 'voicea:wxa',
|
|
17
17
|
HIGHLIGHT_CREATED: 'voicea:highlightCreated',
|
|
18
|
-
NEW_MANUAL_CAPTION: 'aibridge:newManualCaption'
|
|
18
|
+
NEW_MANUAL_CAPTION: 'aibridge:newManualCaption',
|
|
19
|
+
LANGUAGE_DETECTED: 'voicea:languageDetected'
|
|
19
20
|
};
|
|
20
21
|
var AIBRIDGE_RELAY_TYPES = exports.AIBRIDGE_RELAY_TYPES = {
|
|
21
22
|
VOICEA: {
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EVENT_TRIGGERS","exports","VOICEA_ANNOUNCEMENT","CAPTION_LANGUAGE_UPDATE","SPOKEN_LANGUAGE_UPDATE","CAPTIONS_TURNED_ON","TRANSCRIBING_ON","TRANSCRIBING_OFF","NEW_CAPTION","EVA_COMMAND","HIGHLIGHT_CREATED","NEW_MANUAL_CAPTION","AIBRIDGE_RELAY_TYPES","VOICEA","ANNOUNCEMENT","CLIENT_ANNOUNCEMENT","TRANSLATION_REQUEST","TRANSLATION_RESPONSE","TRANSCRIPTION","MANUAL","CAPTIONER","TRANSCRIPTION_TYPE","UNKNOWN","EVA_WAKE","EVA_THANKS","EVA_CANCEL","TRANSCRIPT_INTERIM_RESULTS","TRANSCRIPT_FINAL_RESULT","MANUAL_CAPTION_INTERIM_RESULTS","MANUAL_CAPTION_INTERIM_RESULT","MANUAL_CAPTION_FINAL_RESULT","
|
|
1
|
+
{"version":3,"names":["EVENT_TRIGGERS","exports","VOICEA_ANNOUNCEMENT","CAPTION_LANGUAGE_UPDATE","SPOKEN_LANGUAGE_UPDATE","CAPTIONS_TURNED_ON","TRANSCRIBING_ON","TRANSCRIBING_OFF","NEW_CAPTION","EVA_COMMAND","HIGHLIGHT_CREATED","NEW_MANUAL_CAPTION","LANGUAGE_DETECTED","AIBRIDGE_RELAY_TYPES","VOICEA","ANNOUNCEMENT","CLIENT_ANNOUNCEMENT","TRANSLATION_REQUEST","TRANSLATION_RESPONSE","TRANSCRIPTION","MANUAL","CAPTIONER","TRANSCRIPTION_TYPE","UNKNOWN","EVA_WAKE","EVA_THANKS","EVA_CANCEL","TRANSCRIPT_INTERIM_RESULTS","TRANSCRIPT_FINAL_RESULT","MANUAL_CAPTION_INTERIM_RESULTS","MANUAL_CAPTION_INTERIM_RESULT","MANUAL_CAPTION_FINAL_RESULT","DEFAULT_SPOKEN_LANGUAGE","ANNOUNCE_STATUS","IDLE","JOINED","JOINING","TURN_ON_CAPTION_STATUS","ENABLED","SENDING","TOGGLE_MANUAL_CAPTION_STATUS","LANGUAGE_ASSIGNMENT","AUTO","DEFAULT"],"sources":["constants.ts"],"sourcesContent":["export const EVENT_TRIGGERS = {\n VOICEA_ANNOUNCEMENT: 'voicea:announcement',\n CAPTION_LANGUAGE_UPDATE: 'voicea:captionLanguageUpdate',\n SPOKEN_LANGUAGE_UPDATE: 'voicea:spokenLanguageUpdate',\n CAPTIONS_TURNED_ON: 'voicea:captionOn',\n TRANSCRIBING_ON: 'voicea:transcribingOn',\n TRANSCRIBING_OFF: 'voicea:transcribingOff',\n\n NEW_CAPTION: 'voicea:newCaption',\n EVA_COMMAND: 'voicea:wxa',\n HIGHLIGHT_CREATED: 'voicea:highlightCreated',\n NEW_MANUAL_CAPTION: 'aibridge:newManualCaption',\n\n LANGUAGE_DETECTED: 'voicea:languageDetected',\n};\n\nexport const AIBRIDGE_RELAY_TYPES = {\n VOICEA: {\n ANNOUNCEMENT: 'voicea.annc',\n CLIENT_ANNOUNCEMENT: 'client.annc',\n TRANSLATION_REQUEST: 'voicea.transl.req',\n TRANSLATION_RESPONSE: 'voicea.transl.rsp',\n TRANSCRIPTION: 'voicea.transcription',\n },\n MANUAL: {\n TRANSCRIPTION: 'aibridge.manual_transcription',\n CAPTIONER: 'client.manual_transcription',\n },\n};\n\nexport const TRANSCRIPTION_TYPE = {\n UNKNOWN: 'unknown',\n EVA_WAKE: 'eva_wake',\n EVA_THANKS: 'eva_thanks',\n EVA_CANCEL: 'eva_cancel',\n HIGHLIGHT_CREATED: 'highlight_created',\n TRANSCRIPT_INTERIM_RESULTS: 'transcript_interim_results',\n TRANSCRIPT_FINAL_RESULT: 'transcript_final_result',\n MANUAL_CAPTION_INTERIM_RESULTS: 'manual_caption_interim_results',\n MANUAL_CAPTION_INTERIM_RESULT: 'manual_caption_interim_result',\n MANUAL_CAPTION_FINAL_RESULT: 'manual_caption_final_result',\n LANGUAGE_DETECTED: 'language_detected',\n};\n\nexport const VOICEA = 'voicea';\nexport const DEFAULT_SPOKEN_LANGUAGE = 'en';\n\nexport const ANNOUNCE_STATUS = {\n IDLE: 'idle',\n JOINED: 'joined',\n JOINING: 'joining',\n};\n\nexport const TURN_ON_CAPTION_STATUS = {\n IDLE: 'idle',\n ENABLED: 'enabled',\n SENDING: 'sending',\n};\n\nexport const TOGGLE_MANUAL_CAPTION_STATUS = {\n IDLE: 'idle',\n SENDING: 'sending',\n};\n\nexport const LANGUAGE_ASSIGNMENT = {\n AUTO: 'AUTO',\n MANUAL: 'MANUAL',\n DEFAULT: 'DEFAULT',\n};\n"],"mappings":";;;;;;;AAAO,IAAMA,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAG;EAC5BE,mBAAmB,EAAE,qBAAqB;EAC1CC,uBAAuB,EAAE,8BAA8B;EACvDC,sBAAsB,EAAE,6BAA6B;EACrDC,kBAAkB,EAAE,kBAAkB;EACtCC,eAAe,EAAE,uBAAuB;EACxCC,gBAAgB,EAAE,wBAAwB;EAE1CC,WAAW,EAAE,mBAAmB;EAChCC,WAAW,EAAE,YAAY;EACzBC,iBAAiB,EAAE,yBAAyB;EAC5CC,kBAAkB,EAAE,2BAA2B;EAE/CC,iBAAiB,EAAE;AACrB,CAAC;AAEM,IAAMC,oBAAoB,GAAAZ,OAAA,CAAAY,oBAAA,GAAG;EAClCC,MAAM,EAAE;IACNC,YAAY,EAAE,aAAa;IAC3BC,mBAAmB,EAAE,aAAa;IAClCC,mBAAmB,EAAE,mBAAmB;IACxCC,oBAAoB,EAAE,mBAAmB;IACzCC,aAAa,EAAE;EACjB,CAAC;EACDC,MAAM,EAAE;IACND,aAAa,EAAE,+BAA+B;IAC9CE,SAAS,EAAE;EACb;AACF,CAAC;AAEM,IAAMC,kBAAkB,GAAArB,OAAA,CAAAqB,kBAAA,GAAG;EAChCC,OAAO,EAAE,SAAS;EAClBC,QAAQ,EAAE,UAAU;EACpBC,UAAU,EAAE,YAAY;EACxBC,UAAU,EAAE,YAAY;EACxBhB,iBAAiB,EAAE,mBAAmB;EACtCiB,0BAA0B,EAAE,4BAA4B;EACxDC,uBAAuB,EAAE,yBAAyB;EAClDC,8BAA8B,EAAE,gCAAgC;EAChEC,6BAA6B,EAAE,+BAA+B;EAC9DC,2BAA2B,EAAE,6BAA6B;EAC1DnB,iBAAiB,EAAE;AACrB,CAAC;AAEM,IAAME,MAAM,GAAAb,OAAA,CAAAa,MAAA,GAAG,QAAQ;AACvB,IAAMkB,uBAAuB,GAAA/B,OAAA,CAAA+B,uBAAA,GAAG,IAAI;AAEpC,IAAMC,eAAe,GAAAhC,OAAA,CAAAgC,eAAA,GAAG;EAC7BC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE,QAAQ;EAChBC,OAAO,EAAE;AACX,CAAC;AAEM,IAAMC,sBAAsB,GAAApC,OAAA,CAAAoC,sBAAA,GAAG;EACpCH,IAAI,EAAE,MAAM;EACZI,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE;AACX,CAAC;AAEM,IAAMC,4BAA4B,GAAAvC,OAAA,CAAAuC,4BAAA,GAAG;EAC1CN,IAAI,EAAE,MAAM;EACZK,OAAO,EAAE;AACX,CAAC;AAEM,IAAME,mBAAmB,GAAAxC,OAAA,CAAAwC,mBAAA,GAAG;EACjCC,IAAI,EAAE,MAAM;EACZtB,MAAM,EAAE,QAAQ;EAChBuB,OAAO,EAAE;AACX,CAAC","ignoreList":[]}
|
package/dist/types/voicea.d.ts
CHANGED
|
@@ -71,7 +71,7 @@ export declare class VoiceaChannel extends WebexPlugin implements IVoiceaChannel
|
|
|
71
71
|
* @param {"DEFAULT" | "AUTO" | "MANUAL"} languageAssignment
|
|
72
72
|
* @returns {Promise}
|
|
73
73
|
*/
|
|
74
|
-
setSpokenLanguage: (languageCode: string, languageAssignment?:
|
|
74
|
+
setSpokenLanguage: (languageCode: string, languageAssignment?: 'DEFAULT' | 'AUTO' | 'MANUAL') => Promise<void>;
|
|
75
75
|
/**
|
|
76
76
|
* Request Language translation
|
|
77
77
|
* @param {string} languageCode
|
package/dist/voicea.js
CHANGED
|
@@ -154,11 +154,16 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
154
154
|
});
|
|
155
155
|
break;
|
|
156
156
|
case _constants.TRANSCRIPTION_TYPE.LANGUAGE_DETECTED:
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
157
|
+
{
|
|
158
|
+
var isInSpokenLanguages = _this.spokenLanguages.includes(voiceaPayload.language);
|
|
159
|
+
if (isInSpokenLanguages) {
|
|
160
|
+
// @ts-ignore
|
|
161
|
+
_this.trigger(_constants.EVENT_TRIGGERS.LANGUAGE_DETECTED, {
|
|
162
|
+
languageCode: voiceaPayload.language
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
break;
|
|
160
166
|
}
|
|
161
|
-
break;
|
|
162
167
|
default:
|
|
163
168
|
break;
|
|
164
169
|
}
|
|
@@ -232,8 +237,7 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
232
237
|
* @param {"DEFAULT" | "AUTO" | "MANUAL"} languageAssignment
|
|
233
238
|
* @returns {Promise}
|
|
234
239
|
*/
|
|
235
|
-
(0, _defineProperty2.default)(_this, "setSpokenLanguage", function (languageCode) {
|
|
236
|
-
var languageAssignment = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.LANGUAGE_ASSIGNMENT.DEFAULT;
|
|
240
|
+
(0, _defineProperty2.default)(_this, "setSpokenLanguage", function (languageCode, languageAssignment) {
|
|
237
241
|
return (
|
|
238
242
|
// @ts-ignore
|
|
239
243
|
_this.request({
|
|
@@ -241,10 +245,11 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
241
245
|
// @ts-ignore
|
|
242
246
|
url: "".concat(_this.webex.internal.llm.getLocusUrl(), "/controls/"),
|
|
243
247
|
body: {
|
|
244
|
-
transcribe: {
|
|
245
|
-
spokenLanguage: languageCode
|
|
248
|
+
transcribe: _objectSpread({
|
|
249
|
+
spokenLanguage: languageCode
|
|
250
|
+
}, languageAssignment && {
|
|
246
251
|
languageAssignment: languageAssignment
|
|
247
|
-
}
|
|
252
|
+
})
|
|
248
253
|
}
|
|
249
254
|
}).then(function () {
|
|
250
255
|
// @ts-ignore
|
package/dist/voicea.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_uuid","_interopRequireDefault","require","_webexCore","_constants","_utils","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","Boolean","prototype","valueOf","call","VoiceaChannel","exports","_WebexPlugin","_this","_classCallCheck2","_len","args","Array","_key","concat","VOICEA","_e$headers","seqNum","sequenceNumber","data","relayType","AIBRIDGE_RELAY_TYPES","ANNOUNCEMENT","vmcDeviceId","headers","from","announceStatus","ANNOUNCE_STATUS","JOINED","processAnnouncementMessage","voiceaPayload","TRANSLATION_RESPONSE","processCaptionLanguageResponse","TRANSCRIPTION","processTranscription","MANUAL","CAPTIONER","processManualTranscription","transcriptPayload","sender","data_source","type","TRANSCRIPTION_TYPE","MANUAL_CAPTION_FINAL_RESULT","MANUAL_CAPTION_INTERIM_RESULT","trigger","EVENT_TRIGGERS","NEW_MANUAL_CAPTION","isFinal","transcriptId","id","transcripts","source","TRANSCRIPT_INTERIM_RESULTS","NEW_CAPTION","transcript_id","TRANSCRIPT_FINAL_RESULT","map","transcript","timestamp","millisToMinutesAndSeconds","end_millis","HIGHLIGHT_CREATED","csis","highlight","highlightId","highlight_id","text","highlightLabel","highlight_label","highlightSource","highlight_source","EVA_THANKS","EVA_COMMAND","isListening","command_response","EVA_WAKE","EVA_CANCEL","LANGUAGE_DETECTED","spokenLanguages","includes","language","setSpokenLanguage","LANGUAGE_ASSIGNMENT","AUTO","statusCode","CAPTION_LANGUAGE_UPDATE","errorCode","errorMessage","message","_voiceaPayload$transl","_voiceaPayload$transl2","_voiceaPayload$transl3","_voiceaPayload$transl4","_voiceaPayload$ASR$sp","_voiceaPayload$ASR","_voiceaPayload$ASR$sp2","_voiceaPayload$ASR2","voiceaLanguageOptions","captionLanguages","translation","allowed_languages","maxLanguages","max_languages","ASR","spoken_languages","currentSpokenLanguage","VOICEA_ANNOUNCEMENT","JOINING","listenToEvents","webex","internal","llm","socket","send","recipients","route","getBinding","clientPayload","version","eventType","CLIENT_ANNOUNCEMENT","trackingId","config","trackingIdPrefix","uuid","v4","toString","languageCode","languageAssignment","undefined","DEFAULT","request","method","url","getLocusUrl","body","transcribe","spokenLanguage","then","SPOKEN_LANGUAGE_UPDATE","isConnected","to","translationLanguage","TRANSLATION_REQUEST","timeStamp","start_millis","captionStatus","TURN_ON_CAPTION_STATUS","SENDING","caption","CAPTIONS_TURNED_ON","areCaptionsEnabled","ENABLED","announce","catch","IDLE","Error","isAnnounceProcessing","sendAnnouncement","_ref","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_context","prev","next","abrupt","requestTurnOnCaptions","stop","_x","activate","transcribing","turnOnCaptions","enable","toggleManualCaptionStatus","TOGGLE_MANUAL_CAPTION_STATUS","manualCaption","meetingId","DEFAULT_SPOKEN_LANGUAGE","_inherits2","_createClass2","key","value","hasSubscribedToEvents","on","eventProcessor","deregisterEvents","off","WebexPlugin","_default"],"sources":["voicea.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {WebexPlugin, config} from '@webex/webex-core';\n\nimport {\n EVENT_TRIGGERS,\n AIBRIDGE_RELAY_TYPES,\n TRANSCRIPTION_TYPE,\n VOICEA,\n ANNOUNCE_STATUS,\n TURN_ON_CAPTION_STATUS,\n TOGGLE_MANUAL_CAPTION_STATUS,\n DEFAULT_SPOKEN_LANGUAGE,\n LANGUAGE_ASSIGNMENT,\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 private toggleManualCaptionStatus: string;\n\n private currentSpokenLanguage?: string;\n\n private spokenLanguages: 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 AIBRIDGE_RELAY_TYPES.VOICEA.ANNOUNCEMENT:\n this.vmcDeviceId = e.headers.from;\n this.announceStatus = ANNOUNCE_STATUS.JOINED;\n this.processAnnouncementMessage(e.data.voiceaPayload);\n break;\n case AIBRIDGE_RELAY_TYPES.VOICEA.TRANSLATION_RESPONSE:\n this.processCaptionLanguageResponse(e.data.voiceaPayload);\n break;\n case AIBRIDGE_RELAY_TYPES.VOICEA.TRANSCRIPTION:\n this.processTranscription(e.data.voiceaPayload);\n break;\n case AIBRIDGE_RELAY_TYPES.MANUAL.TRANSCRIPTION:\n case AIBRIDGE_RELAY_TYPES.MANUAL.CAPTIONER:\n this.processManualTranscription({\n ...e.data.transcriptPayload,\n sender: e.headers?.from,\n data_source: e.data.relayType,\n });\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 this.toggleManualCaptionStatus = TOGGLE_MANUAL_CAPTION_STATUS.IDLE;\n this.currentSpokenLanguage = undefined;\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 this.toggleManualCaptionStatus = TOGGLE_MANUAL_CAPTION_STATUS.IDLE;\n this.currentSpokenLanguage = DEFAULT_SPOKEN_LANGUAGE;\n }\n\n /**\n * Process manual Transcript and send alert\n * @param {TranscriptionResponse} transcriptPayload\n * @returns {void}\n */\n private processManualTranscription = (transcriptPayload: TranscriptionResponse): void => {\n if (\n transcriptPayload.type === TRANSCRIPTION_TYPE.MANUAL_CAPTION_FINAL_RESULT ||\n transcriptPayload.type === TRANSCRIPTION_TYPE.MANUAL_CAPTION_INTERIM_RESULT\n ) {\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.NEW_MANUAL_CAPTION, {\n isFinal: transcriptPayload.type === TRANSCRIPTION_TYPE.MANUAL_CAPTION_FINAL_RESULT,\n transcriptId: transcriptPayload.id,\n transcripts: transcriptPayload.transcripts,\n sender: transcriptPayload.sender,\n source: transcriptPayload.data_source,\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 // @ts-ignore\n this.trigger(EVENT_TRIGGERS.NEW_CAPTION, {\n isFinal: false,\n transcriptId: voiceaPayload.transcript_id,\n transcripts: voiceaPayload.transcripts,\n });\n break;\n\n case TRANSCRIPTION_TYPE.TRANSCRIPT_FINAL_RESULT:\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.NEW_CAPTION, {\n isFinal: true,\n transcriptId: voiceaPayload.transcript_id,\n transcripts: voiceaPayload.transcripts.map((transcript) => {\n transcript.timestamp = millisToMinutesAndSeconds(transcript.end_millis);\n\n return transcript;\n }),\n });\n break;\n\n case TRANSCRIPTION_TYPE.HIGHLIGHT_CREATED:\n // @ts-ignore\n this.trigger(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),\n });\n break;\n\n case TRANSCRIPTION_TYPE.EVA_THANKS:\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.EVA_COMMAND, {\n isListening: false,\n text: voiceaPayload.command_response,\n });\n break;\n\n case TRANSCRIPTION_TYPE.EVA_WAKE:\n case TRANSCRIPTION_TYPE.EVA_CANCEL:\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.EVA_COMMAND, {\n isListening: voiceaPayload.type === TRANSCRIPTION_TYPE.EVA_WAKE,\n });\n break;\n\n case TRANSCRIPTION_TYPE.LANGUAGE_DETECTED:\n // @ts-ignore\n if (this.spokenLanguages.includes(voiceaPayload.language)) {\n this.setSpokenLanguage(voiceaPayload.language, LANGUAGE_ASSIGNMENT.AUTO);\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 // @ts-ignore\n this.trigger(EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, {statusCode: 200});\n } else {\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, {\n statusCode: voiceaPayload.errorCode,\n 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 currentSpokenLanguage: this.currentSpokenLanguage,\n };\n\n this.spokenLanguages = voiceaPayload?.ASR?.spoken_languages ?? [];\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT, voiceaLanguageOptions);\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: AIBRIDGE_RELAY_TYPES.VOICEA.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 * @param {\"DEFAULT\" | \"AUTO\" | \"MANUAL\"} languageAssignment\n * @returns {Promise}\n */\n public setSpokenLanguage = (\n languageCode: string,\n languageAssignment = LANGUAGE_ASSIGNMENT.DEFAULT\n ): 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 transcribe: {\n spokenLanguage: languageCode,\n languageAssignment,\n },\n },\n }).then(() => {\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, {languageCode});\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: AIBRIDGE_RELAY_TYPES.VOICEA.TRANSLATION_REQUEST,\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n });\n this.seqNum += 1;\n };\n\n /**\n * Send manual closed captions to voicea service\n * @param {string} text\n * @param {number} timeStamp\n * @param {number[]} csis\n * @param {boolean} isFinal\n * @returns {void}\n */\n public sendManualClosedCaption = (\n text: string,\n timeStamp: number,\n csis: number[],\n isFinal: boolean\n ): void => {\n // @ts-ignore\n if (!this.webex.internal.llm.isConnected()) return;\n\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 eventType: 'relay.event',\n relayType: AIBRIDGE_RELAY_TYPES.MANUAL.CAPTIONER,\n transcriptPayload: {\n type: isFinal\n ? TRANSCRIPTION_TYPE.MANUAL_CAPTION_FINAL_RESULT\n : TRANSCRIPTION_TYPE.MANUAL_CAPTION_INTERIM_RESULT,\n id: uuid.v4(),\n transcripts: [\n {\n text,\n start_millis: timeStamp,\n end_millis: timeStamp,\n csis,\n },\n ],\n transcript_id: uuid.v4(),\n },\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n });\n this.seqNum += 1;\n };\n\n /**\n * request turn on Captions\n * @param {string} [languageCode] - Optional Parameter for spoken language code. Defaults to English\n * @returns {Promise}\n */\n private requestTurnOnCaptions = (languageCode?): undefined | Promise<void> => {\n this.captionStatus = TURN_ON_CAPTION_STATUS.SENDING;\n\n // only set the spoken language if it is provided\n const body = {\n transcribe: {caption: true},\n languageCode,\n };\n\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 })\n .then(() => {\n // @ts-ignore\n this.trigger(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 * @param {string} [spokenLanguage] - Optional Spoken language code\n * @returns {Promise}\n */\n public turnOnCaptions = async (spokenLanguage?): undefined | Promise<void> => {\n if (this.captionStatus === TURN_ON_CAPTION_STATUS.SENDING) 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(spokenLanguage);\n };\n\n /**\n * Toggle transcribing for highlights\n * @param {boolean} activate true means to turn on transcribing and false means to turn off\n * @param {string} spokenLanguage language code for spoken language\n * @returns {Promise}\n */\n public toggleTranscribing = (\n activate: boolean,\n spokenLanguage?: string\n ): 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: {\n transcribing: activate,\n },\n spokenLanguage,\n },\n }).then((): undefined | Promise<void> => {\n if (activate && !this.areCaptionsEnabled) {\n return this.turnOnCaptions(spokenLanguage);\n }\n\n return undefined;\n });\n };\n\n /**\n * Toggle turn on manual caption\n * @param {boolean} enable true means to turn on manual caption, false means to turn off\n * @returns {Promise}\n */\n public toggleManualCaption = (enable: boolean): undefined | Promise<void> => {\n if (this.toggleManualCaptionStatus === TOGGLE_MANUAL_CAPTION_STATUS.SENDING) return undefined;\n\n this.toggleManualCaptionStatus = TOGGLE_MANUAL_CAPTION_STATUS.SENDING;\n\n // @ts-ignore\n return this.request({\n method: 'PUT',\n // @ts-ignore\n url: `${this.webex.internal.llm.getLocusUrl()}/controls/`,\n body: {\n manualCaption: {\n enable,\n },\n },\n })\n .then((): undefined | Promise<void> => {\n this.toggleManualCaptionStatus = TOGGLE_MANUAL_CAPTION_STATUS.IDLE;\n\n return undefined;\n })\n .catch(() => {\n this.toggleManualCaptionStatus = TOGGLE_MANUAL_CAPTION_STATUS.IDLE;\n throw new Error('toggle manual captions fail');\n });\n };\n\n /**\n * In meeting Spoken Language changed event\n * @param {string} languageCode\n * @param {string} meetingId\n * @returns {void}\n */\n public onSpokenLanguageUpdate = (languageCode: string, meetingId): void => {\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, {languageCode, meetingId});\n this.currentSpokenLanguage = languageCode;\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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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_uuid","_interopRequireDefault","require","_webexCore","_constants","_utils","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","Boolean","prototype","valueOf","call","VoiceaChannel","exports","_WebexPlugin","_this","_classCallCheck2","_len","args","Array","_key","concat","VOICEA","_e$headers","seqNum","sequenceNumber","data","relayType","AIBRIDGE_RELAY_TYPES","ANNOUNCEMENT","vmcDeviceId","headers","from","announceStatus","ANNOUNCE_STATUS","JOINED","processAnnouncementMessage","voiceaPayload","TRANSLATION_RESPONSE","processCaptionLanguageResponse","TRANSCRIPTION","processTranscription","MANUAL","CAPTIONER","processManualTranscription","transcriptPayload","sender","data_source","type","TRANSCRIPTION_TYPE","MANUAL_CAPTION_FINAL_RESULT","MANUAL_CAPTION_INTERIM_RESULT","trigger","EVENT_TRIGGERS","NEW_MANUAL_CAPTION","isFinal","transcriptId","id","transcripts","source","TRANSCRIPT_INTERIM_RESULTS","NEW_CAPTION","transcript_id","TRANSCRIPT_FINAL_RESULT","map","transcript","timestamp","millisToMinutesAndSeconds","end_millis","HIGHLIGHT_CREATED","csis","highlight","highlightId","highlight_id","text","highlightLabel","highlight_label","highlightSource","highlight_source","EVA_THANKS","EVA_COMMAND","isListening","command_response","EVA_WAKE","EVA_CANCEL","LANGUAGE_DETECTED","isInSpokenLanguages","spokenLanguages","includes","language","languageCode","statusCode","CAPTION_LANGUAGE_UPDATE","errorCode","errorMessage","message","_voiceaPayload$transl","_voiceaPayload$transl2","_voiceaPayload$transl3","_voiceaPayload$transl4","_voiceaPayload$ASR$sp","_voiceaPayload$ASR","_voiceaPayload$ASR$sp2","_voiceaPayload$ASR2","voiceaLanguageOptions","captionLanguages","translation","allowed_languages","maxLanguages","max_languages","ASR","spoken_languages","currentSpokenLanguage","VOICEA_ANNOUNCEMENT","JOINING","listenToEvents","webex","internal","llm","socket","send","recipients","route","getBinding","clientPayload","version","eventType","CLIENT_ANNOUNCEMENT","trackingId","config","trackingIdPrefix","uuid","v4","toString","languageAssignment","request","method","url","getLocusUrl","body","transcribe","spokenLanguage","then","SPOKEN_LANGUAGE_UPDATE","isConnected","to","translationLanguage","TRANSLATION_REQUEST","timeStamp","start_millis","captionStatus","TURN_ON_CAPTION_STATUS","SENDING","caption","CAPTIONS_TURNED_ON","areCaptionsEnabled","ENABLED","announce","catch","IDLE","Error","isAnnounceProcessing","sendAnnouncement","_ref","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_context","prev","next","abrupt","undefined","requestTurnOnCaptions","stop","_x","activate","transcribing","turnOnCaptions","enable","toggleManualCaptionStatus","TOGGLE_MANUAL_CAPTION_STATUS","manualCaption","meetingId","DEFAULT_SPOKEN_LANGUAGE","_inherits2","_createClass2","key","value","hasSubscribedToEvents","on","eventProcessor","deregisterEvents","off","WebexPlugin","_default"],"sources":["voicea.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {WebexPlugin, config} from '@webex/webex-core';\n\nimport {\n EVENT_TRIGGERS,\n AIBRIDGE_RELAY_TYPES,\n TRANSCRIPTION_TYPE,\n VOICEA,\n ANNOUNCE_STATUS,\n TURN_ON_CAPTION_STATUS,\n TOGGLE_MANUAL_CAPTION_STATUS,\n DEFAULT_SPOKEN_LANGUAGE,\n LANGUAGE_ASSIGNMENT,\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 private toggleManualCaptionStatus: string;\n\n private currentSpokenLanguage?: string;\n\n private spokenLanguages: 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 AIBRIDGE_RELAY_TYPES.VOICEA.ANNOUNCEMENT:\n this.vmcDeviceId = e.headers.from;\n this.announceStatus = ANNOUNCE_STATUS.JOINED;\n this.processAnnouncementMessage(e.data.voiceaPayload);\n break;\n case AIBRIDGE_RELAY_TYPES.VOICEA.TRANSLATION_RESPONSE:\n this.processCaptionLanguageResponse(e.data.voiceaPayload);\n break;\n case AIBRIDGE_RELAY_TYPES.VOICEA.TRANSCRIPTION:\n this.processTranscription(e.data.voiceaPayload);\n break;\n case AIBRIDGE_RELAY_TYPES.MANUAL.TRANSCRIPTION:\n case AIBRIDGE_RELAY_TYPES.MANUAL.CAPTIONER:\n this.processManualTranscription({\n ...e.data.transcriptPayload,\n sender: e.headers?.from,\n data_source: e.data.relayType,\n });\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 this.toggleManualCaptionStatus = TOGGLE_MANUAL_CAPTION_STATUS.IDLE;\n this.currentSpokenLanguage = undefined;\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 this.toggleManualCaptionStatus = TOGGLE_MANUAL_CAPTION_STATUS.IDLE;\n this.currentSpokenLanguage = DEFAULT_SPOKEN_LANGUAGE;\n }\n\n /**\n * Process manual Transcript and send alert\n * @param {TranscriptionResponse} transcriptPayload\n * @returns {void}\n */\n private processManualTranscription = (transcriptPayload: TranscriptionResponse): void => {\n if (\n transcriptPayload.type === TRANSCRIPTION_TYPE.MANUAL_CAPTION_FINAL_RESULT ||\n transcriptPayload.type === TRANSCRIPTION_TYPE.MANUAL_CAPTION_INTERIM_RESULT\n ) {\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.NEW_MANUAL_CAPTION, {\n isFinal: transcriptPayload.type === TRANSCRIPTION_TYPE.MANUAL_CAPTION_FINAL_RESULT,\n transcriptId: transcriptPayload.id,\n transcripts: transcriptPayload.transcripts,\n sender: transcriptPayload.sender,\n source: transcriptPayload.data_source,\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 // @ts-ignore\n this.trigger(EVENT_TRIGGERS.NEW_CAPTION, {\n isFinal: false,\n transcriptId: voiceaPayload.transcript_id,\n transcripts: voiceaPayload.transcripts,\n });\n break;\n\n case TRANSCRIPTION_TYPE.TRANSCRIPT_FINAL_RESULT:\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.NEW_CAPTION, {\n isFinal: true,\n transcriptId: voiceaPayload.transcript_id,\n transcripts: voiceaPayload.transcripts.map((transcript) => {\n transcript.timestamp = millisToMinutesAndSeconds(transcript.end_millis);\n\n return transcript;\n }),\n });\n break;\n\n case TRANSCRIPTION_TYPE.HIGHLIGHT_CREATED:\n // @ts-ignore\n this.trigger(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),\n });\n break;\n\n case TRANSCRIPTION_TYPE.EVA_THANKS:\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.EVA_COMMAND, {\n isListening: false,\n text: voiceaPayload.command_response,\n });\n break;\n\n case TRANSCRIPTION_TYPE.EVA_WAKE:\n case TRANSCRIPTION_TYPE.EVA_CANCEL:\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.EVA_COMMAND, {\n isListening: voiceaPayload.type === TRANSCRIPTION_TYPE.EVA_WAKE,\n });\n break;\n\n case TRANSCRIPTION_TYPE.LANGUAGE_DETECTED: {\n const isInSpokenLanguages = this.spokenLanguages.includes(voiceaPayload.language);\n\n if (isInSpokenLanguages) {\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.LANGUAGE_DETECTED, {\n languageCode: voiceaPayload.language,\n });\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 // @ts-ignore\n this.trigger(EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, {statusCode: 200});\n } else {\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, {\n statusCode: voiceaPayload.errorCode,\n 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 currentSpokenLanguage: this.currentSpokenLanguage,\n };\n\n this.spokenLanguages = voiceaPayload?.ASR?.spoken_languages ?? [];\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT, voiceaLanguageOptions);\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: AIBRIDGE_RELAY_TYPES.VOICEA.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 * @param {\"DEFAULT\" | \"AUTO\" | \"MANUAL\"} languageAssignment\n * @returns {Promise}\n */\n public setSpokenLanguage = (\n languageCode: string,\n languageAssignment?: 'DEFAULT' | 'AUTO' | 'MANUAL'\n ): 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 transcribe: {\n spokenLanguage: languageCode,\n ...(languageAssignment && {languageAssignment}),\n },\n },\n }).then(() => {\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, {languageCode});\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: AIBRIDGE_RELAY_TYPES.VOICEA.TRANSLATION_REQUEST,\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n });\n this.seqNum += 1;\n };\n\n /**\n * Send manual closed captions to voicea service\n * @param {string} text\n * @param {number} timeStamp\n * @param {number[]} csis\n * @param {boolean} isFinal\n * @returns {void}\n */\n public sendManualClosedCaption = (\n text: string,\n timeStamp: number,\n csis: number[],\n isFinal: boolean\n ): void => {\n // @ts-ignore\n if (!this.webex.internal.llm.isConnected()) return;\n\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 eventType: 'relay.event',\n relayType: AIBRIDGE_RELAY_TYPES.MANUAL.CAPTIONER,\n transcriptPayload: {\n type: isFinal\n ? TRANSCRIPTION_TYPE.MANUAL_CAPTION_FINAL_RESULT\n : TRANSCRIPTION_TYPE.MANUAL_CAPTION_INTERIM_RESULT,\n id: uuid.v4(),\n transcripts: [\n {\n text,\n start_millis: timeStamp,\n end_millis: timeStamp,\n csis,\n },\n ],\n transcript_id: uuid.v4(),\n },\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n });\n this.seqNum += 1;\n };\n\n /**\n * request turn on Captions\n * @param {string} [languageCode] - Optional Parameter for spoken language code. Defaults to English\n * @returns {Promise}\n */\n private requestTurnOnCaptions = (languageCode?): undefined | Promise<void> => {\n this.captionStatus = TURN_ON_CAPTION_STATUS.SENDING;\n\n // only set the spoken language if it is provided\n const body = {\n transcribe: {caption: true},\n languageCode,\n };\n\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 })\n .then(() => {\n // @ts-ignore\n this.trigger(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 * @param {string} [spokenLanguage] - Optional Spoken language code\n * @returns {Promise}\n */\n public turnOnCaptions = async (spokenLanguage?): undefined | Promise<void> => {\n if (this.captionStatus === TURN_ON_CAPTION_STATUS.SENDING) 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(spokenLanguage);\n };\n\n /**\n * Toggle transcribing for highlights\n * @param {boolean} activate true means to turn on transcribing and false means to turn off\n * @param {string} spokenLanguage language code for spoken language\n * @returns {Promise}\n */\n public toggleTranscribing = (\n activate: boolean,\n spokenLanguage?: string\n ): 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: {\n transcribing: activate,\n },\n spokenLanguage,\n },\n }).then((): undefined | Promise<void> => {\n if (activate && !this.areCaptionsEnabled) {\n return this.turnOnCaptions(spokenLanguage);\n }\n\n return undefined;\n });\n };\n\n /**\n * Toggle turn on manual caption\n * @param {boolean} enable true means to turn on manual caption, false means to turn off\n * @returns {Promise}\n */\n public toggleManualCaption = (enable: boolean): undefined | Promise<void> => {\n if (this.toggleManualCaptionStatus === TOGGLE_MANUAL_CAPTION_STATUS.SENDING) return undefined;\n\n this.toggleManualCaptionStatus = TOGGLE_MANUAL_CAPTION_STATUS.SENDING;\n\n // @ts-ignore\n return this.request({\n method: 'PUT',\n // @ts-ignore\n url: `${this.webex.internal.llm.getLocusUrl()}/controls/`,\n body: {\n manualCaption: {\n enable,\n },\n },\n })\n .then((): undefined | Promise<void> => {\n this.toggleManualCaptionStatus = TOGGLE_MANUAL_CAPTION_STATUS.IDLE;\n\n return undefined;\n })\n .catch(() => {\n this.toggleManualCaptionStatus = TOGGLE_MANUAL_CAPTION_STATUS.IDLE;\n throw new Error('toggle manual captions fail');\n });\n };\n\n /**\n * In meeting Spoken Language changed event\n * @param {string} languageCode\n * @param {string} meetingId\n * @returns {void}\n */\n public onSpokenLanguageUpdate = (languageCode: string, meetingId): void => {\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, {languageCode, meetingId});\n this.currentSpokenLanguage = languageCode;\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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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
"node": ">=18"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@webex/internal-plugin-llm": "3.10.0-next.
|
|
18
|
-
"@webex/internal-plugin-mercury": "3.10.0-next.
|
|
19
|
-
"@webex/webex-core": "3.10.0-next.
|
|
17
|
+
"@webex/internal-plugin-llm": "3.10.0-next.5",
|
|
18
|
+
"@webex/internal-plugin-mercury": "3.10.0-next.5",
|
|
19
|
+
"@webex/webex-core": "3.10.0-next.5",
|
|
20
20
|
"uuid": "^3.3.2"
|
|
21
21
|
},
|
|
22
22
|
"browserify": {
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"test:style": "eslint ./src/**/*.*",
|
|
50
50
|
"test:unit": "webex-legacy-tools test --unit --runner jest"
|
|
51
51
|
},
|
|
52
|
-
"version": "3.10.0-next.
|
|
52
|
+
"version": "3.10.0-next.7"
|
|
53
53
|
}
|
package/src/constants.ts
CHANGED
|
@@ -10,6 +10,8 @@ export const EVENT_TRIGGERS = {
|
|
|
10
10
|
EVA_COMMAND: 'voicea:wxa',
|
|
11
11
|
HIGHLIGHT_CREATED: 'voicea:highlightCreated',
|
|
12
12
|
NEW_MANUAL_CAPTION: 'aibridge:newManualCaption',
|
|
13
|
+
|
|
14
|
+
LANGUAGE_DETECTED: 'voicea:languageDetected',
|
|
13
15
|
};
|
|
14
16
|
|
|
15
17
|
export const AIBRIDGE_RELAY_TYPES = {
|
package/src/voicea.ts
CHANGED
|
@@ -200,13 +200,18 @@ export class VoiceaChannel extends WebexPlugin implements IVoiceaChannel {
|
|
|
200
200
|
});
|
|
201
201
|
break;
|
|
202
202
|
|
|
203
|
-
case TRANSCRIPTION_TYPE.LANGUAGE_DETECTED:
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
203
|
+
case TRANSCRIPTION_TYPE.LANGUAGE_DETECTED: {
|
|
204
|
+
const isInSpokenLanguages = this.spokenLanguages.includes(voiceaPayload.language);
|
|
205
|
+
|
|
206
|
+
if (isInSpokenLanguages) {
|
|
207
|
+
// @ts-ignore
|
|
208
|
+
this.trigger(EVENT_TRIGGERS.LANGUAGE_DETECTED, {
|
|
209
|
+
languageCode: voiceaPayload.language,
|
|
210
|
+
});
|
|
207
211
|
}
|
|
208
|
-
break;
|
|
209
212
|
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
210
215
|
default:
|
|
211
216
|
break;
|
|
212
217
|
}
|
|
@@ -284,7 +289,7 @@ export class VoiceaChannel extends WebexPlugin implements IVoiceaChannel {
|
|
|
284
289
|
*/
|
|
285
290
|
public setSpokenLanguage = (
|
|
286
291
|
languageCode: string,
|
|
287
|
-
languageAssignment
|
|
292
|
+
languageAssignment?: 'DEFAULT' | 'AUTO' | 'MANUAL'
|
|
288
293
|
): Promise<void> =>
|
|
289
294
|
// @ts-ignore
|
|
290
295
|
this.request({
|
|
@@ -294,7 +299,7 @@ export class VoiceaChannel extends WebexPlugin implements IVoiceaChannel {
|
|
|
294
299
|
body: {
|
|
295
300
|
transcribe: {
|
|
296
301
|
spokenLanguage: languageCode,
|
|
297
|
-
languageAssignment,
|
|
302
|
+
...(languageAssignment && {languageAssignment}),
|
|
298
303
|
},
|
|
299
304
|
},
|
|
300
305
|
}).then(() => {
|
package/test/unit/spec/voicea.js
CHANGED
|
@@ -291,7 +291,6 @@ describe('plugin-voicea', () => {
|
|
|
291
291
|
describe('#setSpokenLanguage', () => {
|
|
292
292
|
it('sets spoken language', async () => {
|
|
293
293
|
const languageCode = 'en';
|
|
294
|
-
let languageAssignment = 'DEFAULT';
|
|
295
294
|
const triggerSpy = sinon.spy();
|
|
296
295
|
|
|
297
296
|
voiceaService.on(EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, triggerSpy);
|
|
@@ -300,6 +299,30 @@ describe('plugin-voicea', () => {
|
|
|
300
299
|
|
|
301
300
|
assert.calledOnceWithExactly(triggerSpy, {languageCode});
|
|
302
301
|
|
|
302
|
+
sinon.assert.calledWith(
|
|
303
|
+
voiceaService.request,
|
|
304
|
+
sinon.match({
|
|
305
|
+
method: 'PUT',
|
|
306
|
+
url: `${locusUrl}/controls/`,
|
|
307
|
+
body: {
|
|
308
|
+
transcribe: {
|
|
309
|
+
spokenLanguage: languageCode,
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
})
|
|
313
|
+
);
|
|
314
|
+
});
|
|
315
|
+
it('sets spoken language with language assignment', async () => {
|
|
316
|
+
const languageCode = 'zh';
|
|
317
|
+
const languageAssignment = 'DEFAULT';
|
|
318
|
+
const triggerSpy = sinon.spy();
|
|
319
|
+
|
|
320
|
+
voiceaService.on(EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, triggerSpy);
|
|
321
|
+
voiceaService.listenToEvents();
|
|
322
|
+
await voiceaService.setSpokenLanguage(languageCode, languageAssignment);
|
|
323
|
+
|
|
324
|
+
assert.calledOnceWithExactly(triggerSpy, {languageCode});
|
|
325
|
+
|
|
303
326
|
sinon.assert.calledWith(
|
|
304
327
|
voiceaService.request,
|
|
305
328
|
sinon.match({
|
|
@@ -314,6 +337,7 @@ describe('plugin-voicea', () => {
|
|
|
314
337
|
})
|
|
315
338
|
);
|
|
316
339
|
});
|
|
340
|
+
|
|
317
341
|
});
|
|
318
342
|
|
|
319
343
|
describe('#requestTurnOnCaptions', () => {
|
|
@@ -884,13 +908,13 @@ describe('plugin-voicea', () => {
|
|
|
884
908
|
});
|
|
885
909
|
|
|
886
910
|
it('processes a language detected if language is in spoken languages', async () => {
|
|
887
|
-
voiceaService.on(EVENT_TRIGGERS.
|
|
911
|
+
voiceaService.on(EVENT_TRIGGERS.LANGUAGE_DETECTED, triggerSpy);
|
|
888
912
|
|
|
889
913
|
const voiceaPayload = {
|
|
890
914
|
id: '9bc51440-1a22-7c81-6add-4b6ff7b59f7c',
|
|
891
915
|
meeting: 'fd5bd0fc-06fb-4fd1-982b-554c4368f101',
|
|
892
916
|
type: 'language_detected',
|
|
893
|
-
language: '
|
|
917
|
+
language: 'en',
|
|
894
918
|
translation: {
|
|
895
919
|
allowed_languages: ['af', 'am'],
|
|
896
920
|
max_languages: 5,
|
|
@@ -902,58 +926,22 @@ describe('plugin-voicea', () => {
|
|
|
902
926
|
version: 'v2',
|
|
903
927
|
};
|
|
904
928
|
|
|
905
|
-
|
|
929
|
+
const spy = sinon.spy();
|
|
906
930
|
|
|
907
931
|
voiceaService.on(EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT, spy);
|
|
908
932
|
voiceaService.listenToEvents();
|
|
909
933
|
voiceaService.processAnnouncementMessage(voiceaPayload);
|
|
910
934
|
|
|
911
|
-
|
|
935
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
912
936
|
await voiceaService.webex.internal.llm._emit('event:relay.event', {
|
|
913
937
|
headers: {from: 'ws'},
|
|
914
938
|
data: {relayType: 'voicea.transcription', voiceaPayload},
|
|
915
939
|
});
|
|
916
940
|
|
|
917
941
|
assert.calledOnceWithExactly(functionSpy, voiceaPayload);
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
});
|
|
921
|
-
|
|
922
|
-
it('processes a language detected if language is not in spoken languages', async () => {
|
|
923
|
-
voiceaService.on(EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, triggerSpy);
|
|
924
|
-
|
|
925
|
-
const voiceaPayload = {
|
|
926
|
-
id: '9bc51440-1a22-7c81-6add-4b6ff7b59f7c',
|
|
927
|
-
meeting: 'fd5bd0fc-06fb-4fd1-982b-554c4368f101',
|
|
928
|
-
type: 'language_detected',
|
|
929
|
-
language: 'zh',
|
|
930
|
-
|
|
931
|
-
translation: {
|
|
932
|
-
allowed_languages: ['af', 'am'],
|
|
933
|
-
max_languages: 5,
|
|
934
|
-
},
|
|
935
|
-
ASR: {
|
|
936
|
-
spoken_languages: ['en'],
|
|
937
|
-
},
|
|
938
|
-
|
|
939
|
-
version: 'v2',
|
|
940
|
-
};
|
|
941
|
-
|
|
942
|
-
const spy = sinon.spy();
|
|
943
|
-
|
|
944
|
-
voiceaService.on(EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT, spy);
|
|
945
|
-
voiceaService.listenToEvents();
|
|
946
|
-
voiceaService.processAnnouncementMessage(voiceaPayload);
|
|
947
|
-
|
|
948
|
-
// eslint-disable-next-line no-underscore-dangle
|
|
949
|
-
await voiceaService.webex.internal.llm._emit('event:relay.event', {
|
|
950
|
-
headers: {from: 'ws'},
|
|
951
|
-
data: {relayType: 'voicea.transcription', voiceaPayload},
|
|
942
|
+
assert.calledOnceWithExactly(triggerSpy, {
|
|
943
|
+
languageCode: 'en',
|
|
952
944
|
});
|
|
953
|
-
|
|
954
|
-
assert.calledOnceWithExactly(functionSpy, voiceaPayload);
|
|
955
|
-
|
|
956
|
-
assert.notCalled(triggerSpy);
|
|
957
945
|
});
|
|
958
946
|
|
|
959
947
|
});
|