@webex/plugin-meetings 3.8.1 → 3.9.0-multiple-llm.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.
Files changed (319) hide show
  1. package/README.md +26 -13
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/constants.js +34 -3
  5. package/dist/constants.js.map +1 -1
  6. package/dist/controls-options-manager/enums.js +1 -0
  7. package/dist/controls-options-manager/enums.js.map +1 -1
  8. package/dist/controls-options-manager/types.js.map +1 -1
  9. package/dist/controls-options-manager/util.js +26 -0
  10. package/dist/controls-options-manager/util.js.map +1 -1
  11. package/dist/interpretation/index.js +1 -1
  12. package/dist/interpretation/siLanguage.js +1 -1
  13. package/dist/locus-info/controlsUtils.js +11 -3
  14. package/dist/locus-info/controlsUtils.js.map +1 -1
  15. package/dist/locus-info/index.js +107 -95
  16. package/dist/locus-info/index.js.map +1 -1
  17. package/dist/locus-info/parser.js +4 -1
  18. package/dist/locus-info/parser.js.map +1 -1
  19. package/dist/media/index.js +2 -2
  20. package/dist/media/index.js.map +1 -1
  21. package/dist/media/properties.js +53 -5
  22. package/dist/media/properties.js.map +1 -1
  23. package/dist/meeting/brbState.js +17 -14
  24. package/dist/meeting/brbState.js.map +1 -1
  25. package/dist/meeting/in-meeting-actions.js +13 -1
  26. package/dist/meeting/in-meeting-actions.js.map +1 -1
  27. package/dist/meeting/index.js +555 -296
  28. package/dist/meeting/index.js.map +1 -1
  29. package/dist/meeting/muteState.js +2 -5
  30. package/dist/meeting/muteState.js.map +1 -1
  31. package/dist/meeting/request.js +44 -0
  32. package/dist/meeting/request.js.map +1 -1
  33. package/dist/meeting/request.type.js.map +1 -1
  34. package/dist/{rtcMetrics/constants.js → meeting/type.js} +1 -5
  35. package/dist/meeting/type.js.map +1 -0
  36. package/dist/meeting/util.js +98 -13
  37. package/dist/meeting/util.js.map +1 -1
  38. package/dist/meeting-info/meeting-info-v2.js +29 -21
  39. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  40. package/dist/meetings/index.js +18 -10
  41. package/dist/meetings/index.js.map +1 -1
  42. package/dist/member/types.js.map +1 -1
  43. package/dist/members/collection.js +13 -0
  44. package/dist/members/collection.js.map +1 -1
  45. package/dist/members/index.js +53 -29
  46. package/dist/members/index.js.map +1 -1
  47. package/dist/members/request.js +3 -3
  48. package/dist/members/request.js.map +1 -1
  49. package/dist/members/util.js +25 -8
  50. package/dist/members/util.js.map +1 -1
  51. package/dist/metrics/constants.js +3 -1
  52. package/dist/metrics/constants.js.map +1 -1
  53. package/dist/multistream/mediaRequestManager.js +1 -1
  54. package/dist/multistream/mediaRequestManager.js.map +1 -1
  55. package/dist/multistream/remoteMedia.js +34 -5
  56. package/dist/multistream/remoteMedia.js.map +1 -1
  57. package/dist/multistream/remoteMediaGroup.js +42 -2
  58. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  59. package/dist/multistream/sendSlotManager.js +32 -2
  60. package/dist/multistream/sendSlotManager.js.map +1 -1
  61. package/dist/reachability/index.js +8 -13
  62. package/dist/reachability/index.js.map +1 -1
  63. package/dist/types/constants.d.ts +30 -0
  64. package/dist/types/controls-options-manager/enums.d.ts +2 -1
  65. package/dist/types/controls-options-manager/types.d.ts +4 -1
  66. package/dist/types/locus-info/index.d.ts +54 -10
  67. package/dist/types/media/properties.d.ts +21 -0
  68. package/dist/types/meeting/brbState.d.ts +0 -1
  69. package/dist/types/meeting/in-meeting-actions.d.ts +12 -0
  70. package/dist/types/meeting/index.d.ts +58 -20
  71. package/dist/types/meeting/request.d.ts +18 -1
  72. package/dist/types/meeting/request.type.d.ts +74 -0
  73. package/dist/types/meeting/type.d.ts +9 -0
  74. package/dist/types/meeting/util.d.ts +13 -3
  75. package/dist/types/meeting-info/meeting-info-v2.d.ts +6 -3
  76. package/dist/types/meetings/index.d.ts +3 -1
  77. package/dist/types/member/types.d.ts +1 -0
  78. package/dist/types/members/collection.d.ts +6 -0
  79. package/dist/types/members/index.d.ts +22 -9
  80. package/dist/types/members/request.d.ts +1 -1
  81. package/dist/types/members/util.d.ts +13 -6
  82. package/dist/types/metrics/constants.d.ts +2 -0
  83. package/dist/types/multistream/remoteMedia.d.ts +20 -1
  84. package/dist/types/multistream/remoteMediaGroup.d.ts +11 -0
  85. package/dist/types/multistream/sendSlotManager.d.ts +16 -0
  86. package/dist/types/reachability/index.d.ts +2 -2
  87. package/dist/webinar/index.js +1 -1
  88. package/package.json +25 -26
  89. package/src/constants.ts +34 -2
  90. package/src/controls-options-manager/enums.ts +1 -0
  91. package/src/controls-options-manager/types.ts +6 -1
  92. package/src/controls-options-manager/util.ts +31 -0
  93. package/src/locus-info/controlsUtils.ts +15 -0
  94. package/src/locus-info/index.ts +174 -96
  95. package/src/locus-info/parser.ts +5 -1
  96. package/src/media/index.ts +2 -2
  97. package/src/media/properties.ts +43 -0
  98. package/src/meeting/brbState.ts +13 -9
  99. package/src/meeting/in-meeting-actions.ts +25 -0
  100. package/src/meeting/index.ts +362 -75
  101. package/src/meeting/muteState.ts +2 -6
  102. package/src/meeting/request.ts +39 -0
  103. package/src/meeting/request.type.ts +64 -0
  104. package/src/meeting/type.ts +9 -0
  105. package/src/meeting/util.ts +114 -22
  106. package/src/meeting-info/meeting-info-v2.ts +24 -5
  107. package/src/meetings/index.ts +12 -5
  108. package/src/member/types.ts +1 -0
  109. package/src/members/collection.ts +11 -0
  110. package/src/members/index.ts +51 -15
  111. package/src/members/request.ts +2 -2
  112. package/src/members/util.ts +34 -6
  113. package/src/metrics/constants.ts +2 -0
  114. package/src/multistream/mediaRequestManager.ts +7 -7
  115. package/src/multistream/remoteMedia.ts +34 -4
  116. package/src/multistream/remoteMediaGroup.ts +37 -2
  117. package/src/multistream/sendSlotManager.ts +34 -2
  118. package/src/reachability/index.ts +8 -16
  119. package/test/unit/spec/common/browser-detection.js +0 -24
  120. package/test/unit/spec/controls-options-manager/util.js +58 -0
  121. package/test/unit/spec/locus-info/controlsUtils.js +52 -0
  122. package/test/unit/spec/locus-info/index.js +270 -97
  123. package/test/unit/spec/locus-info/parser.js +3 -2
  124. package/test/unit/spec/media/index.ts +107 -0
  125. package/test/unit/spec/media/properties.ts +137 -0
  126. package/test/unit/spec/meeting/brbState.ts +23 -4
  127. package/test/unit/spec/meeting/in-meeting-actions.ts +12 -0
  128. package/test/unit/spec/meeting/index.js +1194 -97
  129. package/test/unit/spec/meeting/muteState.js +32 -6
  130. package/test/unit/spec/meeting/request.js +92 -0
  131. package/test/unit/spec/meeting/utils.js +167 -17
  132. package/test/unit/spec/meeting-info/meetinginfov2.js +8 -3
  133. package/test/unit/spec/meetings/index.js +12 -5
  134. package/test/unit/spec/members/collection.js +120 -0
  135. package/test/unit/spec/members/index.js +140 -12
  136. package/test/unit/spec/members/request.js +57 -2
  137. package/test/unit/spec/members/utils.js +139 -17
  138. package/test/unit/spec/multistream/mediaRequestManager.ts +19 -6
  139. package/test/unit/spec/multistream/remoteMedia.ts +66 -2
  140. package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
  141. package/test/unit/spec/reachability/index.ts +160 -9
  142. package/test/unit/spec/roap/turnDiscovery.ts +3 -3
  143. package/dist/annotation/annotation.types.d.ts +0 -42
  144. package/dist/annotation/constants.d.ts +0 -31
  145. package/dist/annotation/index.d.ts +0 -117
  146. package/dist/breakouts/breakout.d.ts +0 -8
  147. package/dist/breakouts/collection.d.ts +0 -5
  148. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  149. package/dist/breakouts/events.d.ts +0 -8
  150. package/dist/breakouts/index.d.ts +0 -5
  151. package/dist/breakouts/request.d.ts +0 -22
  152. package/dist/breakouts/utils.d.ts +0 -15
  153. package/dist/common/browser-detection.d.ts +0 -9
  154. package/dist/common/collection.d.ts +0 -48
  155. package/dist/common/config.d.ts +0 -2
  156. package/dist/common/errors/captcha-error.d.ts +0 -15
  157. package/dist/common/errors/intent-to-join.d.ts +0 -16
  158. package/dist/common/errors/join-meeting.d.ts +0 -17
  159. package/dist/common/errors/media.d.ts +0 -15
  160. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  161. package/dist/common/errors/parameter.d.ts +0 -15
  162. package/dist/common/errors/password-error.d.ts +0 -15
  163. package/dist/common/errors/permission.d.ts +0 -14
  164. package/dist/common/errors/reclaim-host-role-error.d.ts +0 -60
  165. package/dist/common/errors/reclaim-host-role-error.js +0 -158
  166. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  167. package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
  168. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  169. package/dist/common/errors/reconnection-in-progress.js +0 -35
  170. package/dist/common/errors/reconnection-in-progress.js.map +0 -1
  171. package/dist/common/errors/reconnection.d.ts +0 -15
  172. package/dist/common/errors/stats.d.ts +0 -15
  173. package/dist/common/errors/webex-errors.d.ts +0 -81
  174. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  175. package/dist/common/events/events-scope.d.ts +0 -17
  176. package/dist/common/events/events.d.ts +0 -12
  177. package/dist/common/events/trigger-proxy.d.ts +0 -2
  178. package/dist/common/events/util.d.ts +0 -2
  179. package/dist/common/logs/logger-config.d.ts +0 -2
  180. package/dist/common/logs/logger-proxy.d.ts +0 -2
  181. package/dist/common/logs/request.d.ts +0 -34
  182. package/dist/common/queue.d.ts +0 -32
  183. package/dist/config.d.ts +0 -73
  184. package/dist/constants.d.ts +0 -952
  185. package/dist/controls-options-manager/constants.d.ts +0 -4
  186. package/dist/controls-options-manager/enums.d.ts +0 -5
  187. package/dist/controls-options-manager/index.d.ts +0 -120
  188. package/dist/controls-options-manager/types.d.ts +0 -43
  189. package/dist/controls-options-manager/util.d.ts +0 -7
  190. package/dist/index.d.ts +0 -4
  191. package/dist/interceptors/index.d.ts +0 -2
  192. package/dist/interceptors/locusRetry.d.ts +0 -27
  193. package/dist/interpretation/collection.d.ts +0 -5
  194. package/dist/interpretation/index.d.ts +0 -5
  195. package/dist/interpretation/siLanguage.d.ts +0 -5
  196. package/dist/locus-info/controlsUtils.d.ts +0 -2
  197. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  198. package/dist/locus-info/fullState.d.ts +0 -2
  199. package/dist/locus-info/hostUtils.d.ts +0 -2
  200. package/dist/locus-info/index.d.ts +0 -269
  201. package/dist/locus-info/infoUtils.d.ts +0 -2
  202. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  203. package/dist/locus-info/parser.d.ts +0 -212
  204. package/dist/locus-info/selfUtils.d.ts +0 -2
  205. package/dist/media/index.d.ts +0 -32
  206. package/dist/media/properties.d.ts +0 -108
  207. package/dist/media/util.d.ts +0 -2
  208. package/dist/mediaQualityMetrics/config.d.ts +0 -233
  209. package/dist/mediaQualityMetrics/config.js +0 -513
  210. package/dist/mediaQualityMetrics/config.js.map +0 -1
  211. package/dist/meeting/effectsState.d.ts +0 -42
  212. package/dist/meeting/effectsState.js +0 -260
  213. package/dist/meeting/effectsState.js.map +0 -1
  214. package/dist/meeting/in-meeting-actions.d.ts +0 -79
  215. package/dist/meeting/index.d.ts +0 -1622
  216. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  217. package/dist/meeting/muteState.d.ts +0 -116
  218. package/dist/meeting/request.d.ts +0 -257
  219. package/dist/meeting/request.type.d.ts +0 -11
  220. package/dist/meeting/state.d.ts +0 -9
  221. package/dist/meeting/util.d.ts +0 -2
  222. package/dist/meeting/voicea-meeting.d.ts +0 -16
  223. package/dist/meeting-info/collection.d.ts +0 -20
  224. package/dist/meeting-info/index.d.ts +0 -57
  225. package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
  226. package/dist/meeting-info/request.d.ts +0 -22
  227. package/dist/meeting-info/util.d.ts +0 -2
  228. package/dist/meeting-info/utilv2.d.ts +0 -2
  229. package/dist/meetings/collection.d.ts +0 -23
  230. package/dist/meetings/index.d.ts +0 -296
  231. package/dist/meetings/meetings.types.d.ts +0 -4
  232. package/dist/meetings/request.d.ts +0 -27
  233. package/dist/meetings/util.d.ts +0 -18
  234. package/dist/member/index.d.ts +0 -148
  235. package/dist/member/member.types.d.ts +0 -11
  236. package/dist/member/member.types.js +0 -18
  237. package/dist/member/member.types.js.map +0 -1
  238. package/dist/member/types.d.ts +0 -32
  239. package/dist/member/util.d.ts +0 -2
  240. package/dist/members/collection.d.ts +0 -24
  241. package/dist/members/index.d.ts +0 -308
  242. package/dist/members/request.d.ts +0 -58
  243. package/dist/members/types.d.ts +0 -25
  244. package/dist/members/util.d.ts +0 -2
  245. package/dist/metrics/config.d.ts +0 -169
  246. package/dist/metrics/config.js +0 -289
  247. package/dist/metrics/config.js.map +0 -1
  248. package/dist/metrics/constants.d.ts +0 -59
  249. package/dist/metrics/index.d.ts +0 -152
  250. package/dist/multistream/mediaRequestManager.d.ts +0 -119
  251. package/dist/multistream/receiveSlot.d.ts +0 -68
  252. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  253. package/dist/multistream/remoteMedia.d.ts +0 -72
  254. package/dist/multistream/remoteMediaGroup.d.ts +0 -49
  255. package/dist/multistream/remoteMediaManager.d.ts +0 -300
  256. package/dist/multistream/sendSlotManager.d.ts +0 -69
  257. package/dist/networkQualityMonitor/index.d.ts +0 -70
  258. package/dist/networkQualityMonitor/index.js +0 -226
  259. package/dist/networkQualityMonitor/index.js.map +0 -1
  260. package/dist/peer-connection-manager/index.d.ts +0 -6
  261. package/dist/peer-connection-manager/index.js +0 -671
  262. package/dist/peer-connection-manager/index.js.map +0 -1
  263. package/dist/peer-connection-manager/util.d.ts +0 -6
  264. package/dist/peer-connection-manager/util.js +0 -110
  265. package/dist/peer-connection-manager/util.js.map +0 -1
  266. package/dist/personal-meeting-room/index.d.ts +0 -47
  267. package/dist/personal-meeting-room/request.d.ts +0 -14
  268. package/dist/personal-meeting-room/util.d.ts +0 -2
  269. package/dist/reachability/clusterReachability.d.ts +0 -109
  270. package/dist/reachability/index.d.ts +0 -139
  271. package/dist/reachability/request.d.ts +0 -35
  272. package/dist/reachability/util.d.ts +0 -8
  273. package/dist/reactions/constants.d.ts +0 -3
  274. package/dist/reactions/reactions.d.ts +0 -4
  275. package/dist/reactions/reactions.type.d.ts +0 -32
  276. package/dist/reconnection-manager/index.d.ts +0 -112
  277. package/dist/recording-controller/enums.d.ts +0 -7
  278. package/dist/recording-controller/index.d.ts +0 -193
  279. package/dist/recording-controller/util.d.ts +0 -13
  280. package/dist/roap/collection.d.ts +0 -10
  281. package/dist/roap/collection.js +0 -63
  282. package/dist/roap/collection.js.map +0 -1
  283. package/dist/roap/handler.d.ts +0 -47
  284. package/dist/roap/handler.js +0 -279
  285. package/dist/roap/handler.js.map +0 -1
  286. package/dist/roap/index.d.ts +0 -116
  287. package/dist/roap/request.d.ts +0 -35
  288. package/dist/roap/state.d.ts +0 -9
  289. package/dist/roap/state.js +0 -127
  290. package/dist/roap/state.js.map +0 -1
  291. package/dist/roap/turnDiscovery.d.ts +0 -81
  292. package/dist/roap/util.d.ts +0 -2
  293. package/dist/roap/util.js +0 -76
  294. package/dist/roap/util.js.map +0 -1
  295. package/dist/rtcMetrics/constants.d.ts +0 -4
  296. package/dist/rtcMetrics/constants.js.map +0 -1
  297. package/dist/rtcMetrics/index.d.ts +0 -61
  298. package/dist/rtcMetrics/index.js +0 -197
  299. package/dist/rtcMetrics/index.js.map +0 -1
  300. package/dist/statsAnalyzer/global.d.ts +0 -118
  301. package/dist/statsAnalyzer/global.js +0 -127
  302. package/dist/statsAnalyzer/global.js.map +0 -1
  303. package/dist/statsAnalyzer/index.d.ts +0 -193
  304. package/dist/statsAnalyzer/index.js +0 -1019
  305. package/dist/statsAnalyzer/index.js.map +0 -1
  306. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
  307. package/dist/statsAnalyzer/mqaUtil.js +0 -181
  308. package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
  309. package/dist/transcription/index.d.ts +0 -64
  310. package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
  311. package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
  312. package/dist/types/networkQualityMonitor/index.d.ts +0 -70
  313. package/dist/types/rtcMetrics/constants.d.ts +0 -4
  314. package/dist/types/rtcMetrics/index.d.ts +0 -71
  315. package/dist/types/statsAnalyzer/global.d.ts +0 -36
  316. package/dist/types/statsAnalyzer/index.d.ts +0 -217
  317. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
  318. package/dist/webinar/collection.d.ts +0 -16
  319. package/dist/webinar/index.d.ts +0 -5
@@ -1,4 +1,5 @@
1
1
  import { RoleAssignmentOptions, RoleAssignmentRequest, ServerRoleShape } from './types';
2
+ import { Invitee } from '../meeting/type';
2
3
  declare const MembersUtil: {
3
4
  /**
4
5
  * @param {Object} invitee with emailAddress, email or phoneNumber
@@ -26,6 +27,7 @@ declare const MembersUtil: {
26
27
  */
27
28
  getAddMemberBody: (options: any) => {
28
29
  invitees: {
30
+ isInternalNumber?: any;
29
31
  roles?: any;
30
32
  address: any;
31
33
  }[];
@@ -55,13 +57,14 @@ declare const MembersUtil: {
55
57
  uri: any;
56
58
  body: {
57
59
  invitees: {
60
+ isInternalNumber?: any;
58
61
  roles?: any;
59
62
  address: any;
60
63
  }[];
61
64
  alertIfActive: any;
62
65
  };
63
66
  };
64
- isInvalidInvitee: (invitee: any) => boolean;
67
+ isInvalidInvitee: (invitee: Invitee) => boolean;
65
68
  getRemoveMemberRequestParams: (options: any) => {
66
69
  method: string;
67
70
  uri: string;
@@ -107,13 +110,15 @@ declare const MembersUtil: {
107
110
  * @param {String} requestingParticipantId id of the participant who is sending request (optional)
108
111
  * @param {String} alias alias name
109
112
  * @param {String} locusUrl url
113
+ * @param {String} suffix optional suffix
110
114
  * @returns {Object} consists of {memberID: string, requestingParticipantId: string, alias: string, locusUrl: string}
111
115
  */
112
- generateEditDisplayNameMemberOptions: (memberId: any, requestingParticipantId: any, alias: any, locusUrl: any) => {
116
+ generateEditDisplayNameMemberOptions: (memberId: any, requestingParticipantId: any, alias: any, locusUrl: any, suffix: any) => {
113
117
  memberId: any;
114
118
  requestingParticipantId: any;
115
119
  alias: any;
116
120
  locusUrl: any;
121
+ suffix: any;
117
122
  };
118
123
  getMuteMemberRequestParams: (options: any) => {
119
124
  method: string;
@@ -175,8 +180,9 @@ declare const MembersUtil: {
175
180
  method: string;
176
181
  uri: string;
177
182
  body: {
178
- aliasValue: any;
179
- requestingParticipantId: any;
183
+ aliasValue: string;
184
+ requestingParticipantId: string;
185
+ suffixValue?: string;
180
186
  };
181
187
  };
182
188
  getTransferHostToMemberRequestParams: (options: any) => {
@@ -228,16 +234,17 @@ declare const MembersUtil: {
228
234
  }[];
229
235
  };
230
236
  };
231
- cancelSIPInviteOptions: (invitee: any, locusUrl: any) => {
237
+ cancelInviteByMemberIdOptions: (invitee: any, locusUrl: any) => {
232
238
  invitee: any;
233
239
  locusUrl: any;
234
240
  };
235
- generateCancelSIPInviteRequestParams: (options: any) => {
241
+ generateCancelInviteByMemberIdRequestParams: (options: any) => {
236
242
  method: string;
237
243
  uri: any;
238
244
  body: {
239
245
  actionType: string;
240
246
  invitees: {
247
+ isInternalNumber?: any;
241
248
  address: any;
242
249
  }[];
243
250
  };
@@ -69,6 +69,7 @@ declare const BEHAVIORAL_METRICS: {
69
69
  MEETING_INFO_POLICY_ERROR: string;
70
70
  LOCUS_DELTA_SYNC_FAILED: string;
71
71
  LOCUS_DELTA_OUT_OF_ORDER: string;
72
+ LOCUS_SYNC_HANDLING_FAILED: string;
72
73
  PERMISSION_TOKEN_REFRESH: string;
73
74
  PERMISSION_TOKEN_REFRESH_ERROR: string;
74
75
  TURN_DISCOVERY_LATENCY: string;
@@ -82,5 +83,6 @@ declare const BEHAVIORAL_METRICS: {
82
83
  VERIFY_REGISTRATION_ID_SUCCESS: string;
83
84
  VERIFY_REGISTRATION_ID_ERROR: string;
84
85
  JOIN_FORBIDDEN_ERROR: string;
86
+ MEDIA_ISSUE_DETECTED: string;
85
87
  };
86
88
  export { BEHAVIORAL_METRICS as default };
@@ -7,9 +7,17 @@ export declare const RemoteMediaEvents: {
7
7
  Stopped: string;
8
8
  };
9
9
  export type RemoteVideoResolution = 'thumbnail' | 'very small' | 'small' | 'medium' | 'large' | 'best';
10
+ export declare const MAX_FS_VALUES: {
11
+ '90p': number;
12
+ '180p': number;
13
+ '360p': number;
14
+ '540p': number;
15
+ '720p': number;
16
+ '1080p': number;
17
+ };
10
18
  /**
11
19
  * Converts pane size into h264 maxFs
12
- * @param {PaneSize} paneSize
20
+ * @param {RemoteVideoResolution} paneSize
13
21
  * @returns {number}
14
22
  */
15
23
  export declare function getMaxFs(paneSize: RemoteVideoResolution): number;
@@ -29,6 +37,12 @@ export declare class RemoteMedia extends EventsScope {
29
37
  private readonly options;
30
38
  private mediaRequestId?;
31
39
  readonly id: RemoteMediaId;
40
+ /**
41
+ * The max frame size of the media request, used for logging and media requests.
42
+ * Set by setSizeHint() based on video element dimensions.
43
+ * When > 0, this value takes precedence over options.resolution in sendMediaRequest().
44
+ */
45
+ private maxFrameSize;
32
46
  /**
33
47
  * Constructs RemoteMedia instance
34
48
  *
@@ -45,6 +59,11 @@ export declare class RemoteMedia extends EventsScope {
45
59
  * @note width/height of 0 will be ignored
46
60
  */
47
61
  setSizeHint(width: any, height: any): void;
62
+ /**
63
+ * Get the current effective maxFs value that would be used in media requests
64
+ * @returns {number | undefined} The maxFs value, or undefined if no constraints
65
+ */
66
+ getEffectiveMaxFs(): number | undefined;
48
67
  /**
49
68
  * registers event listeners on the receive slot and forwards all the events
50
69
  */
@@ -45,5 +45,16 @@ export declare class RemoteMediaGroup {
45
45
  * @returns true if remote media is found
46
46
  */
47
47
  includes(remoteMedia: RemoteMedia, filter?: 'all' | 'pinned' | 'unpinned'): boolean;
48
+ /**
49
+ * Calculate the effective maxFs for the active speaker media request based on unpinned RemoteMedia instances
50
+ * @returns {number | undefined} The calculated maxFs value, or undefined if no constraints
51
+ * @private
52
+ */
53
+ private getEffectiveMaxFsForActiveSpeaker;
54
+ /**
55
+ * Get the current effective maxFs that would be used for the active speaker media request
56
+ * @returns {number | undefined} The effective maxFs value
57
+ */
58
+ getEffectiveMaxFs(): number | undefined;
48
59
  }
49
60
  export {};
@@ -1,7 +1,17 @@
1
1
  import { SendSlot, MediaType, LocalStream, MultistreamRoapMediaConnection, NamedMediaGroup, StreamState } from '@webex/internal-media-core';
2
+ /**
3
+ * This class is used to manage the sendSlots for the given media types.
4
+ */
2
5
  export default class SendSlotManager {
3
6
  private readonly slots;
4
7
  private readonly LoggerProxy;
8
+ private readonly sourceStateOverrides;
9
+ /**
10
+ * Constructor for SendSlotManager
11
+ *
12
+ * @param {any} LoggerProxy is used to log the messages
13
+ * @constructor
14
+ */
5
15
  constructor(LoggerProxy: any);
6
16
  /**
7
17
  * This method is used to create a sendSlot for the given mediaType and returns the created sendSlot
@@ -32,6 +42,12 @@ export default class SendSlotManager {
32
42
  * @returns {void}
33
43
  */
34
44
  setSourceStateOverride(mediaType: MediaType, state: StreamState | null): void;
45
+ /**
46
+ * Gets the source state override for the given media type.
47
+ * @param {MediaType} mediaType - The type of media to get the source state override for.
48
+ * @returns {StreamState | null} - The current source state override or null if not set.
49
+ */
50
+ private getSourceStateOverride;
35
51
  /**
36
52
  * This method publishes the given stream to the sendSlot for the given mediaType
37
53
  * @param {MediaType} mediaType MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
@@ -68,12 +68,12 @@ export default class Reachability extends EventsScope {
68
68
  }>;
69
69
  /**
70
70
  * Checks if the given subnet is reachable
71
- * @param {string} mediaServerIp - media server ip
71
+ * @param {string} selectedSubnetFirstOctet - selected subnet first octet, e.g. "10" for "10.X.X.X"
72
72
  * @returns {boolean | null} true if reachable, false if not reachable, null if mediaServerIp is not provided
73
73
  * @public
74
74
  * @memberof Reachability
75
75
  */
76
- isSubnetReachable(mediaServerIp?: string): boolean | null;
76
+ isSubnetReachable(selectedSubnetFirstOctet: string): boolean | null;
77
77
  /**
78
78
  * Gets a list of media clusters from the backend and performs reachability checks on all the clusters
79
79
  * @param {string} trigger - explains the reason for starting reachability
@@ -458,7 +458,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
458
458
  }, _callee7);
459
459
  }))();
460
460
  },
461
- version: "3.8.1"
461
+ version: "3.9.0-multiple-llm.2"
462
462
  });
463
463
  var _default = exports.default = Webinar;
464
464
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@webex/plugin-meetings",
3
3
  "description": "",
4
- "license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
4
+ "license": "Cisco's General Terms (https://www.cisco.com/site/us/en/about/legal/contract-experience/index.html)",
5
5
  "contributors": [
6
6
  "Adam Weeks <adweeks@cisco.com> (https://adamweeks.com/)",
7
7
  "Arun Ganeshan <arungane@cisco.com>",
@@ -19,7 +19,7 @@
19
19
  "directory": "packages/@webex/plugin-meetings"
20
20
  },
21
21
  "engines": {
22
- "node": ">=16"
22
+ "node": ">=18"
23
23
  },
24
24
  "browserify": {
25
25
  "transform": [
@@ -43,13 +43,12 @@
43
43
  "@webex/eslint-config-legacy": "0.0.0",
44
44
  "@webex/jest-config-legacy": "0.0.0",
45
45
  "@webex/legacy-tools": "0.0.0",
46
- "@webex/plugin-meetings": "3.8.1",
47
- "@webex/plugin-rooms": "3.8.1",
48
- "@webex/test-helper-chai": "3.8.1",
49
- "@webex/test-helper-mocha": "3.8.1",
50
- "@webex/test-helper-mock-webex": "3.8.1",
51
- "@webex/test-helper-retry": "3.8.1",
52
- "@webex/test-helper-test-users": "3.8.1",
46
+ "@webex/plugin-rooms": "3.9.0-multiple-llm.2",
47
+ "@webex/test-helper-chai": "3.9.0-multiple-llm.0",
48
+ "@webex/test-helper-mocha": "3.9.0-multiple-llm.0",
49
+ "@webex/test-helper-mock-webex": "3.9.0-multiple-llm.0",
50
+ "@webex/test-helper-retry": "3.9.0-multiple-llm.0",
51
+ "@webex/test-helper-test-users": "3.9.0-multiple-llm.0",
53
52
  "chai": "^4.3.4",
54
53
  "chai-as-promised": "^7.1.1",
55
54
  "eslint": "^8.24.0",
@@ -61,23 +60,23 @@
61
60
  "typescript": "^4.7.4"
62
61
  },
63
62
  "dependencies": {
64
- "@webex/common": "3.8.1",
65
- "@webex/event-dictionary-ts": "^1.0.1753",
66
- "@webex/internal-media-core": "2.17.1",
67
- "@webex/internal-plugin-conversation": "3.8.1",
68
- "@webex/internal-plugin-device": "3.8.1",
69
- "@webex/internal-plugin-llm": "3.8.1",
70
- "@webex/internal-plugin-mercury": "3.8.1",
71
- "@webex/internal-plugin-metrics": "3.8.1",
72
- "@webex/internal-plugin-support": "3.8.1",
73
- "@webex/internal-plugin-user": "3.8.1",
74
- "@webex/internal-plugin-voicea": "3.8.1",
75
- "@webex/media-helpers": "3.8.1",
76
- "@webex/plugin-people": "3.8.1",
77
- "@webex/plugin-rooms": "3.8.1",
63
+ "@webex/common": "3.9.0-multiple-llm.0",
64
+ "@webex/event-dictionary-ts": "^1.0.1930",
65
+ "@webex/internal-media-core": "2.19.0",
66
+ "@webex/internal-plugin-conversation": "3.9.0-multiple-llm.2",
67
+ "@webex/internal-plugin-device": "3.9.0-multiple-llm.0",
68
+ "@webex/internal-plugin-llm": "3.9.0-multiple-llm.2",
69
+ "@webex/internal-plugin-mercury": "3.9.0-multiple-llm.2",
70
+ "@webex/internal-plugin-metrics": "3.9.0-multiple-llm.0",
71
+ "@webex/internal-plugin-support": "3.9.0-multiple-llm.2",
72
+ "@webex/internal-plugin-user": "3.9.0-multiple-llm.0",
73
+ "@webex/internal-plugin-voicea": "3.9.0-multiple-llm.2",
74
+ "@webex/media-helpers": "3.9.0-multiple-llm.0",
75
+ "@webex/plugin-people": "3.9.0-multiple-llm.2",
76
+ "@webex/plugin-rooms": "3.9.0-multiple-llm.2",
78
77
  "@webex/ts-sdp": "^1.8.1",
79
- "@webex/web-capabilities": "^1.4.0",
80
- "@webex/webex-core": "3.8.1",
78
+ "@webex/web-capabilities": "^1.6.0",
79
+ "@webex/webex-core": "3.9.0-multiple-llm.0",
81
80
  "ampersand-collection": "^2.0.2",
82
81
  "bowser": "^2.11.0",
83
82
  "btoa": "^1.2.1",
@@ -93,5 +92,5 @@
93
92
  "//": [
94
93
  "TODO: upgrade jwt-decode when moving to node 18"
95
94
  ],
96
- "version": "3.8.1"
95
+ "version": "3.9.0-multiple-llm.2"
97
96
  }
package/src/constants.ts CHANGED
@@ -217,6 +217,7 @@ export const DIALER_REGEX = {
217
217
  PHONE_NUMBER:
218
218
  /^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$/,
219
219
  E164_FORMAT: /^\+[1-9]\d{1,14}$/,
220
+ INTERNAL_NUMBER: /^\d{1,14}$/,
220
221
  };
221
222
 
222
223
  // eslint-disable-next-line max-len
@@ -262,7 +263,6 @@ export const RECORDING_STATE = {
262
263
  PAUSED: 'paused',
263
264
  RESUMED: 'resumed',
264
265
  };
265
-
266
266
  export const SHARE_STATUS = {
267
267
  NO_SHARE: 'no_share',
268
268
  REMOTE_SHARE_ACTIVE: 'remote_share_active',
@@ -347,6 +347,7 @@ export const EVENT_TRIGGERS = {
347
347
  MEETING_SELF_LEFT: 'meeting:self:left',
348
348
  NETWORK_QUALITY: 'network:quality',
349
349
  MEDIA_NEGOTIATED: 'media:negotiated',
350
+ MEDIA_INBOUND_AUDIO_ISSUE_DETECTED: 'media:inboundAudio:issueDetected',
350
351
  // the following events apply only to multistream media connections
351
352
  ACTIVE_SPEAKER_CHANGED: 'media:activeSpeakerChanged',
352
353
  REMOTE_VIDEO_SOURCE_COUNT_CHANGED: 'media:remoteVideoSourceCountChanged',
@@ -372,6 +373,7 @@ export const EVENT_TRIGGERS = {
372
373
  MEETING_CONTROLS_ANNOTATION_UPDATED: 'meeting:controls:annotation:updated',
373
374
  MEETING_CONTROLS_REMOTE_DESKTOP_CONTROL_UPDATED:
374
375
  'meeting:controls:remote-desktop-control:updated',
376
+ MEETING_CONTROLS_POLLING_QA_UPDATED: 'meeting:controls:polling-qa:updated',
375
377
  // Locus URL changed
376
378
  MEETING_LOCUS_URL_UPDATE: 'meeting:locus:locusUrl:update',
377
379
  MEETING_STREAM_PUBLISH_STATE_CHANGED: 'meeting:streamPublishStateChanged',
@@ -379,6 +381,7 @@ export const EVENT_TRIGGERS = {
379
381
  MEETING_TRANSCRIPTION_CONNECTED: 'meeting:transcription:connected',
380
382
  MEETING_STARTED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:started',
381
383
  MEETING_STOPPED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:stopped',
384
+ MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED: 'meeting:transcription:spokenLanguageUpdate',
382
385
  MEETING_MANUAL_CAPTION_UPDATED: 'meeting:manualCaptionControl:updated',
383
386
  MEETING_CAPTION_RECEIVED: 'meeting:caption-received',
384
387
  MEETING_PARTICIPANT_REASON_CHANGED: 'meeting:participant-reason-changed',
@@ -699,6 +702,8 @@ export const LOCUSINFO = {
699
702
  CONTROLS_MEETING_LAYOUT_UPDATED: 'CONTROLS_MEETING_LAYOUT_UPDATED',
700
703
  CONTROLS_RECORDING_UPDATED: 'CONTROLS_RECORDING_UPDATED',
701
704
  CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
705
+ CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED:
706
+ 'CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED',
702
707
  CONTROLS_MEETING_MANUAL_CAPTION_UPDATED: 'CONTROLS_MEETING_MANUAL_CAPTION_UPDATED',
703
708
  CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
704
709
  CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
@@ -717,6 +722,7 @@ export const LOCUSINFO = {
717
722
  CONTROLS_STAGE_VIEW_UPDATED: 'CONTROLS_STAGE_VIEW_UPDATED',
718
723
  CONTROLS_ANNOTATION_CHANGED: 'CONTROLS_ANNOTATION_CHANGED',
719
724
  CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED: 'CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED',
725
+ CONTROLS_POLLING_QA_CHANGED: 'CONTROLS_POLLING_QA_CHANGED',
720
726
  SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
721
727
  SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
722
728
  SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
@@ -943,6 +949,9 @@ export const DISPLAY_HINTS = {
943
949
  PREMISE_RECORDING_CONTROL_PAUSE: 'PREMISE_RECORDING_CONTROL_PAUSE',
944
950
  PREMISE_RECORDING_CONTROL_STOP: 'PREMISE_RECORDING_CONTROL_STOP',
945
951
  PREMISE_RECORDING_CONTROL_RESUME: 'PREMISE_RECORDING_CONTROL_RESUME',
952
+ LOCAL_RECORDING_STATUS_STARTED: 'LOCAL_RECORDING_STATUS_STARTED',
953
+ LOCAL_RECORDING_STATUS_STOPPED: 'LOCAL_RECORDING_STATUS_STOPPED',
954
+ LOCAL_RECORDING_STATUS_PAUSED: 'LOCAL_RECORDING_STATUS_PAUSED',
946
955
  LOCK_CONTROL_UNLOCK: 'LOCK_CONTROL_UNLOCK',
947
956
  LOCK_CONTROL_LOCK: 'LOCK_CONTROL_LOCK',
948
957
  LOCK_STATUS_LOCKED: 'LOCK_STATUS_LOCKED',
@@ -958,6 +967,7 @@ export const DISPLAY_HINTS = {
958
967
  MANUAL_CAPTION_STOP: 'MANUAL_CAPTION_STOP',
959
968
  MANUAL_CAPTION_STATUS_ACTIVE: 'MANUAL_CAPTION_STATUS_ACTIVE',
960
969
  DISPLAY_REAL_TIME_TRANSLATION: 'DISPLAY_REAL_TIME_TRANSLATION',
970
+ SPOKEN_LANGUAGE_AUTO_DETECTION_ENABLED: 'SPOKEN_LANGUAGE_AUTO_DETECTION_ENABLED',
961
971
  ENABLE_CAPTION_PANEL: 'ENABLE_CAPTION_PANEL',
962
972
  DISPLAY_NON_ENGLISH_ASR: 'DISPLAY_NON_ENGLISH_ASR',
963
973
  TRANSCRIPTION_CONTROL_START: 'TRANSCRIPTION_CONTROL_START',
@@ -982,7 +992,6 @@ export const DISPLAY_HINTS = {
982
992
  CAN_RENAME_SELF_AND_OBSERVED: 'CAN_RENAME_SELF_AND_OBSERVED',
983
993
  CAN_RENAME_OTHERS: 'CAN_RENAME_OTHERS',
984
994
  MOVE_TO_LOBBY: 'MOVE_TO_LOBBY',
985
-
986
995
  // breakout session
987
996
  BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',
988
997
  BROADCAST_MESSAGE_TO_BREAKOUT: 'BROADCAST_MESSAGE_TO_BREAKOUT',
@@ -1046,6 +1055,10 @@ export const DISPLAY_HINTS = {
1046
1055
  // Remote Desktop Control
1047
1056
  ENABLE_RDC_MEETING_OPTION: 'ENABLE_RDC_MEETING_OPTION',
1048
1057
  DISABLE_RDC_MEETING_OPTION: 'DISABLE_RDC_MEETING_OPTION',
1058
+
1059
+ // Polling QA
1060
+ ENABLE_ATTENDEE_START_POLLING_QA: 'ENABLE_ATTENDEE_START_POLLING_QA',
1061
+ DISABLE_ATTENDEE_START_POLLING_QA: 'DISABLE_ATTENDEE_START_POLLING_QA',
1049
1062
  };
1050
1063
 
1051
1064
  export const INTERSTITIAL_DISPLAY_HINTS = [DISPLAY_HINTS.VOIP_IS_ENABLED];
@@ -1179,6 +1192,7 @@ export const QUALITY_LEVELS = {
1179
1192
  HIGH: 'HIGH',
1180
1193
  '360p': '360p',
1181
1194
  '480p': '480p',
1195
+ '540p': '540p',
1182
1196
  '720p': '720p',
1183
1197
  '1080p': '1080p',
1184
1198
  };
@@ -1208,6 +1222,18 @@ export const AVAILABLE_RESOLUTIONS = {
1208
1222
  },
1209
1223
  },
1210
1224
  },
1225
+ '540p': {
1226
+ video: {
1227
+ width: {
1228
+ max: 960,
1229
+ ideal: 960,
1230
+ },
1231
+ height: {
1232
+ max: 540,
1233
+ ideal: 540,
1234
+ },
1235
+ },
1236
+ },
1211
1237
  '720p': {
1212
1238
  video: {
1213
1239
  width: {
@@ -1348,3 +1374,9 @@ export const INITIAL_REGISTRATION_STATUS = {
1348
1374
  mercuryConnect: false,
1349
1375
  checkH264Support: false,
1350
1376
  };
1377
+
1378
+ export const STAGE_MANAGER_TYPE = {
1379
+ LOGO: 0b001,
1380
+ BACKGROUND: 0b010,
1381
+ NAME_LABEL: 0b100,
1382
+ };
@@ -14,6 +14,7 @@ enum Control {
14
14
  viewTheParticipantList = 'viewTheParticipantList',
15
15
  annotation = 'annotation',
16
16
  rdc = 'rdc',
17
+ pollingQA = 'pollingQA',
17
18
  }
18
19
 
19
20
  export {Control, Setting};
@@ -48,6 +48,10 @@ export interface RemoteDesktopControlProperties {
48
48
  enabled?: boolean;
49
49
  }
50
50
 
51
+ export interface PollingQAProperties {
52
+ enabled?: boolean;
53
+ }
54
+
51
55
  export type Properties =
52
56
  | AudioProperties
53
57
  | RaiseHandProperties
@@ -56,7 +60,8 @@ export type Properties =
56
60
  | VideoProperties
57
61
  | ViewTheParticipantListProperties
58
62
  | AnnotationProperties
59
- | RemoteDesktopControlProperties;
63
+ | RemoteDesktopControlProperties
64
+ | PollingQAProperties;
60
65
 
61
66
  export interface ControlConfig<Props = Properties> {
62
67
  /**
@@ -9,6 +9,7 @@ import {
9
9
  VideoProperties,
10
10
  type RemoteDesktopControlProperties,
11
11
  type AnnotationProperties,
12
+ type PollingQAProperties,
12
13
  } from './types';
13
14
 
14
15
  /**
@@ -304,6 +305,29 @@ class Utils {
304
305
  return Utils.hasHints({requiredHints, displayHints});
305
306
  }
306
307
 
308
+ /**
309
+ * Validate if a pollingQA-scoped control is allowed to be sent to the service.
310
+ *
311
+ * @param {ControlConfig<PollingQAProperties>} control - Polling QA config to validate
312
+ * @param {Array<string>} displayHints - All available hints
313
+ * @returns {boolean} - True if all of the actions are allowed.
314
+ */
315
+ public static canUpdatePollingQA(
316
+ control: ControlConfig<PollingQAProperties>,
317
+ displayHints: Array<string>
318
+ ): boolean {
319
+ const requiredHints = [];
320
+
321
+ if (control.properties.enabled === true) {
322
+ requiredHints.push(DISPLAY_HINTS.ENABLE_ATTENDEE_START_POLLING_QA);
323
+ }
324
+ if (control.properties.enabled === false) {
325
+ requiredHints.push(DISPLAY_HINTS.DISABLE_ATTENDEE_START_POLLING_QA);
326
+ }
327
+
328
+ return Utils.hasHints({requiredHints, displayHints});
329
+ }
330
+
307
331
  /**
308
332
  * Validate that a control can be sent to the service based on the provided
309
333
  * display hints.
@@ -363,6 +387,13 @@ class Utils {
363
387
  );
364
388
  break;
365
389
 
390
+ case Control.pollingQA:
391
+ determinant = Utils.canUpdatePollingQA(
392
+ control as ControlConfig<PollingQAProperties>,
393
+ displayHints
394
+ );
395
+ break;
396
+
366
397
  default:
367
398
  determinant = false;
368
399
  }
@@ -40,6 +40,7 @@ ControlsUtils.parse = (controls: any) => {
40
40
  parsedControls.transcribe = {
41
41
  transcribing: controls.transcribe.transcribing,
42
42
  caption: controls.transcribe.caption,
43
+ spokenLanguage: controls.transcribe.spokenLanguage,
43
44
  };
44
45
  }
45
46
 
@@ -123,6 +124,12 @@ ControlsUtils.parse = (controls: any) => {
123
124
  };
124
125
  }
125
126
 
127
+ if (controls?.pollingQAControl) {
128
+ parsedControls.pollingQAControl = {
129
+ enabled: controls.pollingQAControl.enabled,
130
+ };
131
+ }
132
+
126
133
  return parsedControls;
127
134
  };
128
135
 
@@ -186,6 +193,11 @@ ControlsUtils.getControls = (oldControls: any, newControls: any) => {
186
193
  !isEqual(previous?.transcribe?.transcribing, current?.transcribe?.transcribing) && // upon first join, previous?.record?.recording = undefined; thus, never going to be equal and will always return true
187
194
  (previous?.transcribe?.transcribing || current?.transcribe?.transcribing), // therefore, condition added to prevent false firings of #meeting:recording:stopped upon first joining a meeting
188
195
 
196
+ hasTranscribeSpokenLanguageChanged:
197
+ current?.transcribe &&
198
+ !isEqual(previous?.transcribe?.spokenLanguage, current?.transcribe?.spokenLanguage) &&
199
+ !!(previous?.transcribe?.spokenLanguage || current?.transcribe?.spokenLanguage),
200
+
189
201
  hasManualCaptionChanged:
190
202
  current?.manualCaptionControl &&
191
203
  !isEqual(previous?.manualCaptionControl?.enabled, current?.manualCaptionControl?.enabled) &&
@@ -229,6 +241,9 @@ ControlsUtils.getControls = (oldControls: any, newControls: any) => {
229
241
 
230
242
  hasRemoteDesktopControlChanged:
231
243
  current?.rdcControl?.enabled !== previous?.rdcControl?.enabled,
244
+
245
+ hasPollingQAControlChanged:
246
+ current?.pollingQAControl?.enabled !== previous?.pollingQAControl?.enabled,
232
247
  },
233
248
  };
234
249
  };