@webex/plugin-meetings 3.0.0-beta.13 → 3.0.0-beta.131

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 (519) hide show
  1. package/README.md +45 -1
  2. package/UPGRADING.md +9 -9
  3. package/browsers.js +19 -24
  4. package/dist/annotation/annotation.types.js +7 -0
  5. package/dist/annotation/annotation.types.js.map +1 -0
  6. package/dist/annotation/constants.js +48 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.js +355 -0
  9. package/dist/annotation/index.js.map +1 -0
  10. package/dist/breakouts/breakout.js +193 -0
  11. package/dist/breakouts/breakout.js.map +1 -0
  12. package/dist/breakouts/collection.js +23 -0
  13. package/dist/breakouts/collection.js.map +1 -0
  14. package/dist/breakouts/edit-lock-error.js +52 -0
  15. package/dist/breakouts/edit-lock-error.js.map +1 -0
  16. package/dist/breakouts/events.js +43 -0
  17. package/dist/breakouts/events.js.map +1 -0
  18. package/dist/breakouts/index.js +994 -0
  19. package/dist/breakouts/index.js.map +1 -0
  20. package/dist/breakouts/request.js +78 -0
  21. package/dist/breakouts/request.js.map +1 -0
  22. package/dist/breakouts/utils.js +67 -0
  23. package/dist/breakouts/utils.js.map +1 -0
  24. package/dist/common/browser-detection.js +1 -20
  25. package/dist/common/browser-detection.js.map +1 -1
  26. package/dist/common/collection.js +5 -20
  27. package/dist/common/collection.js.map +1 -1
  28. package/dist/common/config.js +0 -7
  29. package/dist/common/config.js.map +1 -1
  30. package/dist/common/errors/captcha-error.js +5 -26
  31. package/dist/common/errors/captcha-error.js.map +1 -1
  32. package/dist/common/errors/intent-to-join.js +5 -26
  33. package/dist/common/errors/intent-to-join.js.map +1 -1
  34. package/dist/common/errors/join-meeting.js +6 -27
  35. package/dist/common/errors/join-meeting.js.map +1 -1
  36. package/dist/common/errors/media.js +5 -26
  37. package/dist/common/errors/media.js.map +1 -1
  38. package/dist/common/errors/parameter.js +5 -33
  39. package/dist/common/errors/parameter.js.map +1 -1
  40. package/dist/common/errors/password-error.js +5 -26
  41. package/dist/common/errors/password-error.js.map +1 -1
  42. package/dist/common/errors/permission.js +4 -25
  43. package/dist/common/errors/permission.js.map +1 -1
  44. package/dist/common/errors/reconnection-in-progress.js +0 -17
  45. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  46. package/dist/common/errors/reconnection.js +5 -26
  47. package/dist/common/errors/reconnection.js.map +1 -1
  48. package/dist/common/errors/stats.js +5 -26
  49. package/dist/common/errors/stats.js.map +1 -1
  50. package/dist/common/errors/webex-errors.js +6 -41
  51. package/dist/common/errors/webex-errors.js.map +1 -1
  52. package/dist/common/errors/webex-meetings-error.js +1 -24
  53. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  54. package/dist/common/events/events-scope.js +0 -22
  55. package/dist/common/events/events-scope.js.map +1 -1
  56. package/dist/common/events/events.js +0 -23
  57. package/dist/common/events/events.js.map +1 -1
  58. package/dist/common/events/trigger-proxy.js +0 -12
  59. package/dist/common/events/trigger-proxy.js.map +1 -1
  60. package/dist/common/events/util.js +0 -15
  61. package/dist/common/events/util.js.map +1 -1
  62. package/dist/common/logs/logger-config.js +0 -4
  63. package/dist/common/logs/logger-config.js.map +1 -1
  64. package/dist/common/logs/logger-proxy.js +1 -8
  65. package/dist/common/logs/logger-proxy.js.map +1 -1
  66. package/dist/common/logs/request.js +35 -61
  67. package/dist/common/logs/request.js.map +1 -1
  68. package/dist/common/queue.js +4 -14
  69. package/dist/common/queue.js.map +1 -1
  70. package/dist/config.js +6 -6
  71. package/dist/config.js.map +1 -1
  72. package/dist/constants.js +203 -53
  73. package/dist/constants.js.map +1 -1
  74. package/dist/controls-options-manager/constants.js +14 -0
  75. package/dist/controls-options-manager/constants.js.map +1 -0
  76. package/dist/controls-options-manager/enums.js +27 -0
  77. package/dist/controls-options-manager/enums.js.map +1 -0
  78. package/dist/controls-options-manager/index.js +297 -0
  79. package/dist/controls-options-manager/index.js.map +1 -0
  80. package/dist/controls-options-manager/types.js +7 -0
  81. package/dist/controls-options-manager/types.js.map +1 -0
  82. package/dist/controls-options-manager/util.js +294 -0
  83. package/dist/controls-options-manager/util.js.map +1 -0
  84. package/dist/index.js +72 -17
  85. package/dist/index.js.map +1 -1
  86. package/dist/locus-info/controlsUtils.js +100 -29
  87. package/dist/locus-info/controlsUtils.js.map +1 -1
  88. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  89. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  90. package/dist/locus-info/fullState.js +0 -15
  91. package/dist/locus-info/fullState.js.map +1 -1
  92. package/dist/locus-info/hostUtils.js +4 -12
  93. package/dist/locus-info/hostUtils.js.map +1 -1
  94. package/dist/locus-info/index.js +406 -216
  95. package/dist/locus-info/index.js.map +1 -1
  96. package/dist/locus-info/infoUtils.js +0 -38
  97. package/dist/locus-info/infoUtils.js.map +1 -1
  98. package/dist/locus-info/mediaSharesUtils.js +54 -38
  99. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  100. package/dist/locus-info/parser.js +88 -123
  101. package/dist/locus-info/parser.js.map +1 -1
  102. package/dist/locus-info/selfUtils.js +105 -91
  103. package/dist/locus-info/selfUtils.js.map +1 -1
  104. package/dist/media/index.js +55 -165
  105. package/dist/media/index.js.map +1 -1
  106. package/dist/media/properties.js +71 -117
  107. package/dist/media/properties.js.map +1 -1
  108. package/dist/media/util.js +2 -9
  109. package/dist/media/util.js.map +1 -1
  110. package/dist/mediaQualityMetrics/config.js +505 -495
  111. package/dist/mediaQualityMetrics/config.js.map +1 -1
  112. package/dist/meeting/in-meeting-actions.js +77 -14
  113. package/dist/meeting/in-meeting-actions.js.map +1 -1
  114. package/dist/meeting/index.js +2603 -2462
  115. package/dist/meeting/index.js.map +1 -1
  116. package/dist/meeting/locusMediaRequest.js +291 -0
  117. package/dist/meeting/locusMediaRequest.js.map +1 -0
  118. package/dist/meeting/muteState.js +292 -138
  119. package/dist/meeting/muteState.js.map +1 -1
  120. package/dist/meeting/request.js +315 -336
  121. package/dist/meeting/request.js.map +1 -1
  122. package/dist/meeting/request.type.js +7 -0
  123. package/dist/meeting/request.type.js.map +1 -0
  124. package/dist/meeting/state.js +21 -31
  125. package/dist/meeting/state.js.map +1 -1
  126. package/dist/meeting/util.js +463 -583
  127. package/dist/meeting/util.js.map +1 -1
  128. package/dist/meeting-info/collection.js +3 -25
  129. package/dist/meeting-info/collection.js.map +1 -1
  130. package/dist/meeting-info/index.js +10 -33
  131. package/dist/meeting-info/index.js.map +1 -1
  132. package/dist/meeting-info/meeting-info-v2.js +305 -286
  133. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  134. package/dist/meeting-info/request.js +1 -16
  135. package/dist/meeting-info/request.js.map +1 -1
  136. package/dist/meeting-info/util.js +98 -183
  137. package/dist/meeting-info/util.js.map +1 -1
  138. package/dist/meeting-info/utilv2.js +156 -232
  139. package/dist/meeting-info/utilv2.js.map +1 -1
  140. package/dist/meetings/collection.js +24 -20
  141. package/dist/meetings/collection.js.map +1 -1
  142. package/dist/meetings/index.js +692 -593
  143. package/dist/meetings/index.js.map +1 -1
  144. package/dist/meetings/request.js +23 -42
  145. package/dist/meetings/request.js.map +1 -1
  146. package/dist/meetings/util.js +186 -155
  147. package/dist/meetings/util.js.map +1 -1
  148. package/dist/member/index.js +89 -88
  149. package/dist/member/index.js.map +1 -1
  150. package/dist/member/types.js +15 -0
  151. package/dist/member/types.js.map +1 -0
  152. package/dist/member/util.js +101 -69
  153. package/dist/member/util.js.map +1 -1
  154. package/dist/members/collection.js +12 -12
  155. package/dist/members/collection.js.map +1 -1
  156. package/dist/members/index.js +166 -205
  157. package/dist/members/index.js.map +1 -1
  158. package/dist/members/request.js +120 -85
  159. package/dist/members/request.js.map +1 -1
  160. package/dist/members/types.js +15 -0
  161. package/dist/members/types.js.map +1 -0
  162. package/dist/members/util.js +314 -260
  163. package/dist/members/util.js.map +1 -1
  164. package/dist/metrics/config.js +50 -16
  165. package/dist/metrics/config.js.map +1 -1
  166. package/dist/metrics/constants.js +4 -7
  167. package/dist/metrics/constants.js.map +1 -1
  168. package/dist/metrics/index.js +93 -162
  169. package/dist/metrics/index.js.map +1 -1
  170. package/dist/multistream/mediaRequestManager.js +167 -50
  171. package/dist/multistream/mediaRequestManager.js.map +1 -1
  172. package/dist/multistream/receiveSlot.js +58 -65
  173. package/dist/multistream/receiveSlot.js.map +1 -1
  174. package/dist/multistream/receiveSlotManager.js +74 -93
  175. package/dist/multistream/receiveSlotManager.js.map +1 -1
  176. package/dist/multistream/remoteMedia.js +55 -74
  177. package/dist/multistream/remoteMedia.js.map +1 -1
  178. package/dist/multistream/remoteMediaGroup.js +6 -40
  179. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  180. package/dist/multistream/remoteMediaManager.js +466 -442
  181. package/dist/multistream/remoteMediaManager.js.map +1 -1
  182. package/dist/networkQualityMonitor/index.js +32 -59
  183. package/dist/networkQualityMonitor/index.js.map +1 -1
  184. package/dist/personal-meeting-room/index.js +10 -45
  185. package/dist/personal-meeting-room/index.js.map +1 -1
  186. package/dist/personal-meeting-room/request.js +2 -33
  187. package/dist/personal-meeting-room/request.js.map +1 -1
  188. package/dist/personal-meeting-room/util.js +0 -13
  189. package/dist/personal-meeting-room/util.js.map +1 -1
  190. package/dist/reachability/index.js +190 -199
  191. package/dist/reachability/index.js.map +1 -1
  192. package/dist/reachability/request.js +14 -23
  193. package/dist/reachability/request.js.map +1 -1
  194. package/dist/reactions/constants.js +13 -0
  195. package/dist/reactions/constants.js.map +1 -0
  196. package/dist/reactions/reactions.js +2 -4
  197. package/dist/reactions/reactions.js.map +1 -1
  198. package/dist/reactions/reactions.type.js +19 -23
  199. package/dist/reactions/reactions.type.js.map +1 -1
  200. package/dist/reconnection-manager/index.js +326 -465
  201. package/dist/reconnection-manager/index.js.map +1 -1
  202. package/dist/recording-controller/enums.js +17 -0
  203. package/dist/recording-controller/enums.js.map +1 -0
  204. package/dist/recording-controller/index.js +343 -0
  205. package/dist/recording-controller/index.js.map +1 -0
  206. package/dist/recording-controller/util.js +63 -0
  207. package/dist/recording-controller/util.js.map +1 -0
  208. package/dist/roap/index.js +31 -75
  209. package/dist/roap/index.js.map +1 -1
  210. package/dist/roap/request.js +129 -136
  211. package/dist/roap/request.js.map +1 -1
  212. package/dist/roap/turnDiscovery.js +143 -103
  213. package/dist/roap/turnDiscovery.js.map +1 -1
  214. package/dist/statsAnalyzer/global.js +1 -95
  215. package/dist/statsAnalyzer/global.js.map +1 -1
  216. package/dist/statsAnalyzer/index.js +369 -461
  217. package/dist/statsAnalyzer/index.js.map +1 -1
  218. package/dist/statsAnalyzer/mqaUtil.js +144 -94
  219. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  220. package/dist/transcription/index.js +13 -45
  221. package/dist/transcription/index.js.map +1 -1
  222. package/dist/types/annotation/annotation.types.d.ts +35 -0
  223. package/dist/types/annotation/constants.d.ts +31 -0
  224. package/dist/types/annotation/index.d.ts +124 -0
  225. package/dist/types/breakouts/breakout.d.ts +8 -0
  226. package/dist/types/breakouts/collection.d.ts +5 -0
  227. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  228. package/dist/types/breakouts/events.d.ts +2 -0
  229. package/dist/types/breakouts/index.d.ts +5 -0
  230. package/dist/types/breakouts/request.d.ts +22 -0
  231. package/dist/types/breakouts/utils.d.ts +15 -0
  232. package/dist/types/common/browser-detection.d.ts +9 -0
  233. package/dist/types/common/collection.d.ts +48 -0
  234. package/dist/types/common/config.d.ts +2 -0
  235. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  236. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  237. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  238. package/dist/types/common/errors/media.d.ts +15 -0
  239. package/dist/types/common/errors/parameter.d.ts +15 -0
  240. package/dist/types/common/errors/password-error.d.ts +15 -0
  241. package/dist/types/common/errors/permission.d.ts +14 -0
  242. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  243. package/dist/types/common/errors/reconnection.d.ts +15 -0
  244. package/dist/types/common/errors/stats.d.ts +15 -0
  245. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  246. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  247. package/dist/types/common/events/events-scope.d.ts +17 -0
  248. package/dist/types/common/events/events.d.ts +12 -0
  249. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  250. package/dist/types/common/events/util.d.ts +2 -0
  251. package/dist/types/common/logs/logger-config.d.ts +2 -0
  252. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  253. package/dist/types/common/logs/request.d.ts +34 -0
  254. package/dist/types/common/queue.d.ts +32 -0
  255. package/dist/types/config.d.ts +78 -0
  256. package/dist/types/constants.d.ts +993 -0
  257. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  258. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  259. package/dist/types/controls-options-manager/index.d.ts +136 -0
  260. package/dist/types/controls-options-manager/types.d.ts +43 -0
  261. package/dist/types/controls-options-manager/util.d.ts +1 -0
  262. package/dist/types/index.d.ts +7 -0
  263. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  264. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  265. package/dist/types/locus-info/fullState.d.ts +2 -0
  266. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  267. package/dist/types/locus-info/index.d.ts +315 -0
  268. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  269. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  270. package/dist/types/locus-info/parser.d.ts +212 -0
  271. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  272. package/dist/types/media/index.d.ts +34 -0
  273. package/dist/types/media/properties.d.ts +108 -0
  274. package/dist/types/media/util.d.ts +2 -0
  275. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  276. package/dist/types/meeting/in-meeting-actions.d.ts +147 -0
  277. package/dist/types/meeting/index.d.ts +1762 -0
  278. package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
  279. package/dist/types/meeting/muteState.d.ts +186 -0
  280. package/dist/types/meeting/request.d.ts +269 -0
  281. package/dist/types/meeting/request.type.d.ts +11 -0
  282. package/dist/types/meeting/state.d.ts +9 -0
  283. package/dist/types/meeting/util.d.ts +76 -0
  284. package/dist/types/meeting-info/collection.d.ts +20 -0
  285. package/dist/types/meeting-info/index.d.ts +57 -0
  286. package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
  287. package/dist/types/meeting-info/request.d.ts +22 -0
  288. package/dist/types/meeting-info/util.d.ts +2 -0
  289. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  290. package/dist/types/meetings/collection.d.ts +31 -0
  291. package/dist/types/meetings/index.d.ts +345 -0
  292. package/dist/types/meetings/request.d.ts +27 -0
  293. package/dist/types/meetings/util.d.ts +18 -0
  294. package/dist/types/member/index.d.ts +157 -0
  295. package/dist/types/member/types.d.ts +21 -0
  296. package/dist/types/member/util.d.ts +2 -0
  297. package/dist/types/members/collection.d.ts +29 -0
  298. package/dist/types/members/index.d.ts +353 -0
  299. package/dist/types/members/request.d.ts +114 -0
  300. package/dist/types/members/types.d.ts +24 -0
  301. package/dist/types/members/util.d.ts +210 -0
  302. package/dist/types/metrics/config.d.ts +195 -0
  303. package/dist/types/metrics/constants.d.ts +55 -0
  304. package/dist/types/metrics/index.d.ts +169 -0
  305. package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
  306. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  307. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  308. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  309. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  310. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  311. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  312. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  313. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  314. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  315. package/dist/types/reachability/index.d.ts +152 -0
  316. package/dist/types/reachability/request.d.ts +37 -0
  317. package/dist/types/reactions/constants.d.ts +3 -0
  318. package/dist/types/reactions/reactions.d.ts +4 -0
  319. package/dist/types/reactions/reactions.type.d.ts +52 -0
  320. package/dist/types/reconnection-manager/index.d.ts +126 -0
  321. package/dist/types/recording-controller/enums.d.ts +7 -0
  322. package/dist/types/recording-controller/index.d.ts +193 -0
  323. package/dist/types/recording-controller/util.d.ts +13 -0
  324. package/dist/types/roap/index.d.ts +77 -0
  325. package/dist/types/roap/request.d.ts +36 -0
  326. package/dist/types/roap/turnDiscovery.d.ts +91 -0
  327. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  328. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  329. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  330. package/dist/types/transcription/index.d.ts +64 -0
  331. package/internal-README.md +7 -6
  332. package/package.json +28 -21
  333. package/src/annotation/annotation.types.ts +42 -0
  334. package/src/annotation/constants.ts +36 -0
  335. package/src/annotation/index.ts +339 -0
  336. package/src/breakouts/README.md +220 -0
  337. package/src/breakouts/breakout.ts +163 -0
  338. package/src/breakouts/collection.ts +19 -0
  339. package/src/breakouts/edit-lock-error.ts +25 -0
  340. package/src/breakouts/events.ts +37 -0
  341. package/src/breakouts/index.ts +860 -0
  342. package/src/breakouts/request.ts +55 -0
  343. package/src/breakouts/utils.ts +57 -0
  344. package/src/common/browser-detection.ts +9 -6
  345. package/src/common/collection.ts +3 -1
  346. package/src/common/errors/captcha-error.ts +6 -6
  347. package/src/common/errors/intent-to-join.ts +6 -6
  348. package/src/common/errors/join-meeting.ts +12 -8
  349. package/src/common/errors/media.ts +6 -6
  350. package/src/common/errors/parameter.ts +9 -6
  351. package/src/common/errors/password-error.ts +6 -6
  352. package/src/common/errors/permission.ts +5 -5
  353. package/src/common/errors/reconnection.ts +6 -6
  354. package/src/common/errors/stats.ts +6 -6
  355. package/src/common/errors/webex-errors.ts +7 -5
  356. package/src/common/errors/webex-meetings-error.ts +1 -1
  357. package/src/common/events/events-scope.ts +5 -1
  358. package/src/common/events/events.ts +5 -1
  359. package/src/common/events/trigger-proxy.ts +8 -3
  360. package/src/common/events/util.ts +1 -2
  361. package/src/common/logs/logger-proxy.ts +21 -10
  362. package/src/common/logs/request.ts +11 -8
  363. package/src/config.ts +16 -12
  364. package/src/constants.ts +153 -7
  365. package/src/controls-options-manager/constants.ts +5 -0
  366. package/src/controls-options-manager/enums.ts +18 -0
  367. package/src/controls-options-manager/index.ts +278 -0
  368. package/src/controls-options-manager/types.ts +59 -0
  369. package/src/controls-options-manager/util.ts +281 -0
  370. package/src/index.ts +33 -0
  371. package/src/locus-info/controlsUtils.ts +142 -24
  372. package/src/locus-info/fullState.ts +15 -11
  373. package/src/locus-info/hostUtils.ts +4 -3
  374. package/src/locus-info/index.ts +346 -55
  375. package/src/locus-info/infoUtils.ts +12 -4
  376. package/src/locus-info/mediaSharesUtils.ts +52 -4
  377. package/src/locus-info/parser.ts +46 -68
  378. package/src/locus-info/selfUtils.ts +195 -56
  379. package/src/media/index.ts +139 -196
  380. package/src/media/properties.ts +43 -36
  381. package/src/media/util.ts +1 -1
  382. package/src/mediaQualityMetrics/config.ts +380 -378
  383. package/src/meeting/in-meeting-actions.ts +159 -3
  384. package/src/meeting/index.ts +2803 -1584
  385. package/src/meeting/locusMediaRequest.ts +309 -0
  386. package/src/meeting/muteState.ts +290 -72
  387. package/src/meeting/request.ts +247 -178
  388. package/src/meeting/request.type.ts +13 -0
  389. package/src/meeting/state.ts +45 -30
  390. package/src/meeting/util.ts +445 -395
  391. package/src/meeting-info/collection.ts +2 -1
  392. package/src/meeting-info/index.ts +32 -30
  393. package/src/meeting-info/meeting-info-v2.ts +235 -116
  394. package/src/meeting-info/request.ts +9 -3
  395. package/src/meeting-info/util.ts +54 -46
  396. package/src/meeting-info/utilv2.ts +71 -55
  397. package/src/meetings/collection.ts +21 -1
  398. package/src/meetings/index.ts +772 -437
  399. package/src/meetings/request.ts +29 -25
  400. package/src/meetings/util.ts +132 -33
  401. package/src/member/index.ts +95 -49
  402. package/src/member/types.ts +24 -0
  403. package/src/member/util.ts +106 -13
  404. package/src/members/collection.ts +8 -1
  405. package/src/members/index.ts +288 -130
  406. package/src/members/request.ts +144 -31
  407. package/src/members/types.ts +28 -0
  408. package/src/members/util.ts +316 -235
  409. package/src/metrics/config.ts +302 -90
  410. package/src/metrics/constants.ts +2 -6
  411. package/src/metrics/index.ts +124 -95
  412. package/src/multistream/mediaRequestManager.ts +203 -45
  413. package/src/multistream/receiveSlot.ts +69 -26
  414. package/src/multistream/receiveSlotManager.ts +62 -38
  415. package/src/multistream/remoteMedia.ts +30 -4
  416. package/src/multistream/remoteMediaGroup.ts +4 -3
  417. package/src/multistream/remoteMediaManager.ts +230 -66
  418. package/src/networkQualityMonitor/index.ts +24 -27
  419. package/src/personal-meeting-room/index.ts +12 -16
  420. package/src/personal-meeting-room/request.ts +10 -3
  421. package/src/personal-meeting-room/util.ts +3 -3
  422. package/src/reachability/index.ts +131 -79
  423. package/src/reachability/request.ts +43 -34
  424. package/src/reactions/constants.ts +4 -0
  425. package/src/reactions/reactions.ts +8 -8
  426. package/src/reactions/reactions.type.ts +31 -5
  427. package/src/reconnection-manager/index.ts +193 -111
  428. package/src/recording-controller/enums.ts +8 -0
  429. package/src/recording-controller/index.ts +315 -0
  430. package/src/recording-controller/util.ts +58 -0
  431. package/src/roap/index.ts +53 -53
  432. package/src/roap/request.ts +77 -64
  433. package/src/roap/turnDiscovery.ts +101 -48
  434. package/src/statsAnalyzer/global.ts +8 -104
  435. package/src/statsAnalyzer/index.ts +624 -376
  436. package/src/statsAnalyzer/mqaUtil.ts +203 -90
  437. package/src/transcription/index.ts +34 -32
  438. package/test/integration/spec/converged-space-meetings.js +177 -0
  439. package/test/integration/spec/journey.js +670 -466
  440. package/test/integration/spec/space-meeting.js +320 -204
  441. package/test/integration/spec/transcription.js +7 -8
  442. package/test/unit/spec/annotation/index.ts +433 -0
  443. package/test/unit/spec/breakouts/breakout.ts +203 -0
  444. package/test/unit/spec/breakouts/collection.ts +15 -0
  445. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  446. package/test/unit/spec/breakouts/events.ts +77 -0
  447. package/test/unit/spec/breakouts/index.ts +1609 -0
  448. package/test/unit/spec/breakouts/request.ts +104 -0
  449. package/test/unit/spec/breakouts/utils.js +72 -0
  450. package/test/unit/spec/common/browser-detection.js +9 -28
  451. package/test/unit/spec/controls-options-manager/index.js +287 -0
  452. package/test/unit/spec/controls-options-manager/util.js +504 -0
  453. package/test/unit/spec/fixture/locus.js +93 -90
  454. package/test/unit/spec/locus-info/controlsUtils.js +305 -32
  455. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  456. package/test/unit/spec/locus-info/index.js +636 -5
  457. package/test/unit/spec/locus-info/infoUtils.js +26 -33
  458. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  459. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  460. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  461. package/test/unit/spec/locus-info/parser.js +3 -9
  462. package/test/unit/spec/locus-info/selfConstant.js +110 -103
  463. package/test/unit/spec/locus-info/selfUtils.js +252 -12
  464. package/test/unit/spec/media/index.ts +104 -8
  465. package/test/unit/spec/media/properties.ts +9 -9
  466. package/test/unit/spec/meeting/in-meeting-actions.ts +76 -3
  467. package/test/unit/spec/meeting/index.js +3112 -921
  468. package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
  469. package/test/unit/spec/meeting/muteState.js +421 -94
  470. package/test/unit/spec/meeting/request.js +421 -79
  471. package/test/unit/spec/meeting/utils.js +326 -189
  472. package/test/unit/spec/meeting-info/meetinginfov2.js +481 -76
  473. package/test/unit/spec/meeting-info/request.js +7 -9
  474. package/test/unit/spec/meeting-info/util.js +11 -12
  475. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  476. package/test/unit/spec/meetings/collection.js +15 -1
  477. package/test/unit/spec/meetings/index.js +1126 -328
  478. package/test/unit/spec/meetings/utils.js +220 -14
  479. package/test/unit/spec/member/index.js +24 -1
  480. package/test/unit/spec/member/util.js +383 -32
  481. package/test/unit/spec/members/index.js +424 -55
  482. package/test/unit/spec/members/request.js +228 -40
  483. package/test/unit/spec/members/utils.js +191 -4
  484. package/test/unit/spec/metrics/index.js +113 -20
  485. package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
  486. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  487. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  488. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  489. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  490. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  491. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  492. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  493. package/test/unit/spec/reachability/index.ts +176 -27
  494. package/test/unit/spec/reachability/request.js +66 -0
  495. package/test/unit/spec/reconnection-manager/index.js +62 -31
  496. package/test/unit/spec/recording-controller/index.js +231 -0
  497. package/test/unit/spec/recording-controller/util.js +102 -0
  498. package/test/unit/spec/roap/index.ts +19 -49
  499. package/test/unit/spec/roap/request.ts +187 -0
  500. package/test/unit/spec/roap/turnDiscovery.ts +92 -50
  501. package/test/unit/spec/stats-analyzer/index.js +116 -60
  502. package/test/utils/cmr.js +44 -42
  503. package/test/utils/constants.js +9 -0
  504. package/test/utils/integrationTestUtils.js +64 -0
  505. package/test/utils/testUtils.js +63 -99
  506. package/test/utils/webex-config.js +22 -18
  507. package/test/utils/webex-test-users.js +57 -50
  508. package/tsconfig.json +6 -0
  509. package/dist/media/internal-media-core-wrapper.js +0 -22
  510. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  511. package/dist/meeting/effectsState.js +0 -334
  512. package/dist/meeting/effectsState.js.map +0 -1
  513. package/dist/multistream/multistreamMedia.js +0 -116
  514. package/dist/multistream/multistreamMedia.js.map +0 -1
  515. package/src/index.js +0 -15
  516. package/src/media/internal-media-core-wrapper.ts +0 -9
  517. package/src/meeting/effectsState.ts +0 -211
  518. package/src/multistream/multistreamMedia.ts +0 -92
  519. package/test/unit/spec/meeting/effectsState.js +0 -291
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Type for an StrokeData Object
3
+ */
4
+ type StrokeData = {
5
+ deviceId: string;
6
+ toUserId: string;
7
+ requesterId: string;
8
+ content: string;
9
+ shareInstanceId: string;
10
+ encryptionKeyUrl: string;
11
+ version: string;
12
+ };
13
+
14
+ type RequestData = {
15
+ toUserId: string;
16
+ toDeviceUrl: string;
17
+ shareInstanceId: string;
18
+ };
19
+
20
+ type CommandRequestBody = {
21
+ actionType: string;
22
+ resourceType: string;
23
+ shareInstanceId: string;
24
+ receivers?: any[];
25
+ };
26
+
27
+ interface IAnnotationChannel {
28
+ // === below is for presenter
29
+ acceptRequest: (approval) => undefined | Promise<void>;
30
+ declineRequest: (approval) => undefined | Promise<void>;
31
+ closeAnnotation: (requestData: RequestData) => undefined | Promise<void>;
32
+ changeAnnotationOptions: (options, meeting) => undefined | Promise<void>;
33
+ // === below is for attendee
34
+ approveAnnotation: (requestData: RequestData) => undefined | Promise<void>;
35
+ cancelApproveAnnotation: (requestData: RequestData, approval) => undefined | Promise<void>;
36
+ sendStrokeData: (strokeData: StrokeData) => void;
37
+ // =====
38
+ approvalUrlUpdate: (approvalUrl: string) => void;
39
+ locusUrlUpdate: (locusUrl: string) => void;
40
+ }
41
+
42
+ export type {StrokeData, RequestData, CommandRequestBody, IAnnotationChannel};
@@ -0,0 +1,36 @@
1
+ export const EVENT_TRIGGERS = {
2
+ ANNOTATION_STROKE_DATA: 'annotation:strokeData',
3
+ ANNOTATION_COMMAND: 'annotation:command',
4
+ };
5
+ export const ANNOTATION_RESOURCE_TYPE = 'AnnotationOnShare';
6
+ export const ANNOTATION_RELAY_TYPES = {
7
+ ANNOTATION_CLIENT: 'annotation.client',
8
+ };
9
+
10
+ export const ANNOTATION_STATUS = {
11
+ NO_ANNOTATION: 'NO_ANNOTATION',
12
+ RUNNING_ANNOTATION: 'RUNNING_ANNOTATION',
13
+ };
14
+
15
+ export const ANNOTATION_POLICY = {
16
+ ANYONE_CAN_ANNOTATE: 'AnyoneCanAnnotate',
17
+ APPROVAL: 'Approval',
18
+ ANNOTATION_NOT_ALLOWED: 'AnnotationNotAllowed',
19
+ };
20
+
21
+ export const ANNOTATION_REQUEST_TYPE = {
22
+ ANNOTATION_MESSAGE: 'annotation_message',
23
+ };
24
+
25
+ export const enum ANNOTATION_ACTION_TYPE {
26
+ REQUESTED = 'REQUESTED',
27
+ ACCEPTED = 'ACCEPTED',
28
+ DECLINED = 'DECLINED',
29
+ OFFERED = 'OFFERED',
30
+ CANCELED = 'CANCELED',
31
+ EXPIRED = 'EXPIRED',
32
+ REVOKED = 'REVOKED',
33
+ CLOSED = 'CLOSED',
34
+ }
35
+
36
+ export const ANNOTATION = 'annotation';
@@ -0,0 +1,339 @@
1
+ import uuid from 'uuid';
2
+ // eslint-disable-next-line import/no-extraneous-dependencies
3
+ import {WebexPlugin, config} from '@webex/webex-core';
4
+ import TriggerProxy from '../common/events/trigger-proxy';
5
+
6
+ import {
7
+ EVENT_TRIGGERS,
8
+ ANNOTATION_RELAY_TYPES,
9
+ ANNOTATION,
10
+ ANNOTATION_REQUEST_TYPE,
11
+ ANNOTATION_ACTION_TYPE,
12
+ ANNOTATION_RESOURCE_TYPE,
13
+ } from './constants';
14
+
15
+ import {StrokeData, RequestData, IAnnotationChannel, CommandRequestBody} from './annotation.types';
16
+ import {HTTP_VERBS} from '../constants';
17
+
18
+ /**
19
+ * @description Annotation to handle LLM and Mercury message and locus API
20
+ * @class
21
+ */
22
+ class AnnotationChannel extends WebexPlugin implements IAnnotationChannel {
23
+ namespace = ANNOTATION;
24
+
25
+ private seqNum: number;
26
+
27
+ hasSubscribedToEvents: boolean;
28
+
29
+ approvalUrl: string;
30
+ locusUrl: string;
31
+ deviceUrl: string;
32
+
33
+ /**
34
+ * Initializes annotation module
35
+ */
36
+ constructor(...args) {
37
+ super(...args);
38
+ this.seqNum = 1;
39
+ }
40
+
41
+ /**
42
+ * Process Stroke Data
43
+ * @param {request} request stroke data
44
+ * @returns {void}
45
+ */
46
+ private processStrokeMessage(request) {
47
+ this.decryptContent(request.value.encryptionKeyUrl, request.value.content).then(
48
+ (decryptedContent) => {
49
+ request.value.content = decryptedContent;
50
+ TriggerProxy.trigger(
51
+ this,
52
+ {
53
+ file: 'annotation',
54
+ function: 'processStrokeMessage',
55
+ },
56
+ EVENT_TRIGGERS.ANNOTATION_STROKE_DATA,
57
+ {
58
+ payload: request.value,
59
+ }
60
+ );
61
+ }
62
+ );
63
+ }
64
+
65
+ /** bind all events from mercury
66
+ * @param {Object} e
67
+ * @returns {undefined}
68
+ */
69
+ private eventCommandProcessor(e) {
70
+ if (
71
+ e?.data?.eventType === 'locus.approval_request' &&
72
+ e?.data?.approval?.resourceType === ANNOTATION_RESOURCE_TYPE &&
73
+ e?.data?.approval?.actionType
74
+ ) {
75
+ TriggerProxy.trigger(
76
+ this,
77
+ {
78
+ file: 'annotation',
79
+ function: 'approval_request',
80
+ },
81
+ EVENT_TRIGGERS.ANNOTATION_COMMAND,
82
+ {
83
+ type: e.data.approval.actionType,
84
+ payload: e.data.approval,
85
+ }
86
+ );
87
+ this.seqNum = (e?.sequenceNumber || 0) + 1;
88
+ }
89
+ }
90
+
91
+ /** bind all events from llm
92
+ * @param {Object} e
93
+ * @returns {undefined}
94
+ */
95
+ private eventDataProcessor(e) {
96
+ switch (e?.data?.relayType) {
97
+ case ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT:
98
+ this.seqNum = (e?.sequenceNumber || 0) + 1;
99
+ this.processStrokeMessage(e.data.request);
100
+ break;
101
+ default:
102
+ break;
103
+ }
104
+ }
105
+
106
+ /**
107
+ * Listen to websocket messages
108
+ * @returns {undefined}
109
+ */
110
+ private listenToEvents() {
111
+ if (!this.hasSubscribedToEvents) {
112
+ // @ts-ignore
113
+ this.webex.internal.mercury.on(
114
+ 'event:locus.approval_request',
115
+ this.eventCommandProcessor,
116
+ this
117
+ );
118
+ // @ts-ignore
119
+ this.webex.internal.llm.on('event:relay.event', this.eventDataProcessor, this);
120
+ this.hasSubscribedToEvents = true;
121
+ }
122
+ }
123
+
124
+ /**
125
+ * set locusUrl
126
+ * @param {string} locusUrl
127
+ * @returns {void}
128
+ */
129
+ public locusUrlUpdate(locusUrl: string) {
130
+ this.locusUrl = locusUrl;
131
+ this.listenToEvents();
132
+ }
133
+
134
+ /**
135
+ * set approved url
136
+ * @param {string} approvalUrl
137
+ * @returns {void}
138
+ */
139
+ public approvalUrlUpdate(approvalUrl: string) {
140
+ this.approvalUrl = approvalUrl;
141
+ }
142
+
143
+ /**
144
+ * accept request
145
+ * @param {object} approval
146
+ * @returns {Promise}
147
+ */
148
+ public acceptRequest(approval) {
149
+ // @ts-ignore
150
+ return this.request({
151
+ method: HTTP_VERBS.PUT,
152
+ url: approval.url,
153
+ body: {
154
+ resourceType: ANNOTATION_RESOURCE_TYPE,
155
+ actionType: ANNOTATION_ACTION_TYPE.ACCEPTED,
156
+ },
157
+ });
158
+ }
159
+
160
+ /**
161
+ * presenter declined request annotation
162
+ * @param {approval} approval
163
+ * @returns {Promise}
164
+ */
165
+ public declineRequest(approval) {
166
+ // @ts-ignore
167
+ return this.request({
168
+ method: HTTP_VERBS.PUT,
169
+ url: approval.url,
170
+ body: {
171
+ resourceType: ANNOTATION_RESOURCE_TYPE,
172
+ actionType: ANNOTATION_ACTION_TYPE.DECLINED,
173
+ },
174
+ });
175
+ }
176
+
177
+ /**
178
+ * request approved annotation
179
+ * @param {RequestData} requestData
180
+ * @returns {Promise}
181
+ */
182
+ public approveAnnotation(requestData: RequestData) {
183
+ return this.sendAnnotationAction(ANNOTATION_ACTION_TYPE.REQUESTED, requestData);
184
+ }
185
+
186
+ /**
187
+ * cancel approved annotation
188
+ * @param {object} requestData
189
+ * @param {object} approval
190
+ * @returns {Promise}
191
+ */
192
+ public cancelApproveAnnotation(requestData: RequestData, approval) {
193
+ const body: CommandRequestBody = {
194
+ actionType: ANNOTATION_ACTION_TYPE.CANCELED,
195
+ resourceType: 'AnnotationOnShare',
196
+ shareInstanceId: requestData.shareInstanceId,
197
+ };
198
+
199
+ // @ts-ignore
200
+ return this.request({
201
+ method: HTTP_VERBS.PUT,
202
+ url: `${approval.url}`,
203
+ body,
204
+ });
205
+ }
206
+
207
+ /**
208
+ * close annotation
209
+ * @param {object} requestData
210
+ * @returns {Promise}
211
+ */
212
+ public closeAnnotation(requestData: RequestData) {
213
+ return this.sendAnnotationAction(ANNOTATION_ACTION_TYPE.CLOSED, requestData);
214
+ }
215
+
216
+ /**
217
+ * send annotation command
218
+ * @param {ANNOTATION_ACTION_TYPE} actionType
219
+ * @param {RequestData} requestData
220
+ * @returns {Promise}
221
+ */
222
+ private sendAnnotationAction = async (
223
+ actionType: ANNOTATION_ACTION_TYPE,
224
+ requestData: RequestData
225
+ ): Promise<void> => {
226
+ const body: CommandRequestBody = {
227
+ actionType,
228
+ resourceType: 'AnnotationOnShare',
229
+ shareInstanceId: requestData.shareInstanceId,
230
+ };
231
+ if (requestData?.toUserId) {
232
+ body.receivers = [{participantId: requestData.toUserId, deviceUrl: requestData.toDeviceUrl}];
233
+ }
234
+
235
+ // @ts-ignore
236
+ return this.request({
237
+ method: HTTP_VERBS.POST,
238
+ url: `${this.approvalUrl}`,
239
+ body,
240
+ });
241
+ };
242
+
243
+ /**
244
+ * decrypt data
245
+ * @param {string} encryptionKeyUrl
246
+ * @param {string} content encrypted content
247
+ * @returns {string} decrypted content
248
+ */
249
+ private decryptContent = (encryptionKeyUrl: string, content: string): Promise<any> => {
250
+ // @ts-ignore
251
+ return this.webex.internal.encryption.decryptText(encryptionKeyUrl, content).then((res) => {
252
+ return res;
253
+ });
254
+ };
255
+
256
+ /**
257
+ * encrypt data
258
+ * @param {string} encryptionKeyUrl
259
+ * @param {string} content original content
260
+ * @returns {string} encrypted content
261
+ */
262
+ private encryptContent = (encryptionKeyUrl: string, content: string): Promise<any> => {
263
+ // @ts-ignore
264
+ return this.webex.internal.encryption.encryptText(encryptionKeyUrl, content).then((res) => {
265
+ return res;
266
+ });
267
+ };
268
+
269
+ /**
270
+ * Sends stroke data to presenter
271
+ * @param {StrokeData} strokeData
272
+ * @returns {void}
273
+ */
274
+ public sendStrokeData = (strokeData: StrokeData): void => {
275
+ // @ts-ignore
276
+ if (!this.webex.internal.llm.isConnected()) return;
277
+ this.encryptContent(strokeData.encryptionKeyUrl, strokeData.content).then(
278
+ (encryptedContent) => {
279
+ this.publishEncrypted(encryptedContent, strokeData);
280
+ }
281
+ );
282
+ };
283
+
284
+ /**
285
+ * Change annotation options
286
+ * @param {object} options
287
+ * @param {object} meeting
288
+ * @returns {Promise}
289
+ */
290
+ public changeAnnotationOptions(options, meeting) {
291
+ return meeting?.meetingRequest.changeMeetingFloor(options);
292
+ }
293
+
294
+ /**
295
+ * private encrypted the strokes data
296
+ * @param {string} encryptedContent
297
+ * @param {StrokeData} strokeData
298
+ * @returns {void}
299
+ */
300
+ private publishEncrypted(encryptedContent: string, strokeData: StrokeData) {
301
+ const data = {
302
+ id: `${this.seqNum}`,
303
+ type: 'publishRequest',
304
+ recipients: {
305
+ // @ts-ignore
306
+ route: this.webex.internal.llm.getBinding(),
307
+ },
308
+ headers: {
309
+ to: strokeData.toUserId,
310
+ },
311
+ data: {
312
+ eventType: 'relay.event',
313
+ relayType: ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT,
314
+ request: {
315
+ value: {
316
+ type: ANNOTATION_REQUEST_TYPE.ANNOTATION_MESSAGE,
317
+ content: encryptedContent,
318
+ deviceId: strokeData.deviceId,
319
+ seq: this.seqNum,
320
+ requesterId: strokeData.requesterId,
321
+ version: strokeData.version,
322
+ shareInstanceId: strokeData.shareInstanceId,
323
+ encryptionKeyUrl: strokeData.encryptionKeyUrl,
324
+ },
325
+ },
326
+ },
327
+ trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,
328
+ timestamp: new Date().getTime(),
329
+ sequenceNumber: this.seqNum,
330
+ filterMessage: false,
331
+ };
332
+
333
+ // @ts-ignore
334
+ this.webex.internal.llm.socket.send(data);
335
+ this.seqNum += 1;
336
+ }
337
+ }
338
+
339
+ export default AnnotationChannel;
@@ -0,0 +1,220 @@
1
+ # Breakout Sessions
2
+
3
+ Breakout sessions are like meetings within meetings. They have separate roster lists and titles. Participants can move between breakouts and the main session.
4
+
5
+ ### Enabling
6
+
7
+ To enable breakouts the `breakoutsSupported` parameter must be passed to the meeting join method.
8
+
9
+ ### Structure
10
+
11
+ The current breakout session is accessible as follows:
12
+
13
+ ```javascript
14
+ breakouts.currentBreakoutSession;
15
+ ```
16
+
17
+ Other breakout sessions are available in the breakouts collection. These are breakouts that you known about. If you are an attendee, you may not know about all the breakout sessions in the meeting.
18
+
19
+ ```javascript
20
+ breakouts.breakouts;
21
+ ```
22
+
23
+ note: The `currentBreakoutSession` is NOT a member of the `breakouts.breakouts` collection.
24
+
25
+ Some information about the state of breakouts is available on the `meeting.breakouts` object itself
26
+
27
+ ```javascript
28
+ // The number of seconds after ending breakouts before the participants are returned to the main session
29
+ breakouts.delayCloseTime;
30
+
31
+ // Whether the participant is allowed back to the main session
32
+ breakouts.allowBackToMain;
33
+ ```
34
+
35
+ ### Attendee functionality
36
+
37
+ The normal meeting members are updated when you move in and out of a breakout session.
38
+
39
+ The following are methods available to attendees of a meeting:
40
+
41
+ ```javascript
42
+ // Join a breakout
43
+ // This can be used when the participant is in the main session or in a different breakout session
44
+ // when call join function, should send message to metrics
45
+ /* Breakout Sessions created during meetings allow participants to move into smaller breakout sessions and then
46
+ return to the main meeting at a later time. These moves can be initiated by the user or by the meeting
47
+ host/co-host. The goal of this metric is to track these moves in production by instrumenting them for
48
+ analysis from the end user's experience perspective.
49
+ */
50
+ breakout.join();
51
+
52
+ // Leave a breakout
53
+ // This will cause the participant to return to the main session
54
+ breakouts.currentBreakoutSession.leave();
55
+
56
+ // Ask for help when in a breakout session. 10 second cooldown.
57
+ breakout.currentBreakoutSession.askForHelp();
58
+ ```
59
+
60
+ #### Members
61
+
62
+ Each breakout session has members. Members represent other entities within the meeting.
63
+ The current breakout session members are accessed via the meeting object i.e. they will automatically
64
+ be updated when the user moves between sessions.
65
+
66
+ To see which members are in other sessions, you can access them via the breakout model. The Members
67
+ class is the same as that of the main meeting.
68
+
69
+ ```javascript
70
+ breakout = breakouts.breakouts.models[0];
71
+ breakout.members;
72
+ ```
73
+
74
+ #### breakouts events
75
+
76
+ ```javascript
77
+ // When the breakouts in the breakouts collection changes. This includes updates to session members
78
+ on('meeting:breakouts:update', (breakouts) => {});
79
+
80
+ // When the breakout sessions end this event will be fired
81
+ on('meeting:breakouts:closing', () => {});
82
+
83
+ // When the host sends a message to the breakout this event will fire
84
+ on('meeting:breakouts:message', {senderUserId, sentTime, message, sessionId});
85
+ ```
86
+
87
+ When breakouts are started there are several possibilities:
88
+
89
+ 1. The attendee is forced to join a session
90
+ 2. The attendee is assigned to a session, but can join when they feel like it
91
+ 3. The attendee is not assigned to a session, and can choose which session they want to join
92
+
93
+ ```javascript
94
+ breakout.assigned; // Assigned to a session, but not in it yet
95
+ breakout.assignedCurrent; // Forced to join a session
96
+ breakout.active; // The session exists
97
+ breakout.allowed; // The user is allowed to join the session
98
+ breakout.requested; // The user has been requested to join the session
99
+ ```
100
+
101
+ The above attributes of the breakout sessions, combined with the `meeting:breakouts:update` event allow you to determine which situation you are in.
102
+
103
+ A host can signal attendees to move to a particular session. In this case the following is available. Using the same event, and the `requested` attribute of the breakout you can determine which session is to be moved to. Requesting return to the main session is the current use case of this.
104
+
105
+ ### Host functionality
106
+
107
+ The following are methods available to a hosts of a meeting.
108
+
109
+ note: None of these are currently implemented
110
+
111
+ ```javascript
112
+
113
+ // Move a participant to breakout
114
+ breakout.move(participant)
115
+
116
+ // Remove someone from a breakout session
117
+ // This returns them to the main session
118
+ breakout.remove(participant)
119
+
120
+ // Deletes a breakout session
121
+ // This can only be done when breakouts are inactive
122
+ breakout.delete()
123
+
124
+ /*
125
+ Create breakout sessions, Type is array
126
+ Format: [{'name':'session1', "anyoneCanJoin" : true}]
127
+ */
128
+ breakouts.create(sessions)
129
+
130
+ // Delete all breakout sessions
131
+ breakouts.clearSessions()
132
+
133
+ // update breakout session with params
134
+ // if unlockEdit is true, will release lock editing after update finish
135
+ breakout.update(params, unlockEdit)
136
+
137
+ // Start breakout sessions with necessary params
138
+ breakouts.start(params)
139
+
140
+ // Assign a particpant/participants to breakouts/a breakout
141
+ // sessions should be like: [{id:'xx',memberIds:['111'],emails:['111@ss.com',anyone: true]},...]
142
+ breakouts.assign(sessions)
143
+
144
+ // Dynammic assign a particpant/participants to breakouts/main (not used by now)
145
+ // Admit lobby waiting participants to a breakout directly
146
+ // sessions should be like: [{id:'xx',participants:['111'],targetState:'JOINED'},...]
147
+ breakouts.dynamicAssign(sessions)
148
+
149
+ // End breakout sessions with necessary params
150
+ breakouts.end(params)
151
+
152
+ // get breakout sessions with/without param editlock
153
+ breakouts.getBreakout(editlock?)
154
+
155
+ // Enable breakout sessions
156
+ breakouts.enable()
157
+
158
+ // Enable and lock breakout
159
+ breakouts.enableAndLockBreakout()
160
+
161
+ // Lock breakout
162
+ breakouts.lockBreakout()
163
+
164
+ // Unlock breakout
165
+ breakouts.unLockEditBreakout()
166
+
167
+ // Disable breakout sessions
168
+ breakouts.disable()
169
+
170
+ // Send message asking all participants to return to the main session
171
+ breakouts.askAllToReturn()
172
+
173
+ // Send a message to a breakout session
174
+ // You can determine which participant types receive the message, if no type set, default is to all participants
175
+ breakout.broadcast(message, {participants: boolean, cohosts: boolean, presenters: boolean})
176
+
177
+ // Send a message to All breakout sessions
178
+ // You can determine which participant types receive the message, if no type set, default is to all participants
179
+ breakouts.broadcast(message, {participants: boolean, cohosts: boolean, presenters: boolean})
180
+
181
+ // When breakouts are active you can cancel the automatic end of all sessions by calling this
182
+ // method. It cannot be restarted, only manually ending breakouts is possible after calling this
183
+ breakouts.cancelAutomaticEnd()
184
+
185
+ IBreakoutConfig {
186
+ /*
187
+ Number of sessions to count down before returning users to main session. Seconds. Default 60. 0 means off
188
+ */
189
+ countdownTimer: Number,
190
+ /*
191
+ Whether attendees are allowed to return to the main meeting
192
+ */
193
+ allowReturntoMainMeeting: Boolean,
194
+ /*
195
+ Whether attendees are allowed to join later
196
+ */
197
+ allowJoinLater: Boolean,
198
+ /*
199
+ The timeout after which breakouts are automatically ended. Seconds. Default 1800 (30 minutes) Miniumum 5 minutes.
200
+ */
201
+ automaticallyEndBreakoutsAfter: Number,
202
+ /*
203
+ How participants are assigned to breakouts.
204
+ auto -> participants are automatically placed in sessions
205
+ */
206
+ assignmentMethod: 'auto' | 'manual' | 'choose'
207
+ }
208
+
209
+ // Configure settings on breakouts
210
+ breakouts.configure(config)
211
+
212
+ // set whether anyone can join the breakout or whether it is just assigned participants that can join
213
+ breakout.setOpen(isOpen)
214
+
215
+ // When the members change for a given breakout
216
+ on('meeting:breakout:members:update', ({sessionId, members}) => {
217
+
218
+ })
219
+
220
+ ```