@webex/internal-plugin-voicea 2.60.0 → 2.60.1-next.2

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 CHANGED
@@ -4,8 +4,8 @@ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/defi
4
4
  _Object$defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.VOICEA_RELAY_TYPES = exports.VOICEA = exports.TRANSCRIPTION_TYPE = exports.EVENT_TRIGGERS = void 0;
8
- var EVENT_TRIGGERS = {
7
+ exports.VOICEA_RELAY_TYPES = exports.VOICEA = exports.TURN_ON_CAPTION_STATUS = exports.TRANSCRIPTION_TYPE = exports.EVENT_TRIGGERS = exports.ANNOUNCE_STATUS = void 0;
8
+ var EVENT_TRIGGERS = exports.EVENT_TRIGGERS = {
9
9
  VOICEA_ANNOUNCEMENT: 'voicea:announcement',
10
10
  CAPTION_LANGUAGE_UPDATE: 'voicea:captionLanguageUpdate',
11
11
  SPOKEN_LANGUAGE_UPDATE: 'voicea:spokenLanguageUpdate',
@@ -16,16 +16,14 @@ var EVENT_TRIGGERS = {
16
16
  EVA_COMMAND: 'voicea:wxa',
17
17
  HIGHLIGHT_CREATED: 'voicea:highlightCreated'
18
18
  };
19
- exports.EVENT_TRIGGERS = EVENT_TRIGGERS;
20
- var VOICEA_RELAY_TYPES = {
19
+ var VOICEA_RELAY_TYPES = exports.VOICEA_RELAY_TYPES = {
21
20
  ANNOUNCEMENT: 'voicea.annc',
22
21
  CLIENT_ANNOUNCEMENT: 'client.annc',
23
22
  TRANSLATION_REQUEST: 'voicea.transl.req',
24
23
  TRANSLATION_RESPONSE: 'voicea.transl.rsp',
25
24
  TRANSCRIPTION: 'voicea.transcription'
26
25
  };
27
- exports.VOICEA_RELAY_TYPES = VOICEA_RELAY_TYPES;
28
- var TRANSCRIPTION_TYPE = {
26
+ var TRANSCRIPTION_TYPE = exports.TRANSCRIPTION_TYPE = {
29
27
  UNKNOWN: 'unknown',
30
28
  EVA_WAKE: 'eva_wake',
31
29
  EVA_THANKS: 'eva_thanks',
@@ -34,7 +32,15 @@ var TRANSCRIPTION_TYPE = {
34
32
  TRANSCRIPT_INTERIM_RESULTS: 'transcript_interim_results',
35
33
  TRANSCRIPT_FINAL_RESULT: 'transcript_final_result'
36
34
  };
37
- exports.TRANSCRIPTION_TYPE = TRANSCRIPTION_TYPE;
38
- var VOICEA = 'voicea';
39
- exports.VOICEA = VOICEA;
35
+ var VOICEA = exports.VOICEA = 'voicea';
36
+ var ANNOUNCE_STATUS = exports.ANNOUNCE_STATUS = {
37
+ IDLE: 'idle',
38
+ JOINED: 'joined',
39
+ JOINING: 'joining'
40
+ };
41
+ var TURN_ON_CAPTION_STATUS = exports.TURN_ON_CAPTION_STATUS = {
42
+ IDLE: 'idle',
43
+ ENABLED: 'enabled',
44
+ SENDING: 'sending'
45
+ };
40
46
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["EVENT_TRIGGERS","VOICEA_ANNOUNCEMENT","CAPTION_LANGUAGE_UPDATE","SPOKEN_LANGUAGE_UPDATE","CAPTIONS_TURNED_ON","TRANSCRIBING_ON","TRANSCRIBING_OFF","NEW_CAPTION","EVA_COMMAND","HIGHLIGHT_CREATED","exports","VOICEA_RELAY_TYPES","ANNOUNCEMENT","CLIENT_ANNOUNCEMENT","TRANSLATION_REQUEST","TRANSLATION_RESPONSE","TRANSCRIPTION","TRANSCRIPTION_TYPE","UNKNOWN","EVA_WAKE","EVA_THANKS","EVA_CANCEL","TRANSCRIPT_INTERIM_RESULTS","TRANSCRIPT_FINAL_RESULT","VOICEA"],"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};\n\nexport const VOICEA_RELAY_TYPES = {\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\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};\n\nexport const VOICEA = 'voicea';\n"],"mappings":";;;;;;;AAAO,IAAMA,cAAc,GAAG;EAC5BC,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;AACrB,CAAC;AAACC,OAAA,CAAAV,cAAA,GAAAA,cAAA;AAEK,IAAMW,kBAAkB,GAAG;EAChCC,YAAY,EAAE,aAAa;EAC3BC,mBAAmB,EAAE,aAAa;EAClCC,mBAAmB,EAAE,mBAAmB;EACxCC,oBAAoB,EAAE,mBAAmB;EACzCC,aAAa,EAAE;AACjB,CAAC;AAACN,OAAA,CAAAC,kBAAA,GAAAA,kBAAA;AAEK,IAAMM,kBAAkB,GAAG;EAChCC,OAAO,EAAE,SAAS;EAClBC,QAAQ,EAAE,UAAU;EACpBC,UAAU,EAAE,YAAY;EACxBC,UAAU,EAAE,YAAY;EACxBZ,iBAAiB,EAAE,mBAAmB;EACtCa,0BAA0B,EAAE,4BAA4B;EACxDC,uBAAuB,EAAE;AAC3B,CAAC;AAACb,OAAA,CAAAO,kBAAA,GAAAA,kBAAA;AAEK,IAAMO,MAAM,GAAG,QAAQ;AAACd,OAAA,CAAAc,MAAA,GAAAA,MAAA"}
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","VOICEA_RELAY_TYPES","ANNOUNCEMENT","CLIENT_ANNOUNCEMENT","TRANSLATION_REQUEST","TRANSLATION_RESPONSE","TRANSCRIPTION","TRANSCRIPTION_TYPE","UNKNOWN","EVA_WAKE","EVA_THANKS","EVA_CANCEL","TRANSCRIPT_INTERIM_RESULTS","TRANSCRIPT_FINAL_RESULT","VOICEA","ANNOUNCE_STATUS","IDLE","JOINED","JOINING","TURN_ON_CAPTION_STATUS","ENABLED","SENDING"],"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};\n\nexport const VOICEA_RELAY_TYPES = {\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\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};\n\nexport const VOICEA = 'voicea';\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"],"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;AACrB,CAAC;AAEM,IAAMC,kBAAkB,GAAAV,OAAA,CAAAU,kBAAA,GAAG;EAChCC,YAAY,EAAE,aAAa;EAC3BC,mBAAmB,EAAE,aAAa;EAClCC,mBAAmB,EAAE,mBAAmB;EACxCC,oBAAoB,EAAE,mBAAmB;EACzCC,aAAa,EAAE;AACjB,CAAC;AAEM,IAAMC,kBAAkB,GAAAhB,OAAA,CAAAgB,kBAAA,GAAG;EAChCC,OAAO,EAAE,SAAS;EAClBC,QAAQ,EAAE,UAAU;EACpBC,UAAU,EAAE,YAAY;EACxBC,UAAU,EAAE,YAAY;EACxBX,iBAAiB,EAAE,mBAAmB;EACtCY,0BAA0B,EAAE,4BAA4B;EACxDC,uBAAuB,EAAE;AAC3B,CAAC;AAEM,IAAMC,MAAM,GAAAvB,OAAA,CAAAuB,MAAA,GAAG,QAAQ;AAEvB,IAAMC,eAAe,GAAAxB,OAAA,CAAAwB,eAAA,GAAG;EAC7BC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE,QAAQ;EAChBC,OAAO,EAAE;AACX,CAAC;AAEM,IAAMC,sBAAsB,GAAA5B,OAAA,CAAA4B,sBAAA,GAAG;EACpCH,IAAI,EAAE,MAAM;EACZI,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE;AACX,CAAC"}
package/dist/index.js CHANGED
@@ -16,7 +16,7 @@ _Object$defineProperty(exports, "default", {
16
16
  });
17
17
  var WebexCore = _interopRequireWildcard(require("@webex/webex-core"));
18
18
  var _voicea = _interopRequireDefault(require("./voicea"));
19
- function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+ function _getRequireWildcardCache(e) { if ("function" != typeof _WeakMap) return null; var r = new _WeakMap(), t = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
20
+ 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; }
21
21
  WebexCore.registerInternalPlugin('voicea', _voicea.default, {});
22
22
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["WebexCore","_interopRequireWildcard","require","_voicea","_interopRequireDefault","_getRequireWildcardCache","nodeInterop","_WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","_Object$defineProperty","_Object$getOwnPropertyDescriptor","key","Object","prototype","hasOwnProperty","call","desc","set","registerInternalPlugin","VoiceaChannel"],"sources":["index.ts"],"sourcesContent":["import * as WebexCore from '@webex/webex-core';\n\nimport VoiceaChannel from './voicea';\n\nWebexCore.registerInternalPlugin('voicea', VoiceaChannel, {});\n\nexport {default} from './voicea';\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAqC,SAAAG,yBAAAC,WAAA,eAAAC,QAAA,kCAAAC,iBAAA,OAAAD,QAAA,QAAAE,gBAAA,OAAAF,QAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAL,wBAAAS,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAE,OAAA,CAAAF,GAAA,yBAAAA,GAAA,4BAAAG,OAAA,EAAAH,GAAA,UAAAI,KAAA,GAAAT,wBAAA,CAAAC,WAAA,OAAAQ,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAL,GAAA,YAAAI,KAAA,CAAAE,GAAA,CAAAN,GAAA,SAAAO,MAAA,WAAAC,qBAAA,GAAAC,sBAAA,IAAAC,gCAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAC,MAAA,CAAAC,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAf,GAAA,EAAAW,GAAA,SAAAK,IAAA,GAAAR,qBAAA,GAAAE,gCAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAK,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,sBAAA,CAAAF,MAAA,EAAAI,GAAA,EAAAK,IAAA,YAAAT,MAAA,CAAAI,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAJ,MAAA,CAAAJ,OAAA,GAAAH,GAAA,MAAAI,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAjB,GAAA,EAAAO,MAAA,YAAAA,MAAA;AAErCjB,SAAS,CAAC4B,sBAAsB,CAAC,QAAQ,EAAEC,eAAa,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"names":["WebexCore","_interopRequireWildcard","require","_voicea","_interopRequireDefault","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set","registerInternalPlugin","VoiceaChannel"],"sources":["index.ts"],"sourcesContent":["import * as WebexCore from '@webex/webex-core';\n\nimport VoiceaChannel from './voicea';\n\nWebexCore.registerInternalPlugin('voicea', VoiceaChannel, {});\n\nexport {default} from './voicea';\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAqC,SAAAG,yBAAAC,CAAA,6BAAAC,QAAA,mBAAAC,CAAA,OAAAD,QAAA,IAAAE,CAAA,OAAAF,QAAA,YAAAF,wBAAA,YAAAA,yBAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAL,wBAAAK,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,gBAAAK,OAAA,CAAAL,CAAA,0BAAAA,CAAA,WAAAM,OAAA,EAAAN,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAI,GAAA,CAAAP,CAAA,UAAAG,CAAA,CAAAK,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,sBAAA,IAAAC,gCAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAC,MAAA,CAAAC,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAlB,CAAA,EAAAc,CAAA,SAAAK,CAAA,GAAAR,CAAA,GAAAE,gCAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAK,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,sBAAA,CAAAH,CAAA,EAAAK,CAAA,EAAAK,CAAA,IAAAV,CAAA,CAAAK,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAL,CAAA,CAAAH,OAAA,GAAAN,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAiB,GAAA,CAAApB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAErCf,SAAS,CAAC2B,sBAAsB,CAAC,QAAQ,EAAEC,eAAa,EAAE,CAAC,CAAC,CAAC"}
package/dist/utils.js CHANGED
@@ -6,10 +6,9 @@ _Object$defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.millisToMinutesAndSeconds = void 0;
8
8
  // eslint-disable-next-line import/prefer-default-export
9
- var millisToMinutesAndSeconds = function millisToMinutesAndSeconds(millis) {
9
+ var millisToMinutesAndSeconds = exports.millisToMinutesAndSeconds = function millisToMinutesAndSeconds(millis) {
10
10
  var minutes = Math.floor(millis / 60000);
11
11
  var seconds = (millis % 60000 / 1000).toFixed(0);
12
12
  return "".concat(minutes, ":").concat(+seconds < 10 ? '0' : '').concat(seconds);
13
13
  };
14
- exports.millisToMinutesAndSeconds = millisToMinutesAndSeconds;
15
14
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["millisToMinutesAndSeconds","millis","minutes","Math","floor","seconds","toFixed","concat","exports"],"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,GAAG,SAA5BA,yBAAyBA,CAAIC,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;AAACG,OAAA,CAAAR,yBAAA,GAAAA,yBAAA"}
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"}
package/dist/voicea.js CHANGED
@@ -22,13 +22,13 @@ var _webexCore = require("@webex/webex-core");
22
22
  var _constants = require("./constants");
23
23
  var _utils = require("./utils");
24
24
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
25
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
25
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } // eslint-disable-next-line no-unused-vars
26
26
  /**
27
27
  * @description VoiceaChannel to hold single instance of LLM
28
28
  * @export
29
29
  * @class VoiceaChannel
30
30
  */
31
- var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
31
+ var VoiceaChannel = exports.VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
32
32
  (0, _inherits2.default)(VoiceaChannel, _WebexPlugin);
33
33
  var _super = _createSuper(VoiceaChannel);
34
34
  /**
@@ -44,10 +44,11 @@ var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
44
44
  _this = _super.call.apply(_super, [this].concat(args));
45
45
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "namespace", _constants.VOICEA);
46
46
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "seqNum", void 0);
47
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hasVoiceaJoined", void 0);
48
47
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "areCaptionsEnabled", void 0);
49
48
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hasSubscribedToEvents", false);
50
49
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "vmcDeviceId", void 0);
50
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "announceStatus", void 0);
51
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "captionStatus", void 0);
51
52
  /**
52
53
  * @param {Object} e
53
54
  * @returns {undefined}
@@ -57,7 +58,7 @@ var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
57
58
  switch (e.data.relayType) {
58
59
  case _constants.VOICEA_RELAY_TYPES.ANNOUNCEMENT:
59
60
  _this.vmcDeviceId = e.headers.from;
60
- _this.hasVoiceaJoined = true;
61
+ _this.announceStatus = _constants.ANNOUNCE_STATUS.JOINED;
61
62
  _this.processAnnouncementMessage(e.data.voiceaPayload);
62
63
  break;
63
64
  case _constants.VOICEA_RELAY_TYPES.TRANSLATION_RESPONSE:
@@ -182,8 +183,7 @@ var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
182
183
  * @returns {void}
183
184
  */
184
185
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "sendAnnouncement", function () {
185
- // @ts-ignore
186
- if (_this.hasVoiceaJoined || !_this.webex.internal.llm.isConnected()) return;
186
+ _this.announceStatus = _constants.ANNOUNCE_STATUS.JOINING;
187
187
  _this.listenToEvents();
188
188
  // @ts-ignore
189
189
  _this.webex.internal.llm.socket.send({
@@ -261,6 +261,62 @@ var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
261
261
  });
262
262
  _this.seqNum += 1;
263
263
  });
264
+ /**
265
+ * request turn on Captions
266
+ * @returns {Promise}
267
+ */
268
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "requestTurnOnCaptions", function () {
269
+ _this.captionStatus = _constants.TURN_ON_CAPTION_STATUS.SENDING;
270
+ // @ts-ignore
271
+ // eslint-disable-next-line newline-before-return
272
+ return _this.request({
273
+ method: 'PUT',
274
+ // @ts-ignore
275
+ url: "".concat(_this.webex.internal.llm.getLocusUrl(), "/controls/"),
276
+ body: {
277
+ transcribe: {
278
+ caption: true
279
+ }
280
+ }
281
+ }).then(function () {
282
+ _pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
283
+ file: 'voicea',
284
+ function: 'turnOnCaptions'
285
+ }, _constants.EVENT_TRIGGERS.CAPTIONS_TURNED_ON);
286
+ _this.areCaptionsEnabled = true;
287
+ _this.captionStatus = _constants.TURN_ON_CAPTION_STATUS.ENABLED;
288
+ _this.announce();
289
+ }).catch(function () {
290
+ _this.captionStatus = _constants.TURN_ON_CAPTION_STATUS.IDLE;
291
+ throw new Error('turn on captions fail');
292
+ });
293
+ });
294
+ /**
295
+ * is announce processing
296
+ * @returns {boolean}
297
+ */
298
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isAnnounceProcessing", function () {
299
+ return [_constants.ANNOUNCE_STATUS.JOINING, _constants.ANNOUNCE_STATUS.JOINED].includes(_this.announceStatus);
300
+ });
301
+ /**
302
+ * announce to voicea data chanel
303
+ * @returns {void}
304
+ */
305
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "announce", function () {
306
+ if (_this.isAnnounceProcessing()) return;
307
+ // @ts-ignore
308
+ if (!_this.webex.internal.llm.isConnected()) {
309
+ throw new Error('voicea can not announce before llm connected');
310
+ }
311
+ _this.sendAnnouncement();
312
+ });
313
+ /**
314
+ * is turn on caption processing
315
+ * @returns {boolean}
316
+ */
317
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isCaptionProcessing", function () {
318
+ return [_constants.TURN_ON_CAPTION_STATUS.SENDING, _constants.TURN_ON_CAPTION_STATUS.ENABLED].includes(_this.captionStatus);
319
+ });
264
320
  /**
265
321
  * Turn on Captions
266
322
  * @returns {Promise}
@@ -269,30 +325,20 @@ var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
269
325
  return _regenerator.default.wrap(function _callee$(_context) {
270
326
  while (1) switch (_context.prev = _context.next) {
271
327
  case 0:
272
- if (!(_this.hasVoiceaJoined && _this.areCaptionsEnabled)) {
328
+ if (!_this.isCaptionProcessing()) {
273
329
  _context.next = 2;
274
330
  break;
275
331
  }
276
332
  return _context.abrupt("return", undefined);
277
333
  case 2:
278
- return _context.abrupt("return", _this.request({
279
- method: 'PUT',
280
- // @ts-ignore
281
- url: "".concat(_this.webex.internal.llm.getLocusUrl(), "/controls/"),
282
- body: {
283
- transcribe: {
284
- caption: true
285
- }
286
- }
287
- }).then(function () {
288
- _pluginMeetings.TriggerProxy.trigger((0, _assertThisInitialized2.default)(_this), {
289
- file: 'voicea',
290
- function: 'turnOnCaptions'
291
- }, _constants.EVENT_TRIGGERS.CAPTIONS_TURNED_ON);
292
- _this.areCaptionsEnabled = true;
293
- _this.sendAnnouncement();
294
- }));
295
- case 3:
334
+ if (_this.webex.internal.llm.isConnected()) {
335
+ _context.next = 4;
336
+ break;
337
+ }
338
+ throw new Error('can not turn on captions before llm connected');
339
+ case 4:
340
+ return _context.abrupt("return", _this.requestTurnOnCaptions());
341
+ case 5:
296
342
  case "end":
297
343
  return _context.stop();
298
344
  }
@@ -318,7 +364,7 @@ var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
318
364
  }
319
365
  }
320
366
  }).then(function () {
321
- if (activate && !_this.areCaptionsEnabled && !_this.hasVoiceaJoined) _this.turnOnCaptions();
367
+ if (activate && !_this.areCaptionsEnabled) _this.turnOnCaptions();
322
368
  }));
323
369
  case 1:
324
370
  case "end":
@@ -330,10 +376,25 @@ var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
330
376
  return _ref2.apply(this, arguments);
331
377
  };
332
378
  }());
379
+ /**
380
+ * get caption status
381
+ * @returns {string}
382
+ */
383
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getCaptionStatus", function () {
384
+ return _this.captionStatus;
385
+ });
386
+ /**
387
+ * get announce status
388
+ * @returns {string}
389
+ */
390
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getAnnounceStatus", function () {
391
+ return _this.announceStatus;
392
+ });
333
393
  _this.seqNum = 1;
334
- _this.hasVoiceaJoined = false;
335
394
  _this.areCaptionsEnabled = false;
336
395
  _this.vmcDeviceId = undefined;
396
+ _this.announceStatus = _constants.ANNOUNCE_STATUS.IDLE;
397
+ _this.captionStatus = _constants.TURN_ON_CAPTION_STATUS.IDLE;
337
398
  return _this;
338
399
  }
339
400
  (0, _createClass2.default)(VoiceaChannel, [{
@@ -351,21 +412,23 @@ var VoiceaChannel = /*#__PURE__*/function (_WebexPlugin) {
351
412
  }
352
413
  }
353
414
 
354
- // @ts-ignore
415
+ /**
416
+ * Listen to websocket messages
417
+ * @returns {void}
418
+ */
355
419
  }, {
356
420
  key: "deregisterEvents",
357
421
  value: function deregisterEvents() {
358
- this.hasVoiceaJoined = false;
359
422
  this.areCaptionsEnabled = false;
360
423
  this.vmcDeviceId = undefined;
361
424
  // @ts-ignore
362
425
  this.webex.internal.llm.off('event:relay.event', this.eventProcessor);
363
426
  this.hasSubscribedToEvents = false;
427
+ this.announceStatus = _constants.ANNOUNCE_STATUS.IDLE;
428
+ this.captionStatus = _constants.TURN_ON_CAPTION_STATUS.IDLE;
364
429
  }
365
430
  }]);
366
431
  return VoiceaChannel;
367
432
  }(_webexCore.WebexPlugin);
368
- exports.VoiceaChannel = VoiceaChannel;
369
- var _default = VoiceaChannel;
370
- exports.default = _default;
433
+ var _default = exports.default = VoiceaChannel;
371
434
  //# sourceMappingURL=voicea.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_uuid","_interopRequireDefault","require","_pluginMeetings","_webexCore","_constants","_utils","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","VoiceaChannel","_WebexPlugin","_inherits2","_super","_this","_classCallCheck2","_len","length","args","Array","_key","concat","_defineProperty2","_assertThisInitialized2","VOICEA","seqNum","sequenceNumber","data","relayType","VOICEA_RELAY_TYPES","ANNOUNCEMENT","vmcDeviceId","headers","from","hasVoiceaJoined","processAnnouncementMessage","voiceaPayload","TRANSLATION_RESPONSE","processCaptionLanguageResponse","TRANSCRIPTION","processTranscription","type","TRANSCRIPTION_TYPE","TRANSCRIPT_INTERIM_RESULTS","Trigger","trigger","file","function","EVENT_TRIGGERS","NEW_CAPTION","isFinal","transcriptId","transcript_id","transcripts","TRANSCRIPT_FINAL_RESULT","transcript","csis","text","transcriptLanguageCode","transcript_language_code","timestamp","millisToMinutesAndSeconds","end_millis","HIGHLIGHT_CREATED","highlight","highlightId","highlight_id","highlightLabel","highlight_label","highlightSource","highlight_source","EVA_THANKS","EVA_COMMAND","isListening","command_response","EVA_WAKE","EVA_CANCEL","statusCode","CAPTION_LANGUAGE_UPDATE","errorCode","errorMessage","message","_voiceaPayload$transl","_voiceaPayload$transl2","_voiceaPayload$transl3","_voiceaPayload$transl4","_voiceaPayload$ASR$sp","_voiceaPayload$ASR","voiceaLanguageOptions","captionLanguages","translation","allowed_languages","maxLanguages","max_languages","spokenLanguages","ASR","spoken_languages","VOICEA_ANNOUNCEMENT","webex","internal","llm","isConnected","listenToEvents","socket","send","id","recipients","route","getBinding","clientPayload","version","eventType","CLIENT_ANNOUNCEMENT","trackingId","config","trackingIdPrefix","uuid","v4","toString","languageCode","request","method","url","getLocusUrl","body","then","SPOKEN_LANGUAGE_UPDATE","to","translationLanguage","TRANSLATION_REQUEST","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","areCaptionsEnabled","abrupt","undefined","transcribe","caption","CAPTIONS_TURNED_ON","sendAnnouncement","stop","_ref2","_callee2","activate","_callee2$","_context2","transcribing","turnOnCaptions","_x","_createClass2","key","value","hasSubscribedToEvents","on","eventProcessor","deregisterEvents","off","WebexPlugin","exports","_default"],"sources":["voicea.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {TriggerProxy as Trigger} from '@webex/plugin-meetings';\nimport {WebexPlugin, config} from '@webex/webex-core';\n\nimport {EVENT_TRIGGERS, VOICEA_RELAY_TYPES, TRANSCRIPTION_TYPE, VOICEA} from './constants';\n// eslint-disable-next-line no-unused-vars\nimport {\n AnnouncementPayload,\n CaptionLanguageResponse,\n TranscriptionResponse,\n IVoiceaChannel,\n} from './voicea.types';\nimport {millisToMinutesAndSeconds} from './utils';\n\n/**\n * @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 hasVoiceaJoined: boolean;\n\n private areCaptionsEnabled: boolean;\n\n private hasSubscribedToEvents = false;\n\n private vmcDeviceId?: string;\n\n /**\n * @param {Object} e\n * @returns {undefined}\n */\n\n private eventProcessor = (e) => {\n this.seqNum = e.sequenceNumber + 1;\n switch (e.data.relayType) {\n case VOICEA_RELAY_TYPES.ANNOUNCEMENT:\n this.vmcDeviceId = e.headers.from;\n this.hasVoiceaJoined = true;\n this.processAnnouncementMessage(e.data.voiceaPayload);\n break;\n case VOICEA_RELAY_TYPES.TRANSLATION_RESPONSE:\n this.processCaptionLanguageResponse(e.data.voiceaPayload);\n break;\n case VOICEA_RELAY_TYPES.TRANSCRIPTION:\n this.processTranscription(e.data.voiceaPayload);\n break;\n default:\n break;\n }\n };\n\n /**\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 // @ts-ignore\n public deregisterEvents() {\n this.hasVoiceaJoined = false;\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 }\n\n /**\n * Initializes Voicea plugin\n * @param {any} args\n */\n constructor(...args) {\n super(...args);\n this.seqNum = 1;\n this.hasVoiceaJoined = false;\n this.areCaptionsEnabled = false;\n this.vmcDeviceId = undefined;\n }\n\n /**\n * Process Transcript and send alert\n * @param {TranscriptionResponse} voiceaPayload\n * @returns {void}\n */\n private processTranscription = (voiceaPayload: TranscriptionResponse): void => {\n switch (voiceaPayload.type) {\n case TRANSCRIPTION_TYPE.TRANSCRIPT_INTERIM_RESULTS:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.NEW_CAPTION,\n {\n isFinal: false,\n transcriptId: voiceaPayload.transcript_id,\n transcripts: voiceaPayload.transcripts,\n }\n );\n break;\n\n case TRANSCRIPTION_TYPE.TRANSCRIPT_FINAL_RESULT:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.NEW_CAPTION,\n {\n isFinal: true,\n transcriptId: voiceaPayload.transcript_id,\n transcript: {\n csis: voiceaPayload.csis,\n text: voiceaPayload.transcript.text,\n transcriptLanguageCode: voiceaPayload.transcript.transcript_language_code,\n },\n timestamp: millisToMinutesAndSeconds(voiceaPayload.transcript.end_millis),\n }\n );\n break;\n\n case TRANSCRIPTION_TYPE.HIGHLIGHT_CREATED:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.HIGHLIGHT_CREATED,\n {\n csis: voiceaPayload.highlight.csis,\n highlightId: voiceaPayload.highlight.highlight_id,\n text: voiceaPayload.highlight.transcript,\n highlightLabel: voiceaPayload.highlight.highlight_label,\n highlightSource: voiceaPayload.highlight.highlight_source,\n timestamp: millisToMinutesAndSeconds(voiceaPayload.highlight.end_millis),\n }\n );\n break;\n\n case TRANSCRIPTION_TYPE.EVA_THANKS:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.EVA_COMMAND,\n {\n isListening: false,\n text: voiceaPayload.command_response,\n }\n );\n break;\n\n case TRANSCRIPTION_TYPE.EVA_WAKE:\n case TRANSCRIPTION_TYPE.EVA_CANCEL:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.EVA_COMMAND,\n {\n isListening: voiceaPayload.type === TRANSCRIPTION_TYPE.EVA_WAKE,\n }\n );\n break;\n\n default:\n break;\n }\n };\n\n /**\n * Processes Caption Language Response\n * @param {CaptionLanguageResponse} voiceaPayload\n * @returns {void}\n */\n private processCaptionLanguageResponse = (voiceaPayload: CaptionLanguageResponse): void => {\n if (voiceaPayload.statusCode === 200) {\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processCaptionLanguageResponse',\n },\n EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE,\n {statusCode: 200}\n );\n } else {\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processCaptionLanguageResponse',\n },\n EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE,\n {statusCode: voiceaPayload.errorCode, errorMessage: voiceaPayload.message}\n );\n }\n };\n\n /**\n * processes voicea announcement response and triggers event\n * @param {Object} voiceaPayload\n * @returns {void}\n */\n private processAnnouncementMessage = (voiceaPayload: AnnouncementPayload): void => {\n const voiceaLanguageOptions = {\n captionLanguages: voiceaPayload?.translation?.allowed_languages ?? [],\n maxLanguages: voiceaPayload?.translation?.max_languages ?? 0,\n spokenLanguages: voiceaPayload?.ASR?.spoken_languages ?? [],\n };\n\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processAnnouncementMessage',\n },\n EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT,\n voiceaLanguageOptions\n );\n };\n\n /**\n * Sends Announcement to add voicea to the meeting\n * @returns {void}\n */\n private sendAnnouncement = (): void => {\n // @ts-ignore\n if (this.hasVoiceaJoined || !this.webex.internal.llm.isConnected()) return;\n\n this.listenToEvents();\n // @ts-ignore\n this.webex.internal.llm.socket.send({\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n // @ts-ignore\n route: this.webex.internal.llm.getBinding(),\n },\n headers: {},\n data: {\n clientPayload: {\n version: 'v2',\n },\n eventType: 'relay.event',\n relayType: VOICEA_RELAY_TYPES.CLIENT_ANNOUNCEMENT,\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n });\n this.seqNum += 1;\n };\n\n /**\n * Set Spoken Language for the meeting\n * @param {string} languageCode\n * @returns {Promise}\n */\n public setSpokenLanguage = (languageCode: string): Promise<void> =>\n // @ts-ignore\n this.request({\n method: 'PUT',\n // @ts-ignore\n url: `${this.webex.internal.llm.getLocusUrl()}/controls/`,\n body: {\n languageCode,\n },\n }).then(() => {\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'setSpokenLanguage',\n },\n EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE,\n {languageCode}\n );\n });\n\n /**\n * Request Language translation\n * @param {string} languageCode\n * @returns {void}\n */\n public requestLanguage = (languageCode: string): void => {\n // @ts-ignore\n if (!this.webex.internal.llm.isConnected()) return;\n // @ts-ignore\n this.webex.internal.llm.socket.send({\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n // @ts-ignore\n route: this.webex.internal.llm.getBinding(),\n },\n headers: {\n to: this.vmcDeviceId,\n },\n data: {\n clientPayload: {\n translationLanguage: languageCode,\n id: uuid.v4(),\n },\n eventType: 'relay.event',\n relayType: VOICEA_RELAY_TYPES.TRANSLATION_REQUEST,\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n });\n this.seqNum += 1;\n };\n\n /**\n * Turn on Captions\n * @returns {Promise}\n */\n public turnOnCaptions = async (): undefined | Promise<void> => {\n if (this.hasVoiceaJoined && this.areCaptionsEnabled) return undefined;\n // @ts-ignore\n // eslint-disable-next-line newline-before-return\n return this.request({\n method: 'PUT',\n // @ts-ignore\n url: `${this.webex.internal.llm.getLocusUrl()}/controls/`,\n body: {\n transcribe: {caption: true},\n },\n }).then(() => {\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'turnOnCaptions',\n },\n EVENT_TRIGGERS.CAPTIONS_TURNED_ON\n );\n this.areCaptionsEnabled = true;\n this.sendAnnouncement();\n });\n };\n\n /**\n * Toggle transcribing for highlights\n * @param {bool} activate if true transcribing is turned on\n * @returns {Promise}\n */\n public toggleTranscribing = async (activate: boolean): undefined | Promise<void> => {\n // @ts-ignore\n return this.request({\n method: 'PUT',\n // @ts-ignore\n url: `${this.webex.internal.llm.getLocusUrl()}/controls/`,\n body: {\n transcribe: {transcribing: activate},\n },\n }).then(() => {\n if (activate && !this.areCaptionsEnabled && !this.hasVoiceaJoined) this.turnOnCaptions();\n });\n };\n}\n\nexport default VoiceaChannel;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_uuid","_interopRequireDefault","require","_pluginMeetings","_webexCore","_constants","_utils","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","VoiceaChannel","exports","_WebexPlugin","_inherits2","_super","_this","_classCallCheck2","_len","length","args","Array","_key","concat","_defineProperty2","_assertThisInitialized2","VOICEA","seqNum","sequenceNumber","data","relayType","VOICEA_RELAY_TYPES","ANNOUNCEMENT","vmcDeviceId","headers","from","announceStatus","ANNOUNCE_STATUS","JOINED","processAnnouncementMessage","voiceaPayload","TRANSLATION_RESPONSE","processCaptionLanguageResponse","TRANSCRIPTION","processTranscription","type","TRANSCRIPTION_TYPE","TRANSCRIPT_INTERIM_RESULTS","Trigger","trigger","file","function","EVENT_TRIGGERS","NEW_CAPTION","isFinal","transcriptId","transcript_id","transcripts","TRANSCRIPT_FINAL_RESULT","transcript","csis","text","transcriptLanguageCode","transcript_language_code","timestamp","millisToMinutesAndSeconds","end_millis","HIGHLIGHT_CREATED","highlight","highlightId","highlight_id","highlightLabel","highlight_label","highlightSource","highlight_source","EVA_THANKS","EVA_COMMAND","isListening","command_response","EVA_WAKE","EVA_CANCEL","statusCode","CAPTION_LANGUAGE_UPDATE","errorCode","errorMessage","message","_voiceaPayload$transl","_voiceaPayload$transl2","_voiceaPayload$transl3","_voiceaPayload$transl4","_voiceaPayload$ASR$sp","_voiceaPayload$ASR","voiceaLanguageOptions","captionLanguages","translation","allowed_languages","maxLanguages","max_languages","spokenLanguages","ASR","spoken_languages","VOICEA_ANNOUNCEMENT","JOINING","listenToEvents","webex","internal","llm","socket","send","id","recipients","route","getBinding","clientPayload","version","eventType","CLIENT_ANNOUNCEMENT","trackingId","config","trackingIdPrefix","uuid","v4","toString","languageCode","request","method","url","getLocusUrl","body","then","SPOKEN_LANGUAGE_UPDATE","isConnected","to","translationLanguage","TRANSLATION_REQUEST","captionStatus","TURN_ON_CAPTION_STATUS","SENDING","transcribe","caption","CAPTIONS_TURNED_ON","areCaptionsEnabled","ENABLED","announce","catch","IDLE","Error","includes","isAnnounceProcessing","sendAnnouncement","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","isCaptionProcessing","abrupt","undefined","requestTurnOnCaptions","stop","_ref2","_callee2","activate","_callee2$","_context2","transcribing","turnOnCaptions","_x","_createClass2","key","value","hasSubscribedToEvents","on","eventProcessor","deregisterEvents","off","WebexPlugin","_default"],"sources":["voicea.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {TriggerProxy as Trigger} from '@webex/plugin-meetings';\nimport {WebexPlugin, config} from '@webex/webex-core';\n\nimport {\n EVENT_TRIGGERS,\n VOICEA_RELAY_TYPES,\n TRANSCRIPTION_TYPE,\n VOICEA,\n ANNOUNCE_STATUS,\n TURN_ON_CAPTION_STATUS,\n} from './constants';\n// eslint-disable-next-line no-unused-vars\nimport {\n AnnouncementPayload,\n CaptionLanguageResponse,\n TranscriptionResponse,\n IVoiceaChannel,\n} from './voicea.types';\nimport {millisToMinutesAndSeconds} from './utils';\n\n/**\n * @description VoiceaChannel to hold single instance of LLM\n * @export\n * @class VoiceaChannel\n */\nexport class VoiceaChannel extends WebexPlugin implements IVoiceaChannel {\n namespace = VOICEA;\n\n private seqNum: number;\n\n private areCaptionsEnabled: boolean;\n\n private hasSubscribedToEvents = false;\n\n private vmcDeviceId?: string;\n\n private announceStatus: string;\n\n private captionStatus: string;\n\n /**\n * @param {Object} e\n * @returns {undefined}\n */\n\n private eventProcessor = (e) => {\n this.seqNum = e.sequenceNumber + 1;\n switch (e.data.relayType) {\n case VOICEA_RELAY_TYPES.ANNOUNCEMENT:\n this.vmcDeviceId = e.headers.from;\n this.announceStatus = ANNOUNCE_STATUS.JOINED;\n this.processAnnouncementMessage(e.data.voiceaPayload);\n break;\n case VOICEA_RELAY_TYPES.TRANSLATION_RESPONSE:\n this.processCaptionLanguageResponse(e.data.voiceaPayload);\n break;\n case VOICEA_RELAY_TYPES.TRANSCRIPTION:\n this.processTranscription(e.data.voiceaPayload);\n break;\n default:\n break;\n }\n };\n\n /**\n * Listen to websocket messages\n * @returns {undefined}\n */\n private listenToEvents() {\n if (!this.hasSubscribedToEvents) {\n // @ts-ignore\n this.webex.internal.llm.on('event:relay.event', this.eventProcessor);\n this.hasSubscribedToEvents = true;\n }\n }\n\n /**\n * Listen to websocket messages\n * @returns {void}\n */\n public deregisterEvents() {\n this.areCaptionsEnabled = false;\n this.vmcDeviceId = undefined;\n // @ts-ignore\n this.webex.internal.llm.off('event:relay.event', this.eventProcessor);\n this.hasSubscribedToEvents = false;\n this.announceStatus = ANNOUNCE_STATUS.IDLE;\n this.captionStatus = TURN_ON_CAPTION_STATUS.IDLE;\n }\n\n /**\n * Initializes Voicea plugin\n * @param {any} args\n */\n constructor(...args) {\n super(...args);\n this.seqNum = 1;\n this.areCaptionsEnabled = false;\n this.vmcDeviceId = undefined;\n this.announceStatus = ANNOUNCE_STATUS.IDLE;\n this.captionStatus = TURN_ON_CAPTION_STATUS.IDLE;\n }\n\n /**\n * Process Transcript and send alert\n * @param {TranscriptionResponse} voiceaPayload\n * @returns {void}\n */\n private processTranscription = (voiceaPayload: TranscriptionResponse): void => {\n switch (voiceaPayload.type) {\n case TRANSCRIPTION_TYPE.TRANSCRIPT_INTERIM_RESULTS:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.NEW_CAPTION,\n {\n isFinal: false,\n transcriptId: voiceaPayload.transcript_id,\n transcripts: voiceaPayload.transcripts,\n }\n );\n break;\n\n case TRANSCRIPTION_TYPE.TRANSCRIPT_FINAL_RESULT:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.NEW_CAPTION,\n {\n isFinal: true,\n transcriptId: voiceaPayload.transcript_id,\n transcript: {\n csis: voiceaPayload.csis,\n text: voiceaPayload.transcript.text,\n transcriptLanguageCode: voiceaPayload.transcript.transcript_language_code,\n },\n timestamp: millisToMinutesAndSeconds(voiceaPayload.transcript.end_millis),\n }\n );\n break;\n\n case TRANSCRIPTION_TYPE.HIGHLIGHT_CREATED:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.HIGHLIGHT_CREATED,\n {\n csis: voiceaPayload.highlight.csis,\n highlightId: voiceaPayload.highlight.highlight_id,\n text: voiceaPayload.highlight.transcript,\n highlightLabel: voiceaPayload.highlight.highlight_label,\n highlightSource: voiceaPayload.highlight.highlight_source,\n timestamp: millisToMinutesAndSeconds(voiceaPayload.highlight.end_millis),\n }\n );\n break;\n\n case TRANSCRIPTION_TYPE.EVA_THANKS:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.EVA_COMMAND,\n {\n isListening: false,\n text: voiceaPayload.command_response,\n }\n );\n break;\n\n case TRANSCRIPTION_TYPE.EVA_WAKE:\n case TRANSCRIPTION_TYPE.EVA_CANCEL:\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processTranscription',\n },\n EVENT_TRIGGERS.EVA_COMMAND,\n {\n isListening: voiceaPayload.type === TRANSCRIPTION_TYPE.EVA_WAKE,\n }\n );\n break;\n\n default:\n break;\n }\n };\n\n /**\n * Processes Caption Language Response\n * @param {CaptionLanguageResponse} voiceaPayload\n * @returns {void}\n */\n private processCaptionLanguageResponse = (voiceaPayload: CaptionLanguageResponse): void => {\n if (voiceaPayload.statusCode === 200) {\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processCaptionLanguageResponse',\n },\n EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE,\n {statusCode: 200}\n );\n } else {\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processCaptionLanguageResponse',\n },\n EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE,\n {statusCode: voiceaPayload.errorCode, errorMessage: voiceaPayload.message}\n );\n }\n };\n\n /**\n * processes voicea announcement response and triggers event\n * @param {Object} voiceaPayload\n * @returns {void}\n */\n private processAnnouncementMessage = (voiceaPayload: AnnouncementPayload): void => {\n const voiceaLanguageOptions = {\n captionLanguages: voiceaPayload?.translation?.allowed_languages ?? [],\n maxLanguages: voiceaPayload?.translation?.max_languages ?? 0,\n spokenLanguages: voiceaPayload?.ASR?.spoken_languages ?? [],\n };\n\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processAnnouncementMessage',\n },\n EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT,\n voiceaLanguageOptions\n );\n };\n\n /**\n * Sends Announcement to add voicea to the meeting\n * @returns {void}\n */\n private sendAnnouncement = (): void => {\n this.announceStatus = ANNOUNCE_STATUS.JOINING;\n this.listenToEvents();\n // @ts-ignore\n this.webex.internal.llm.socket.send({\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n // @ts-ignore\n route: this.webex.internal.llm.getBinding(),\n },\n headers: {},\n data: {\n clientPayload: {\n version: 'v2',\n },\n eventType: 'relay.event',\n relayType: VOICEA_RELAY_TYPES.CLIENT_ANNOUNCEMENT,\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n });\n this.seqNum += 1;\n };\n\n /**\n * Set Spoken Language for the meeting\n * @param {string} languageCode\n * @returns {Promise}\n */\n public setSpokenLanguage = (languageCode: string): Promise<void> =>\n // @ts-ignore\n this.request({\n method: 'PUT',\n // @ts-ignore\n url: `${this.webex.internal.llm.getLocusUrl()}/controls/`,\n body: {\n languageCode,\n },\n }).then(() => {\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'setSpokenLanguage',\n },\n EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE,\n {languageCode}\n );\n });\n\n /**\n * Request Language translation\n * @param {string} languageCode\n * @returns {void}\n */\n public requestLanguage = (languageCode: string): void => {\n // @ts-ignore\n if (!this.webex.internal.llm.isConnected()) return;\n // @ts-ignore\n this.webex.internal.llm.socket.send({\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n // @ts-ignore\n route: this.webex.internal.llm.getBinding(),\n },\n headers: {\n to: this.vmcDeviceId,\n },\n data: {\n clientPayload: {\n translationLanguage: languageCode,\n id: uuid.v4(),\n },\n eventType: 'relay.event',\n relayType: VOICEA_RELAY_TYPES.TRANSLATION_REQUEST,\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n });\n this.seqNum += 1;\n };\n\n /**\n * request turn on Captions\n * @returns {Promise}\n */\n private requestTurnOnCaptions = (): undefined | Promise<void> => {\n this.captionStatus = TURN_ON_CAPTION_STATUS.SENDING;\n // @ts-ignore\n // eslint-disable-next-line newline-before-return\n return this.request({\n method: 'PUT',\n // @ts-ignore\n url: `${this.webex.internal.llm.getLocusUrl()}/controls/`,\n body: {\n transcribe: {caption: true},\n },\n })\n .then(() => {\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'turnOnCaptions',\n },\n EVENT_TRIGGERS.CAPTIONS_TURNED_ON\n );\n this.areCaptionsEnabled = true;\n this.captionStatus = TURN_ON_CAPTION_STATUS.ENABLED;\n this.announce();\n })\n .catch(() => {\n this.captionStatus = TURN_ON_CAPTION_STATUS.IDLE;\n throw new Error('turn on captions fail');\n });\n };\n\n /**\n * is announce processing\n * @returns {boolean}\n */\n private isAnnounceProcessing = () =>\n [ANNOUNCE_STATUS.JOINING, ANNOUNCE_STATUS.JOINED].includes(this.announceStatus);\n\n /**\n * announce to voicea data chanel\n * @returns {void}\n */\n public announce = () => {\n if (this.isAnnounceProcessing()) return;\n // @ts-ignore\n if (!this.webex.internal.llm.isConnected()) {\n throw new Error('voicea can not announce before llm connected');\n }\n this.sendAnnouncement();\n };\n\n /**\n * is turn on caption processing\n * @returns {boolean}\n */\n private isCaptionProcessing = () =>\n [TURN_ON_CAPTION_STATUS.SENDING, TURN_ON_CAPTION_STATUS.ENABLED].includes(this.captionStatus);\n\n /**\n * Turn on Captions\n * @returns {Promise}\n */\n public turnOnCaptions = async (): undefined | Promise<void> => {\n if (this.isCaptionProcessing()) return undefined;\n // @ts-ignore\n if (!this.webex.internal.llm.isConnected()) {\n throw new Error('can not turn on captions before llm connected');\n }\n\n return this.requestTurnOnCaptions();\n };\n\n /**\n * Toggle transcribing for highlights\n * @param {bool} activate if true transcribing is turned on\n * @returns {Promise}\n */\n public toggleTranscribing = async (activate: boolean): undefined | Promise<void> => {\n // @ts-ignore\n return this.request({\n method: 'PUT',\n // @ts-ignore\n url: `${this.webex.internal.llm.getLocusUrl()}/controls/`,\n body: {\n transcribe: {transcribing: activate},\n },\n }).then(() => {\n if (activate && !this.areCaptionsEnabled) this.turnOnCaptions();\n });\n };\n\n /**\n * get caption status\n * @returns {string}\n */\n public getCaptionStatus = () => this.captionStatus;\n\n /**\n * get announce status\n * @returns {string}\n */\n public getAnnounceStatus = () => this.announceStatus;\n}\n\nexport default VoiceaChannel;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["voicea.types.ts"],"sourcesContent":["/* eslint-disable camelcase */\n/* eslint-disable no-undef */\n\n/**\n * Type for payload\n */\ninterface AnnouncementPayload {\n translation: {\n max_languages: number;\n allowed_languages: string[];\n };\n\n ASR: {\n spoken_languages: string[];\n };\n}\n\n// eslint-disable-next-line no-undef\ntype TRANSCRIPTION_TYPES =\n | 'unknown'\n | 'eva_wake'\n | 'eva_thanks'\n | 'eva_cancel'\n | 'highlight_created'\n | 'transcript_interim_results'\n | 'transcript_final_result';\n\n/**\n * Class for an Transcription Object\n */\ninterface Transcription {\n start_millis: number;\n end_millis: number;\n text: string;\n transcript_language_code: string;\n translations: {[x: string]: string};\n csis: number[];\n last_packet_timestamp_ms: number;\n}\n\n/**\n * Highlights\n */\ninterface Highlight {\n highlight_id: string;\n transcript: string;\n highlight_label: string;\n highlight_source: string;\n start_millis: number;\n end_millis: number;\n csis: number[];\n}\n/**\n * Type for Transcription message\n */\ninterface TranscriptionResponse {\n type: TRANSCRIPTION_TYPES;\n transcript_id: string;\n translations?: {[x: string]: string};\n transcripts?: Transcription[];\n transcript?: Transcription;\n highlight?: Highlight;\n csis: number[];\n data: string;\n command_response: string;\n}\n/**\n * Type for CaptionLanguageResponse\n */\ninterface CaptionLanguageResponse {\n requestId: string;\n statusCode: number;\n errorCode: number;\n message: string;\n}\n\ninterface IVoiceaChannel {\n setSpokenLanguage: (languageCode: string) => Promise<void>;\n requestLanguage: (languageCode: string) => void;\n turnOnCaptions: () => undefined | Promise<void>;\n toggleTranscribing: (activate: boolean) => undefined | Promise<void>;\n deregisterEvents: () => undefined | Promise<void>;\n}\n\nexport type {\n AnnouncementPayload,\n CaptionLanguageResponse,\n TranscriptionResponse,\n Transcription,\n Highlight,\n IVoiceaChannel,\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\n/**\n * Class for an Transcription Object\n */\ninterface Transcription {\n start_millis: number;\n end_millis: number;\n text: string;\n transcript_language_code: string;\n translations: {[x: string]: string};\n csis: number[];\n last_packet_timestamp_ms: number;\n}\n\n/**\n * Highlights\n */\ninterface Highlight {\n highlight_id: string;\n transcript: string;\n highlight_label: string;\n highlight_source: string;\n start_millis: number;\n end_millis: number;\n csis: number[];\n}\n/**\n * Type for Transcription message\n */\ninterface TranscriptionResponse {\n type: TRANSCRIPTION_TYPES;\n transcript_id: string;\n translations?: {[x: string]: string};\n transcripts?: Transcription[];\n transcript?: Transcription;\n highlight?: Highlight;\n csis: number[];\n data: string;\n command_response: string;\n}\n/**\n * Type for CaptionLanguageResponse\n */\ninterface CaptionLanguageResponse {\n requestId: string;\n statusCode: number;\n errorCode: number;\n message: string;\n}\n\ninterface IVoiceaChannel {\n setSpokenLanguage: (languageCode: string) => Promise<void>;\n requestLanguage: (languageCode: string) => void;\n turnOnCaptions: () => undefined | Promise<void>;\n toggleTranscribing: (activate: boolean) => undefined | Promise<void>;\n deregisterEvents: () => void;\n}\n\nexport type {\n AnnouncementPayload,\n CaptionLanguageResponse,\n TranscriptionResponse,\n Transcription,\n Highlight,\n IVoiceaChannel,\n};\n"],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,5 @@
1
1
  {
2
2
  "name": "@webex/internal-plugin-voicea",
3
- "version": "2.60.0",
4
3
  "description": "",
5
4
  "license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
6
5
  "main": "dist/index.js",
@@ -11,13 +10,13 @@
11
10
  "directory": "packages/@webex/internal-plugin-voicea"
12
11
  },
13
12
  "engines": {
14
- "node": ">=14"
13
+ "node": ">=16"
15
14
  },
16
15
  "dependencies": {
17
- "@webex/internal-plugin-llm": "2.60.0",
18
- "@webex/internal-plugin-mercury": "2.60.0",
19
- "@webex/plugin-meetings": "2.60.0",
20
- "@webex/webex-core": "2.60.0",
16
+ "@webex/internal-plugin-llm": "2.60.1-next.2",
17
+ "@webex/internal-plugin-mercury": "2.60.1-next.2",
18
+ "@webex/plugin-meetings": "2.60.1-next.2",
19
+ "@webex/webex-core": "2.60.1-next.2",
21
20
  "uuid": "^3.3.2"
22
21
  },
23
22
  "browserify": {
@@ -28,15 +27,15 @@
28
27
  },
29
28
  "devDependencies": {
30
29
  "@babel/core": "^7.17.10",
31
- "@webex/babel-config-legacy": "2.60.0",
32
- "@webex/eslint-config-legacy": "2.60.0",
33
- "@webex/jest-config-legacy": "2.60.0",
34
- "@webex/legacy-tools": "2.60.0",
35
- "@webex/test-helper-chai": "2.60.0",
36
- "@webex/test-helper-mocha": "2.60.0",
37
- "@webex/test-helper-mock-web-socket": "2.60.0",
38
- "@webex/test-helper-mock-webex": "2.60.0",
39
- "@webex/test-helper-test-users": "2.60.0",
30
+ "@webex/babel-config-legacy": "0.0.0",
31
+ "@webex/eslint-config-legacy": "0.0.0",
32
+ "@webex/jest-config-legacy": "0.0.0",
33
+ "@webex/legacy-tools": "0.0.0",
34
+ "@webex/test-helper-chai": "2.60.1-next.2",
35
+ "@webex/test-helper-mocha": "2.60.1-next.2",
36
+ "@webex/test-helper-mock-web-socket": "2.60.1-next.2",
37
+ "@webex/test-helper-mock-webex": "2.60.1-next.2",
38
+ "@webex/test-helper-test-users": "2.60.1-next.2",
40
39
  "eslint": "^8.24.0",
41
40
  "prettier": "^2.7.1",
42
41
  "sinon": "^9.2.4"
@@ -44,10 +43,12 @@
44
43
  "scripts": {
45
44
  "build": "yarn build:src",
46
45
  "build:src": "webex-legacy-tools build -dest \"./dist\" -src \"./src\" -js -ts -maps",
46
+ "deploy:npm": "yarn npm publish",
47
47
  "test": "yarn test:style && yarn test:unit && yarn test:integration && yarn test:browser",
48
48
  "test:browser:broken": "webex-legacy-tools test --integration --unit --runner karma",
49
49
  "test:integration": "webex-legacy-tools test --integration --runner mocha",
50
50
  "test:style": "eslint ./src/**/*.*",
51
51
  "test:unit": "webex-legacy-tools test --unit --runner jest"
52
- }
53
- }
52
+ },
53
+ "version": "2.60.1-next.2"
54
+ }
package/src/constants.ts CHANGED
@@ -30,3 +30,15 @@ export const TRANSCRIPTION_TYPE = {
30
30
  };
31
31
 
32
32
  export const VOICEA = 'voicea';
33
+
34
+ export const ANNOUNCE_STATUS = {
35
+ IDLE: 'idle',
36
+ JOINED: 'joined',
37
+ JOINING: 'joining',
38
+ };
39
+
40
+ export const TURN_ON_CAPTION_STATUS = {
41
+ IDLE: 'idle',
42
+ ENABLED: 'enabled',
43
+ SENDING: 'sending',
44
+ };
package/src/voicea.ts CHANGED
@@ -2,7 +2,14 @@ import uuid from 'uuid';
2
2
  import {TriggerProxy as Trigger} from '@webex/plugin-meetings';
3
3
  import {WebexPlugin, config} from '@webex/webex-core';
4
4
 
5
- import {EVENT_TRIGGERS, VOICEA_RELAY_TYPES, TRANSCRIPTION_TYPE, VOICEA} from './constants';
5
+ import {
6
+ EVENT_TRIGGERS,
7
+ VOICEA_RELAY_TYPES,
8
+ TRANSCRIPTION_TYPE,
9
+ VOICEA,
10
+ ANNOUNCE_STATUS,
11
+ TURN_ON_CAPTION_STATUS,
12
+ } from './constants';
6
13
  // eslint-disable-next-line no-unused-vars
7
14
  import {
8
15
  AnnouncementPayload,
@@ -22,14 +29,16 @@ export class VoiceaChannel extends WebexPlugin implements IVoiceaChannel {
22
29
 
23
30
  private seqNum: number;
24
31
 
25
- private hasVoiceaJoined: boolean;
26
-
27
32
  private areCaptionsEnabled: boolean;
28
33
 
29
34
  private hasSubscribedToEvents = false;
30
35
 
31
36
  private vmcDeviceId?: string;
32
37
 
38
+ private announceStatus: string;
39
+
40
+ private captionStatus: string;
41
+
33
42
  /**
34
43
  * @param {Object} e
35
44
  * @returns {undefined}
@@ -40,7 +49,7 @@ export class VoiceaChannel extends WebexPlugin implements IVoiceaChannel {
40
49
  switch (e.data.relayType) {
41
50
  case VOICEA_RELAY_TYPES.ANNOUNCEMENT:
42
51
  this.vmcDeviceId = e.headers.from;
43
- this.hasVoiceaJoined = true;
52
+ this.announceStatus = ANNOUNCE_STATUS.JOINED;
44
53
  this.processAnnouncementMessage(e.data.voiceaPayload);
45
54
  break;
46
55
  case VOICEA_RELAY_TYPES.TRANSLATION_RESPONSE:
@@ -66,14 +75,18 @@ export class VoiceaChannel extends WebexPlugin implements IVoiceaChannel {
66
75
  }
67
76
  }
68
77
 
69
- // @ts-ignore
78
+ /**
79
+ * Listen to websocket messages
80
+ * @returns {void}
81
+ */
70
82
  public deregisterEvents() {
71
- this.hasVoiceaJoined = false;
72
83
  this.areCaptionsEnabled = false;
73
84
  this.vmcDeviceId = undefined;
74
85
  // @ts-ignore
75
86
  this.webex.internal.llm.off('event:relay.event', this.eventProcessor);
76
87
  this.hasSubscribedToEvents = false;
88
+ this.announceStatus = ANNOUNCE_STATUS.IDLE;
89
+ this.captionStatus = TURN_ON_CAPTION_STATUS.IDLE;
77
90
  }
78
91
 
79
92
  /**
@@ -83,9 +96,10 @@ export class VoiceaChannel extends WebexPlugin implements IVoiceaChannel {
83
96
  constructor(...args) {
84
97
  super(...args);
85
98
  this.seqNum = 1;
86
- this.hasVoiceaJoined = false;
87
99
  this.areCaptionsEnabled = false;
88
100
  this.vmcDeviceId = undefined;
101
+ this.announceStatus = ANNOUNCE_STATUS.IDLE;
102
+ this.captionStatus = TURN_ON_CAPTION_STATUS.IDLE;
89
103
  }
90
104
 
91
105
  /**
@@ -243,9 +257,7 @@ export class VoiceaChannel extends WebexPlugin implements IVoiceaChannel {
243
257
  * @returns {void}
244
258
  */
245
259
  private sendAnnouncement = (): void => {
246
- // @ts-ignore
247
- if (this.hasVoiceaJoined || !this.webex.internal.llm.isConnected()) return;
248
-
260
+ this.announceStatus = ANNOUNCE_STATUS.JOINING;
249
261
  this.listenToEvents();
250
262
  // @ts-ignore
251
263
  this.webex.internal.llm.socket.send({
@@ -327,11 +339,11 @@ export class VoiceaChannel extends WebexPlugin implements IVoiceaChannel {
327
339
  };
328
340
 
329
341
  /**
330
- * Turn on Captions
342
+ * request turn on Captions
331
343
  * @returns {Promise}
332
344
  */
333
- public turnOnCaptions = async (): undefined | Promise<void> => {
334
- if (this.hasVoiceaJoined && this.areCaptionsEnabled) return undefined;
345
+ private requestTurnOnCaptions = (): undefined | Promise<void> => {
346
+ this.captionStatus = TURN_ON_CAPTION_STATUS.SENDING;
335
347
  // @ts-ignore
336
348
  // eslint-disable-next-line newline-before-return
337
349
  return this.request({
@@ -341,18 +353,65 @@ export class VoiceaChannel extends WebexPlugin implements IVoiceaChannel {
341
353
  body: {
342
354
  transcribe: {caption: true},
343
355
  },
344
- }).then(() => {
345
- Trigger.trigger(
346
- this,
347
- {
348
- file: 'voicea',
349
- function: 'turnOnCaptions',
350
- },
351
- EVENT_TRIGGERS.CAPTIONS_TURNED_ON
352
- );
353
- this.areCaptionsEnabled = true;
354
- this.sendAnnouncement();
355
- });
356
+ })
357
+ .then(() => {
358
+ Trigger.trigger(
359
+ this,
360
+ {
361
+ file: 'voicea',
362
+ function: 'turnOnCaptions',
363
+ },
364
+ EVENT_TRIGGERS.CAPTIONS_TURNED_ON
365
+ );
366
+ this.areCaptionsEnabled = true;
367
+ this.captionStatus = TURN_ON_CAPTION_STATUS.ENABLED;
368
+ this.announce();
369
+ })
370
+ .catch(() => {
371
+ this.captionStatus = TURN_ON_CAPTION_STATUS.IDLE;
372
+ throw new Error('turn on captions fail');
373
+ });
374
+ };
375
+
376
+ /**
377
+ * is announce processing
378
+ * @returns {boolean}
379
+ */
380
+ private isAnnounceProcessing = () =>
381
+ [ANNOUNCE_STATUS.JOINING, ANNOUNCE_STATUS.JOINED].includes(this.announceStatus);
382
+
383
+ /**
384
+ * announce to voicea data chanel
385
+ * @returns {void}
386
+ */
387
+ public announce = () => {
388
+ if (this.isAnnounceProcessing()) return;
389
+ // @ts-ignore
390
+ if (!this.webex.internal.llm.isConnected()) {
391
+ throw new Error('voicea can not announce before llm connected');
392
+ }
393
+ this.sendAnnouncement();
394
+ };
395
+
396
+ /**
397
+ * is turn on caption processing
398
+ * @returns {boolean}
399
+ */
400
+ private isCaptionProcessing = () =>
401
+ [TURN_ON_CAPTION_STATUS.SENDING, TURN_ON_CAPTION_STATUS.ENABLED].includes(this.captionStatus);
402
+
403
+ /**
404
+ * Turn on Captions
405
+ * @returns {Promise}
406
+ */
407
+ public turnOnCaptions = async (): undefined | Promise<void> => {
408
+ if (this.isCaptionProcessing()) return undefined;
409
+ // @ts-ignore
410
+ if (!this.webex.internal.llm.isConnected()) {
411
+ throw new Error('can not turn on captions before llm connected');
412
+ }
413
+
414
+ return this.requestTurnOnCaptions();
356
415
  };
357
416
 
358
417
  /**
@@ -370,9 +429,21 @@ export class VoiceaChannel extends WebexPlugin implements IVoiceaChannel {
370
429
  transcribe: {transcribing: activate},
371
430
  },
372
431
  }).then(() => {
373
- if (activate && !this.areCaptionsEnabled && !this.hasVoiceaJoined) this.turnOnCaptions();
432
+ if (activate && !this.areCaptionsEnabled) this.turnOnCaptions();
374
433
  });
375
434
  };
435
+
436
+ /**
437
+ * get caption status
438
+ * @returns {string}
439
+ */
440
+ public getCaptionStatus = () => this.captionStatus;
441
+
442
+ /**
443
+ * get announce status
444
+ * @returns {string}
445
+ */
446
+ public getAnnounceStatus = () => this.announceStatus;
376
447
  }
377
448
 
378
449
  export default VoiceaChannel;
@@ -79,7 +79,7 @@ interface IVoiceaChannel {
79
79
  requestLanguage: (languageCode: string) => void;
80
80
  turnOnCaptions: () => undefined | Promise<void>;
81
81
  toggleTranscribing: (activate: boolean) => undefined | Promise<void>;
82
- deregisterEvents: () => undefined | Promise<void>;
82
+ deregisterEvents: () => void;
83
83
  }
84
84
 
85
85
  export type {
@@ -1,6 +1,7 @@
1
+ import 'jsdom-global/register';
1
2
  import MockWebex from '@webex/test-helper-mock-webex';
2
3
  import MockWebSocket from '@webex/test-helper-mock-web-socket';
3
- import {assert} from '@webex/test-helper-chai';
4
+ import {assert, expect} from '@webex/test-helper-chai';
4
5
  import sinon from 'sinon';
5
6
  import Mercury from '@webex/internal-plugin-mercury';
6
7
  import LLMChannel from '@webex/internal-plugin-llm';
@@ -41,17 +42,26 @@ describe('plugin-voicea', () => {
41
42
  });
42
43
  });
43
44
 
45
+ describe("#constructor", () => {
46
+ it('should init status', () => {
47
+ assert.equal(voiceaService.announceStatus, 'idle');
48
+ assert.equal(voiceaService.captionStatus, 'idle');
49
+ });
50
+ });
51
+
44
52
  describe('#sendAnnouncement', () => {
45
53
  beforeEach(async () => {
46
54
  const mockWebSocket = new MockWebSocket();
47
55
 
48
56
  voiceaService.webex.internal.llm.socket = mockWebSocket;
57
+ voiceaService.announceStatus = "idle";
49
58
  });
50
59
 
51
60
  it("sends announcement if voicea hasn't joined", () => {
52
61
  const spy = sinon.spy(voiceaService, 'listenToEvents');
53
62
 
54
63
  voiceaService.sendAnnouncement();
64
+ assert.equal(voiceaService.announceStatus, 'joining');
55
65
  assert.calledOnce(spy);
56
66
 
57
67
  assert.calledOnceWithExactly(voiceaService.webex.internal.llm.socket.send, {
@@ -98,14 +108,14 @@ describe('plugin-voicea', () => {
98
108
  data: {relayType: 'voicea.annc', voiceaPayload: {}},
99
109
  });
100
110
 
101
- assert.equal(voiceaService.hasVoiceaJoined, true);
102
111
  assert.equal(voiceaService.areCaptionsEnabled, true);
103
112
  assert.equal(voiceaService.vmcDeviceId, 'ws');
104
113
 
105
114
  voiceaService.deregisterEvents();
106
- assert.equal(voiceaService.hasVoiceaJoined, false);
107
115
  assert.equal(voiceaService.areCaptionsEnabled, false);
108
116
  assert.equal(voiceaService.vmcDeviceId, undefined);
117
+ assert.equal(voiceaService.announceStatus, 'idle');
118
+ assert.equal(voiceaService.captionStatus, 'idle');
109
119
  });
110
120
  });
111
121
  describe('#processAnnouncementMessage', () => {
@@ -198,22 +208,28 @@ describe('plugin-voicea', () => {
198
208
  });
199
209
  });
200
210
 
201
- describe('#turnOnCaptions', () => {
211
+ describe('#requestTurnOnCaptions', () => {
202
212
  beforeEach(async () => {
203
213
  const mockWebSocket = new MockWebSocket();
204
214
 
205
215
  voiceaService.webex.internal.llm.socket = mockWebSocket;
216
+ voiceaService.captionStatus = 'idle';
206
217
  });
207
218
 
219
+ afterEach( () => {
220
+ voiceaService.captionStatus = 'idle';
221
+ })
222
+
208
223
  it('turns on captions', async () => {
209
- const announcementSpy = sinon.spy(voiceaService, 'sendAnnouncement');
224
+ const announcementSpy = sinon.spy(voiceaService, 'announce');
210
225
 
211
226
  const triggerSpy = sinon.spy();
212
227
 
213
228
  voiceaService.on(EVENT_TRIGGERS.CAPTIONS_TURNED_ON, triggerSpy);
214
229
  voiceaService.listenToEvents();
215
230
 
216
- await voiceaService.turnOnCaptions();
231
+ await voiceaService.requestTurnOnCaptions();
232
+ assert.equal(voiceaService.captionStatus, 'enabled');
217
233
  sinon.assert.calledWith(
218
234
  voiceaService.request,
219
235
  sinon.match({
@@ -228,18 +244,119 @@ describe('plugin-voicea', () => {
228
244
  assert.calledOnce(announcementSpy);
229
245
  });
230
246
 
231
- it("doesn't call API on captions", async () => {
232
- await voiceaService.turnOnCaptions();
247
+ it("should handle request fail", async () => {
248
+ voiceaService.captionStatus = 'sending';
249
+ voiceaService.request = sinon.stub().rejects();
250
+
251
+ try {
252
+ await voiceaService.requestTurnOnCaptions();
253
+ } catch (error) {
254
+ expect(error.message).to.include('turn on captions fail');
255
+ return;
256
+ }
257
+ assert.equal(voiceaService.captionStatus, 'idle');
258
+ });
259
+ });
233
260
 
234
- // eslint-disable-next-line no-underscore-dangle
235
- voiceaService.webex.internal.llm._emit('event:relay.event', {
236
- headers: {from: 'ws'},
237
- data: {relayType: 'voicea.annc', voiceaPayload: {}},
261
+ describe("#isAnnounceProcessing", () => {
262
+ afterEach(() => {
263
+ voiceaService.announceStatus = 'idle';
264
+ });
265
+
266
+ ['joining', 'joined'].forEach((status) => {
267
+ it(`should return true when status is ${status}`, () => {
268
+ voiceaService.announceStatus = status;
269
+ assert.equal(voiceaService.isAnnounceProcessing(), true);
270
+ });
271
+ });
272
+
273
+ it('should return false when status is not processing status', () => {
274
+ voiceaService.announceStatus = 'idle';
275
+ assert.equal(voiceaService.isAnnounceProcessing(), false);
276
+ });
277
+ });
278
+
279
+ describe("#announce", () => {
280
+ let isAnnounceProcessing, sendAnnouncement;
281
+ beforeEach(() => {
282
+ voiceaService.webex.internal.llm.isConnected.returns(true);
283
+ sendAnnouncement = sinon.stub(voiceaService, 'sendAnnouncement');
284
+ isAnnounceProcessing = sinon.stub(voiceaService, 'isAnnounceProcessing').returns(false)
285
+ });
286
+
287
+ afterEach(() => {
288
+ voiceaService.webex.internal.llm.isConnected.returns(true);
289
+ isAnnounceProcessing.restore();
290
+ sendAnnouncement.restore();
291
+ });
292
+
293
+ it('announce to llm data channel', ()=> {
294
+ voiceaService.announce();
295
+ assert.calledOnce(sendAnnouncement);
296
+ });
297
+
298
+ it('announce to llm data channel before llm connected', ()=> {
299
+ voiceaService.webex.internal.llm.isConnected.returns(false);
300
+ assert.throws(() => voiceaService.announce(), "voicea can not announce before llm connected");
301
+ assert.notCalled(sendAnnouncement);
302
+ });
303
+
304
+ it('should not announce duplicate', () => {
305
+ isAnnounceProcessing.returns(true);
306
+ voiceaService.announce();
307
+ assert.notCalled(sendAnnouncement);
308
+ })
309
+ });
310
+
311
+ describe("#isCaptionProcessing", () => {
312
+ afterEach(() => {
313
+ voiceaService.captionStatus = 'idle';
314
+ });
315
+
316
+ ['sending', 'enabled'].forEach((status) => {
317
+ it(`should return true when status is ${status}`, () => {
318
+ voiceaService.captionStatus = status;
319
+ assert.equal(voiceaService.isCaptionProcessing(), true);
238
320
  });
321
+ });
239
322
 
240
- const response = await voiceaService.turnOnCaptions();
323
+ it('should return false when status is not processing status', () => {
324
+ voiceaService.captionStatus = 'idle';
325
+ assert.equal(voiceaService.isCaptionProcessing(), false);
326
+ });
327
+ });
241
328
 
242
- assert.equal(response, undefined);
329
+ describe('#turnOnCaptions', () => {
330
+ let requestTurnOnCaptions, isCaptionProcessing;
331
+ beforeEach(() => {
332
+ requestTurnOnCaptions = sinon.stub(voiceaService, 'requestTurnOnCaptions');
333
+ isCaptionProcessing = sinon.stub(voiceaService, 'isCaptionProcessing').returns(false);
334
+ voiceaService.webex.internal.llm.isConnected.returns(true);
335
+ });
336
+
337
+ afterEach(() => {
338
+ requestTurnOnCaptions.restore();
339
+ isCaptionProcessing.restore();
340
+ voiceaService.webex.internal.llm.isConnected.returns(true);
341
+ });
342
+
343
+ it('call request turn on captions', () => {
344
+ isCaptionProcessing.returns(false);
345
+ voiceaService.turnOnCaptions();
346
+ assert.calledOnce(requestTurnOnCaptions);
347
+ });
348
+
349
+ it("turns on captions before llm connected", () => {
350
+ isCaptionProcessing.returns(false);
351
+ voiceaService.webex.internal.llm.isConnected.returns(true);
352
+ // assert.throws(() => voiceaService.turnOnCaptions(), "can not turn on captions before llm connected");
353
+ assert.notCalled(requestTurnOnCaptions);
354
+ });
355
+
356
+ it('should not turn on duplicate when processing', () => {
357
+ isCaptionProcessing.returns(true);
358
+ voiceaService.turnOnCaptions();
359
+ assert.notCalled(voiceaService.requestTurnOnCaptions);
243
360
  });
244
361
  });
245
362
 
@@ -613,5 +730,19 @@ describe('plugin-voicea', () => {
613
730
  });
614
731
  });
615
732
  });
733
+
734
+ describe("#getCaptionStatus", () => {
735
+ it('works correctly', () => {
736
+ voiceaService.captionStatus = "enabled"
737
+ assert.equal(voiceaService.getCaptionStatus(), "enabled");
738
+ });
739
+ });
740
+
741
+ describe("#getAnnounceStatus", () => {
742
+ it('works correctly', () => {
743
+ voiceaService.announceStatus = "joined"
744
+ assert.equal(voiceaService.getAnnounceStatus(), "joined");
745
+ });
746
+ });
616
747
  });
617
748
  });