@webex/internal-plugin-voicea 3.10.0-next.4 → 3.10.0-next.6
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/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/types/constants.d.ts +1 -0
- package/dist/types/voicea.d.ts +1 -1
- package/dist/utils.js.map +1 -1
- package/dist/voicea.js +55 -53
- package/dist/voicea.js.map +1 -1
- package/dist/voicea.types.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/index.js
CHANGED
|
@@ -29,7 +29,6 @@ _Object$defineProperty(exports, "default", {
|
|
|
29
29
|
var WebexCore = _interopRequireWildcard(require("@webex/webex-core"));
|
|
30
30
|
var _voicea = _interopRequireDefault(require("./voicea"));
|
|
31
31
|
var _constants = require("./constants");
|
|
32
|
-
function
|
|
33
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? _Object$getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? _Object$defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
32
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
34
33
|
WebexCore.registerInternalPlugin('voicea', _voicea.default, {});
|
|
35
34
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["WebexCore","_interopRequireWildcard","require","_voicea","_interopRequireDefault","_constants","
|
|
1
|
+
{"version":3,"names":["WebexCore","_interopRequireWildcard","require","_voicea","_interopRequireDefault","_constants","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","registerInternalPlugin","VoiceaChannel"],"sources":["index.ts"],"sourcesContent":["import * as WebexCore from '@webex/webex-core';\n\nimport VoiceaChannel from './voicea';\nimport type {MeetingTranscriptPayload} from './voicea.types';\n\nWebexCore.registerInternalPlugin('voicea', VoiceaChannel, {});\n\nexport {default} from './voicea';\nexport {type MeetingTranscriptPayload};\nexport {EVENT_TRIGGERS, TURN_ON_CAPTION_STATUS} from './constants';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AAOA,IAAAG,UAAA,GAAAH,OAAA;AAAmE,SAAAD,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,QAAA,MAAAC,CAAA,OAAAD,QAAA,IAAAE,CAAA,OAAAF,QAAA,YAAAP,uBAAA,YAAAA,wBAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,gBAAAW,OAAA,CAAAX,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAM,GAAA,CAAAZ,CAAA,UAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,GAAAM,CAAA,CAAAQ,GAAA,CAAAd,CAAA,EAAAQ,CAAA,cAAAO,EAAA,IAAAf,CAAA,gBAAAe,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,EAAA,OAAAR,CAAA,IAAAD,CAAA,GAAAY,sBAAA,KAAAC,gCAAA,CAAAnB,CAAA,EAAAe,EAAA,OAAAR,CAAA,CAAAM,GAAA,IAAAN,CAAA,CAAAO,GAAA,IAAAR,CAAA,CAAAE,CAAA,EAAAO,EAAA,EAAAR,CAAA,IAAAC,CAAA,CAAAO,EAAA,IAAAf,CAAA,CAAAe,EAAA,WAAAP,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAJnEP,SAAS,CAAC0B,sBAAsB,CAAC,QAAQ,EAAEC,eAAa,EAAE,CAAC,CAAC,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/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["millisToMinutesAndSeconds","exports","millis","minutes","Math","floor","seconds","toFixed","concat"],"sources":["utils.ts"],"sourcesContent":["// eslint-disable-next-line import/prefer-default-export\nexport const millisToMinutesAndSeconds = (millis: number) => {\n const minutes = Math.floor(millis / 60000);\n const seconds = ((millis % 60000) / 1000).toFixed(0);\n\n return `${minutes}:${+seconds < 10 ? '0' : ''}${seconds}`;\n};\n"],"mappings":";;;;;;;AAAA;AACO,IAAMA,yBAAyB,GAAAC,OAAA,CAAAD,yBAAA,GAAG,SAA5BA,yBAAyBA,CAAIE,MAAc,EAAK;EAC3D,IAAMC,OAAO,GAAGC,IAAI,CAACC,KAAK,CAACH,MAAM,GAAG,KAAK,CAAC;EAC1C,IAAMI,OAAO,GAAG,CAAEJ,MAAM,GAAG,KAAK,GAAI,IAAI,EAAEK,OAAO,CAAC,CAAC,CAAC;EAEpD,UAAAC,MAAA,CAAUL,OAAO,OAAAK,MAAA,CAAI,CAACF,OAAO,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAAE,MAAA,CAAGF,OAAO;AACzD,CAAC"}
|
|
1
|
+
{"version":3,"names":["millisToMinutesAndSeconds","exports","millis","minutes","Math","floor","seconds","toFixed","concat"],"sources":["utils.ts"],"sourcesContent":["// eslint-disable-next-line import/prefer-default-export\nexport const millisToMinutesAndSeconds = (millis: number) => {\n const minutes = Math.floor(millis / 60000);\n const seconds = ((millis % 60000) / 1000).toFixed(0);\n\n return `${minutes}:${+seconds < 10 ? '0' : ''}${seconds}`;\n};\n"],"mappings":";;;;;;;AAAA;AACO,IAAMA,yBAAyB,GAAAC,OAAA,CAAAD,yBAAA,GAAG,SAA5BA,yBAAyBA,CAAIE,MAAc,EAAK;EAC3D,IAAMC,OAAO,GAAGC,IAAI,CAACC,KAAK,CAACH,MAAM,GAAG,KAAK,CAAC;EAC1C,IAAMI,OAAO,GAAG,CAAEJ,MAAM,GAAG,KAAK,GAAI,IAAI,EAAEK,OAAO,CAAC,CAAC,CAAC;EAEpD,UAAAC,MAAA,CAAUL,OAAO,OAAAK,MAAA,CAAI,CAACF,OAAO,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAAE,MAAA,CAAGF,OAAO;AACzD,CAAC","ignoreList":[]}
|
package/dist/voicea.js
CHANGED
|
@@ -16,10 +16,9 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regene
|
|
|
16
16
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
17
17
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
18
18
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
19
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
|
|
20
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
21
19
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
22
20
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
21
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
23
22
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
24
23
|
var _uuid = _interopRequireDefault(require("uuid"));
|
|
25
24
|
var _webexCore = require("@webex/webex-core");
|
|
@@ -27,16 +26,14 @@ var _constants = require("./constants");
|
|
|
27
26
|
var _utils = require("./utils");
|
|
28
27
|
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
29
28
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
30
|
-
function
|
|
31
|
-
function _isNativeReflectConstruct() {
|
|
29
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
30
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } // eslint-disable-next-line no-unused-vars
|
|
32
31
|
/**
|
|
33
32
|
* @description VoiceaChannel to hold single instance of LLM
|
|
34
33
|
* @export
|
|
35
34
|
* @class VoiceaChannel
|
|
36
35
|
*/
|
|
37
36
|
var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
|
|
38
|
-
(0, _inherits2.default)(VoiceaChannel, _WebexPlugin);
|
|
39
|
-
var _super = _createSuper(VoiceaChannel);
|
|
40
37
|
/**
|
|
41
38
|
* Initializes Voicea plugin
|
|
42
39
|
* @param {any} args
|
|
@@ -47,22 +44,22 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
47
44
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
48
45
|
args[_key] = arguments[_key];
|
|
49
46
|
}
|
|
50
|
-
_this =
|
|
51
|
-
(0, _defineProperty2.default)(
|
|
52
|
-
(0, _defineProperty2.default)(
|
|
53
|
-
(0, _defineProperty2.default)(
|
|
54
|
-
(0, _defineProperty2.default)(
|
|
55
|
-
(0, _defineProperty2.default)(
|
|
56
|
-
(0, _defineProperty2.default)(
|
|
57
|
-
(0, _defineProperty2.default)(
|
|
58
|
-
(0, _defineProperty2.default)(
|
|
59
|
-
(0, _defineProperty2.default)(
|
|
60
|
-
(0, _defineProperty2.default)(
|
|
47
|
+
_this = _callSuper(this, VoiceaChannel, [].concat(args));
|
|
48
|
+
(0, _defineProperty2.default)(_this, "namespace", _constants.VOICEA);
|
|
49
|
+
(0, _defineProperty2.default)(_this, "seqNum", void 0);
|
|
50
|
+
(0, _defineProperty2.default)(_this, "areCaptionsEnabled", void 0);
|
|
51
|
+
(0, _defineProperty2.default)(_this, "hasSubscribedToEvents", false);
|
|
52
|
+
(0, _defineProperty2.default)(_this, "vmcDeviceId", void 0);
|
|
53
|
+
(0, _defineProperty2.default)(_this, "announceStatus", void 0);
|
|
54
|
+
(0, _defineProperty2.default)(_this, "captionStatus", void 0);
|
|
55
|
+
(0, _defineProperty2.default)(_this, "toggleManualCaptionStatus", void 0);
|
|
56
|
+
(0, _defineProperty2.default)(_this, "currentSpokenLanguage", void 0);
|
|
57
|
+
(0, _defineProperty2.default)(_this, "spokenLanguages", []);
|
|
61
58
|
/**
|
|
62
59
|
* @param {Object} e
|
|
63
60
|
* @returns {undefined}
|
|
64
61
|
*/
|
|
65
|
-
(0, _defineProperty2.default)(
|
|
62
|
+
(0, _defineProperty2.default)(_this, "eventProcessor", function (e) {
|
|
66
63
|
var _e$headers;
|
|
67
64
|
_this.seqNum = e.sequenceNumber + 1;
|
|
68
65
|
switch (e.data.relayType) {
|
|
@@ -93,7 +90,7 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
93
90
|
* @param {TranscriptionResponse} transcriptPayload
|
|
94
91
|
* @returns {void}
|
|
95
92
|
*/
|
|
96
|
-
(0, _defineProperty2.default)(
|
|
93
|
+
(0, _defineProperty2.default)(_this, "processManualTranscription", function (transcriptPayload) {
|
|
97
94
|
if (transcriptPayload.type === _constants.TRANSCRIPTION_TYPE.MANUAL_CAPTION_FINAL_RESULT || transcriptPayload.type === _constants.TRANSCRIPTION_TYPE.MANUAL_CAPTION_INTERIM_RESULT) {
|
|
98
95
|
// @ts-ignore
|
|
99
96
|
_this.trigger(_constants.EVENT_TRIGGERS.NEW_MANUAL_CAPTION, {
|
|
@@ -110,7 +107,7 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
110
107
|
* @param {TranscriptionResponse} voiceaPayload
|
|
111
108
|
* @returns {void}
|
|
112
109
|
*/
|
|
113
|
-
(0, _defineProperty2.default)(
|
|
110
|
+
(0, _defineProperty2.default)(_this, "processTranscription", function (voiceaPayload) {
|
|
114
111
|
switch (voiceaPayload.type) {
|
|
115
112
|
case _constants.TRANSCRIPTION_TYPE.TRANSCRIPT_INTERIM_RESULTS:
|
|
116
113
|
// @ts-ignore
|
|
@@ -157,11 +154,16 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
157
154
|
});
|
|
158
155
|
break;
|
|
159
156
|
case _constants.TRANSCRIPTION_TYPE.LANGUAGE_DETECTED:
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
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;
|
|
163
166
|
}
|
|
164
|
-
break;
|
|
165
167
|
default:
|
|
166
168
|
break;
|
|
167
169
|
}
|
|
@@ -171,7 +173,7 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
171
173
|
* @param {CaptionLanguageResponse} voiceaPayload
|
|
172
174
|
* @returns {void}
|
|
173
175
|
*/
|
|
174
|
-
(0, _defineProperty2.default)(
|
|
176
|
+
(0, _defineProperty2.default)(_this, "processCaptionLanguageResponse", function (voiceaPayload) {
|
|
175
177
|
if (voiceaPayload.statusCode === 200) {
|
|
176
178
|
// @ts-ignore
|
|
177
179
|
_this.trigger(_constants.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, {
|
|
@@ -190,7 +192,7 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
190
192
|
* @param {Object} voiceaPayload
|
|
191
193
|
* @returns {void}
|
|
192
194
|
*/
|
|
193
|
-
(0, _defineProperty2.default)(
|
|
195
|
+
(0, _defineProperty2.default)(_this, "processAnnouncementMessage", function (voiceaPayload) {
|
|
194
196
|
var _voiceaPayload$transl, _voiceaPayload$transl2, _voiceaPayload$transl3, _voiceaPayload$transl4, _voiceaPayload$ASR$sp, _voiceaPayload$ASR, _voiceaPayload$ASR$sp2, _voiceaPayload$ASR2;
|
|
195
197
|
var voiceaLanguageOptions = {
|
|
196
198
|
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 : [],
|
|
@@ -206,7 +208,7 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
206
208
|
* Sends Announcement to add voicea to the meeting
|
|
207
209
|
* @returns {void}
|
|
208
210
|
*/
|
|
209
|
-
(0, _defineProperty2.default)(
|
|
211
|
+
(0, _defineProperty2.default)(_this, "sendAnnouncement", function () {
|
|
210
212
|
_this.announceStatus = _constants.ANNOUNCE_STATUS.JOINING;
|
|
211
213
|
_this.listenToEvents();
|
|
212
214
|
// @ts-ignore
|
|
@@ -235,8 +237,7 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
235
237
|
* @param {"DEFAULT" | "AUTO" | "MANUAL"} languageAssignment
|
|
236
238
|
* @returns {Promise}
|
|
237
239
|
*/
|
|
238
|
-
(0, _defineProperty2.default)(
|
|
239
|
-
var languageAssignment = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.LANGUAGE_ASSIGNMENT.DEFAULT;
|
|
240
|
+
(0, _defineProperty2.default)(_this, "setSpokenLanguage", function (languageCode, languageAssignment) {
|
|
240
241
|
return (
|
|
241
242
|
// @ts-ignore
|
|
242
243
|
_this.request({
|
|
@@ -244,10 +245,11 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
244
245
|
// @ts-ignore
|
|
245
246
|
url: "".concat(_this.webex.internal.llm.getLocusUrl(), "/controls/"),
|
|
246
247
|
body: {
|
|
247
|
-
transcribe: {
|
|
248
|
-
spokenLanguage: languageCode
|
|
248
|
+
transcribe: _objectSpread({
|
|
249
|
+
spokenLanguage: languageCode
|
|
250
|
+
}, languageAssignment && {
|
|
249
251
|
languageAssignment: languageAssignment
|
|
250
|
-
}
|
|
252
|
+
})
|
|
251
253
|
}
|
|
252
254
|
}).then(function () {
|
|
253
255
|
// @ts-ignore
|
|
@@ -262,7 +264,7 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
262
264
|
* @param {string} languageCode
|
|
263
265
|
* @returns {void}
|
|
264
266
|
*/
|
|
265
|
-
(0, _defineProperty2.default)(
|
|
267
|
+
(0, _defineProperty2.default)(_this, "requestLanguage", function (languageCode) {
|
|
266
268
|
// @ts-ignore
|
|
267
269
|
if (!_this.webex.internal.llm.isConnected()) return;
|
|
268
270
|
// @ts-ignore
|
|
@@ -296,7 +298,7 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
296
298
|
* @param {boolean} isFinal
|
|
297
299
|
* @returns {void}
|
|
298
300
|
*/
|
|
299
|
-
(0, _defineProperty2.default)(
|
|
301
|
+
(0, _defineProperty2.default)(_this, "sendManualClosedCaption", function (text, timeStamp, csis, isFinal) {
|
|
300
302
|
// @ts-ignore
|
|
301
303
|
if (!_this.webex.internal.llm.isConnected()) return;
|
|
302
304
|
|
|
@@ -333,7 +335,7 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
333
335
|
* @param {string} [languageCode] - Optional Parameter for spoken language code. Defaults to English
|
|
334
336
|
* @returns {Promise}
|
|
335
337
|
*/
|
|
336
|
-
(0, _defineProperty2.default)(
|
|
338
|
+
(0, _defineProperty2.default)(_this, "requestTurnOnCaptions", function (languageCode) {
|
|
337
339
|
_this.captionStatus = _constants.TURN_ON_CAPTION_STATUS.SENDING;
|
|
338
340
|
|
|
339
341
|
// only set the spoken language if it is provided
|
|
@@ -366,14 +368,14 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
366
368
|
* is announce processing
|
|
367
369
|
* @returns {boolean}
|
|
368
370
|
*/
|
|
369
|
-
(0, _defineProperty2.default)(
|
|
371
|
+
(0, _defineProperty2.default)(_this, "isAnnounceProcessing", function () {
|
|
370
372
|
return [_constants.ANNOUNCE_STATUS.JOINING, _constants.ANNOUNCE_STATUS.JOINED].includes(_this.announceStatus);
|
|
371
373
|
});
|
|
372
374
|
/**
|
|
373
375
|
* announce to voicea data chanel
|
|
374
376
|
* @returns {void}
|
|
375
377
|
*/
|
|
376
|
-
(0, _defineProperty2.default)(
|
|
378
|
+
(0, _defineProperty2.default)(_this, "announce", function () {
|
|
377
379
|
if (_this.isAnnounceProcessing()) return;
|
|
378
380
|
// @ts-ignore
|
|
379
381
|
if (!_this.webex.internal.llm.isConnected()) {
|
|
@@ -385,7 +387,7 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
385
387
|
* is turn on caption processing
|
|
386
388
|
* @returns {boolean}
|
|
387
389
|
*/
|
|
388
|
-
(0, _defineProperty2.default)(
|
|
390
|
+
(0, _defineProperty2.default)(_this, "isCaptionProcessing", function () {
|
|
389
391
|
return [_constants.TURN_ON_CAPTION_STATUS.SENDING, _constants.TURN_ON_CAPTION_STATUS.ENABLED].includes(_this.captionStatus);
|
|
390
392
|
});
|
|
391
393
|
/**
|
|
@@ -393,25 +395,25 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
393
395
|
* @param {string} [spokenLanguage] - Optional Spoken language code
|
|
394
396
|
* @returns {Promise}
|
|
395
397
|
*/
|
|
396
|
-
(0, _defineProperty2.default)(
|
|
397
|
-
var _ref = (0, _asyncToGenerator2.default)(
|
|
398
|
-
return _regenerator.default.wrap(function
|
|
398
|
+
(0, _defineProperty2.default)(_this, "turnOnCaptions", /*#__PURE__*/function () {
|
|
399
|
+
var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(spokenLanguage) {
|
|
400
|
+
return _regenerator.default.wrap(function (_context) {
|
|
399
401
|
while (1) switch (_context.prev = _context.next) {
|
|
400
402
|
case 0:
|
|
401
403
|
if (!(_this.captionStatus === _constants.TURN_ON_CAPTION_STATUS.SENDING)) {
|
|
402
|
-
_context.next =
|
|
404
|
+
_context.next = 1;
|
|
403
405
|
break;
|
|
404
406
|
}
|
|
405
407
|
return _context.abrupt("return", undefined);
|
|
406
|
-
case
|
|
408
|
+
case 1:
|
|
407
409
|
if (_this.webex.internal.llm.isConnected()) {
|
|
408
|
-
_context.next =
|
|
410
|
+
_context.next = 2;
|
|
409
411
|
break;
|
|
410
412
|
}
|
|
411
413
|
throw new Error('can not turn on captions before llm connected');
|
|
412
|
-
case
|
|
414
|
+
case 2:
|
|
413
415
|
return _context.abrupt("return", _this.requestTurnOnCaptions(spokenLanguage));
|
|
414
|
-
case
|
|
416
|
+
case 3:
|
|
415
417
|
case "end":
|
|
416
418
|
return _context.stop();
|
|
417
419
|
}
|
|
@@ -427,7 +429,7 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
427
429
|
* @param {string} spokenLanguage language code for spoken language
|
|
428
430
|
* @returns {Promise}
|
|
429
431
|
*/
|
|
430
|
-
(0, _defineProperty2.default)(
|
|
432
|
+
(0, _defineProperty2.default)(_this, "toggleTranscribing", function (activate, spokenLanguage) {
|
|
431
433
|
// @ts-ignore
|
|
432
434
|
return _this.request({
|
|
433
435
|
method: 'PUT',
|
|
@@ -451,7 +453,7 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
451
453
|
* @param {boolean} enable true means to turn on manual caption, false means to turn off
|
|
452
454
|
* @returns {Promise}
|
|
453
455
|
*/
|
|
454
|
-
(0, _defineProperty2.default)(
|
|
456
|
+
(0, _defineProperty2.default)(_this, "toggleManualCaption", function (enable) {
|
|
455
457
|
if (_this.toggleManualCaptionStatus === _constants.TOGGLE_MANUAL_CAPTION_STATUS.SENDING) return undefined;
|
|
456
458
|
_this.toggleManualCaptionStatus = _constants.TOGGLE_MANUAL_CAPTION_STATUS.SENDING;
|
|
457
459
|
|
|
@@ -479,7 +481,7 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
479
481
|
* @param {string} meetingId
|
|
480
482
|
* @returns {void}
|
|
481
483
|
*/
|
|
482
|
-
(0, _defineProperty2.default)(
|
|
484
|
+
(0, _defineProperty2.default)(_this, "onSpokenLanguageUpdate", function (languageCode, meetingId) {
|
|
483
485
|
// @ts-ignore
|
|
484
486
|
_this.trigger(_constants.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, {
|
|
485
487
|
languageCode: languageCode,
|
|
@@ -491,14 +493,14 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
491
493
|
* get caption status
|
|
492
494
|
* @returns {string}
|
|
493
495
|
*/
|
|
494
|
-
(0, _defineProperty2.default)(
|
|
496
|
+
(0, _defineProperty2.default)(_this, "getCaptionStatus", function () {
|
|
495
497
|
return _this.captionStatus;
|
|
496
498
|
});
|
|
497
499
|
/**
|
|
498
500
|
* get announce status
|
|
499
501
|
* @returns {string}
|
|
500
502
|
*/
|
|
501
|
-
(0, _defineProperty2.default)(
|
|
503
|
+
(0, _defineProperty2.default)(_this, "getAnnounceStatus", function () {
|
|
502
504
|
return _this.announceStatus;
|
|
503
505
|
});
|
|
504
506
|
_this.seqNum = 1;
|
|
@@ -510,7 +512,8 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
510
512
|
_this.currentSpokenLanguage = _constants.DEFAULT_SPOKEN_LANGUAGE;
|
|
511
513
|
return _this;
|
|
512
514
|
}
|
|
513
|
-
(0,
|
|
515
|
+
(0, _inherits2.default)(VoiceaChannel, _WebexPlugin);
|
|
516
|
+
return (0, _createClass2.default)(VoiceaChannel, [{
|
|
514
517
|
key: "listenToEvents",
|
|
515
518
|
value:
|
|
516
519
|
/**
|
|
@@ -543,7 +546,6 @@ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin)
|
|
|
543
546
|
this.currentSpokenLanguage = undefined;
|
|
544
547
|
}
|
|
545
548
|
}]);
|
|
546
|
-
return VoiceaChannel;
|
|
547
549
|
}(_webexCore.WebexPlugin);
|
|
548
550
|
var _default = exports.default = VoiceaChannel;
|
|
549
551
|
//# sourceMappingURL=voicea.js.map
|
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","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","VoiceaChannel","exports","_WebexPlugin","_inherits2","_super","_this","_classCallCheck2","_len","args","Array","_key","concat","_assertThisInitialized2","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","_callee$","_context","prev","next","abrupt","requestTurnOnCaptions","stop","_x","activate","transcribing","turnOnCaptions","enable","toggleManualCaptionStatus","TOGGLE_MANUAL_CAPTION_STATUS","manualCaption","meetingId","DEFAULT_SPOKEN_LANGUAGE","_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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"}
|
|
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/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 | 'manual_caption_interim_results'\n | 'manual_caption_interim_result'\n | 'manual_caption_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 timestamp: string;\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 id: string;\n sender: string;\n data_source: string;\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 language: 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 onSpokenLanguageUpdate: (languageCode: string, meetingId: string) => void;\n requestLanguage: (languageCode: string) => void;\n turnOnCaptions: () => undefined | Promise<void>;\n toggleTranscribing: (activate: boolean, spokenLanguage: string) => undefined | Promise<void>;\n deregisterEvents: () => void;\n toggleManualCaption: (enable: boolean) => undefined | Promise<void>;\n sendManualClosedCaption: (\n text: string,\n timeStamp: number,\n csis: number[],\n isFinal: boolean\n ) => void;\n}\n\ntype MeetingTranscripts = {\n start_mills?: number;\n end_mills?: number;\n text: string;\n last_packet_timestamp_ms?: number;\n csis: Array<number>;\n transcript_language_code: string;\n translations?: {\n [key: string]: string;\n };\n timestamp?: string;\n};\n\ntype MeetingTranscriptPayload = {\n isFinal: boolean;\n transcriptId: string;\n transcripts: Array<MeetingTranscripts>;\n};\n\nexport type {\n AnnouncementPayload,\n CaptionLanguageResponse,\n TranscriptionResponse,\n Transcription,\n Highlight,\n IVoiceaChannel,\n MeetingTranscriptPayload,\n};\n"],"mappings":""}
|
|
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 | 'manual_caption_interim_results'\n | 'manual_caption_interim_result'\n | 'manual_caption_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 timestamp: string;\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 id: string;\n sender: string;\n data_source: string;\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 language: 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 onSpokenLanguageUpdate: (languageCode: string, meetingId: string) => void;\n requestLanguage: (languageCode: string) => void;\n turnOnCaptions: () => undefined | Promise<void>;\n toggleTranscribing: (activate: boolean, spokenLanguage: string) => undefined | Promise<void>;\n deregisterEvents: () => void;\n toggleManualCaption: (enable: boolean) => undefined | Promise<void>;\n sendManualClosedCaption: (\n text: string,\n timeStamp: number,\n csis: number[],\n isFinal: boolean\n ) => void;\n}\n\ntype MeetingTranscripts = {\n start_mills?: number;\n end_mills?: number;\n text: string;\n last_packet_timestamp_ms?: number;\n csis: Array<number>;\n transcript_language_code: string;\n translations?: {\n [key: string]: string;\n };\n timestamp?: string;\n};\n\ntype MeetingTranscriptPayload = {\n isFinal: boolean;\n transcriptId: string;\n transcripts: Array<MeetingTranscripts>;\n};\n\nexport type {\n AnnouncementPayload,\n CaptionLanguageResponse,\n TranscriptionResponse,\n Transcription,\n Highlight,\n IVoiceaChannel,\n MeetingTranscriptPayload,\n};\n"],"mappings":"","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.4",
|
|
18
|
+
"@webex/internal-plugin-mercury": "3.10.0-next.4",
|
|
19
|
+
"@webex/webex-core": "3.10.0-next.4",
|
|
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.6"
|
|
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
|
});
|