@webex/plugin-meetings 3.0.0-beta.254 → 3.0.0-beta.256
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/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/index.js +327 -249
- package/dist/meeting/index.js.map +1 -1
- package/dist/metrics/constants.js +5 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/types/meeting/index.d.ts +14 -0
- package/dist/types/metrics/constants.d.ts +4 -0
- package/package.json +19 -19
- package/src/meeting/index.ts +182 -64
- package/src/metrics/constants.ts +4 -0
- package/test/unit/spec/meeting/index.js +343 -30
|
@@ -25,6 +25,8 @@ var BEHAVIORAL_METRICS = {
|
|
|
25
25
|
GET_USER_MEDIA_FAILURE: 'js_sdk_get_user_media_failures',
|
|
26
26
|
GET_DISPLAY_MEDIA_FAILURE: 'js_sdk_get_display_media_failures',
|
|
27
27
|
JOIN_WITH_MEDIA_FAILURE: 'js_sdk_join_with_media_failures',
|
|
28
|
+
LLM_CONNECTION_AFTER_JOIN_FAILURE: 'js_sdk_llm_connection_after_join_failure',
|
|
29
|
+
RECEIVE_TRANSCRIPTION_AFTER_JOIN_FAILURE: 'js_sdk_receive_transcription_after_join_failure',
|
|
28
30
|
DISCONNECT_DUE_TO_INACTIVITY: 'js_sdk_disconnect_due_to_inactivity',
|
|
29
31
|
MEETING_MEDIA_INACTIVE: 'js_sdk_meeting_media_inactive',
|
|
30
32
|
MEETING_RECONNECT_FAILURE: 'js_sdk_meeting_reconnect_failures',
|
|
@@ -62,7 +64,9 @@ var BEHAVIORAL_METRICS = {
|
|
|
62
64
|
TURN_DISCOVERY_FAILURE: 'js_sdk_turn_discovery_failure',
|
|
63
65
|
MEETING_INFO_POLICY_ERROR: 'js_sdk_meeting_info_policy_error',
|
|
64
66
|
LOCUS_DELTA_SYNC_FAILED: 'js_sdk_locus_delta_sync_failed',
|
|
65
|
-
LOCUS_DELTA_OUT_OF_ORDER: 'js_sdk_locus_delta_ooo'
|
|
67
|
+
LOCUS_DELTA_OUT_OF_ORDER: 'js_sdk_locus_delta_ooo',
|
|
68
|
+
PERMISSION_TOKEN_REFRESH: 'js_sdk_permission_token_refresh',
|
|
69
|
+
PERMISSION_TOKEN_REFRESH_ERROR: 'js_sdk_permission_token_refresh_error'
|
|
66
70
|
};
|
|
67
71
|
exports.default = BEHAVIORAL_METRICS;
|
|
68
72
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BEHAVIORAL_METRICS","MEETINGS_REGISTRATION_FAILED","MEETINGS_REGISTRATION_SUCCESS","MERCURY_CONNECTION_FAILURE","MERCURY_CONNECTION_RESTORED","JOIN_SUCCESS","JOIN_FAILURE","ADD_MEDIA_SUCCESS","ADD_MEDIA_FAILURE","ROAP_MERCURY_EVENT_RECEIVED","CONNECTION_SUCCESS","CONNECTION_FAILURE","MEETING_LEAVE_FAILURE","MEETING_END_ALL_FAILURE","MEETING_END_ALL_INITIATED","GET_USER_MEDIA_FAILURE","GET_DISPLAY_MEDIA_FAILURE","JOIN_WITH_MEDIA_FAILURE","DISCONNECT_DUE_TO_INACTIVITY","MEETING_MEDIA_INACTIVE","MEETING_RECONNECT_FAILURE","MEETING_MAX_REJOIN_FAILURE","MEETING_SHARE_FAILURE","MEETING_START_WHITEBOARD_SHARE_FAILURE","MEETING_STOP_WHITEBOARD_SHARE_FAILURE","MUTE_AUDIO_FAILURE","MUTE_VIDEO_FAILURE","SET_MEETING_QUALITY_FAILURE","STOP_FLOOR_REQUEST_FAILURE","ADD_DIAL_IN_FAILURE","ADD_DIAL_OUT_FAILURE","UPDATE_MEDIA_FAILURE","UNMUTE_AUDIO_FAILURE","UNMUTE_VIDEO_FAILURE","ROAP_ANSWER_FAILURE","ROAP_GLARE_CONDITION","PEERCONNECTION_FAILURE","INVALID_ICE_CANDIDATE","UPLOAD_LOGS_FAILURE","UPLOAD_LOGS_SUCCESS","RECEIVE_TRANSCRIPTION_FAILURE","FETCH_MEETING_INFO_V1_SUCCESS","FETCH_MEETING_INFO_V1_FAILURE","ADHOC_MEETING_SUCCESS","ADHOC_MEETING_FAILURE","VERIFY_PASSWORD_SUCCESS","VERIFY_PASSWORD_ERROR","VERIFY_CAPTCHA_ERROR","MOVE_TO_SUCCESS","MOVE_TO_FAILURE","MOVE_FROM_SUCCESS","MOVE_FROM_FAILURE","TURN_DISCOVERY_FAILURE","MEETING_INFO_POLICY_ERROR","LOCUS_DELTA_SYNC_FAILED","LOCUS_DELTA_OUT_OF_ORDER"],"sources":["constants.ts"],"sourcesContent":["// Metrics constants ----------------------------------------------------------\n\nconst BEHAVIORAL_METRICS = {\n MEETINGS_REGISTRATION_FAILED: 'js_sdk_meetings_registration_failed',\n MEETINGS_REGISTRATION_SUCCESS: 'js_sdk_meetings_registration_success',\n MERCURY_CONNECTION_FAILURE: 'js_sdk_mercury_connection_failure',\n MERCURY_CONNECTION_RESTORED: 'js_sdk_mercury_connection_restored',\n JOIN_SUCCESS: 'js_sdk_join_success',\n JOIN_FAILURE: 'js_sdk_join_failures',\n ADD_MEDIA_SUCCESS: 'js_sdk_add_media_success',\n ADD_MEDIA_FAILURE: 'js_sdk_add_media_failures',\n ROAP_MERCURY_EVENT_RECEIVED: 'js_sdk_roap_mercury_received',\n CONNECTION_SUCCESS: 'js_sdk_connection_success',\n CONNECTION_FAILURE: 'js_sdk_connection_failures',\n MEETING_LEAVE_FAILURE: 'js_sdk_meeting_leave_failure',\n MEETING_END_ALL_FAILURE: 'js_sdk_meeting_end_for_all_failure',\n MEETING_END_ALL_INITIATED: 'js_sdk_meeting_end_for_all_initiated',\n GET_USER_MEDIA_FAILURE: 'js_sdk_get_user_media_failures',\n GET_DISPLAY_MEDIA_FAILURE: 'js_sdk_get_display_media_failures',\n JOIN_WITH_MEDIA_FAILURE: 'js_sdk_join_with_media_failures',\n\n DISCONNECT_DUE_TO_INACTIVITY: 'js_sdk_disconnect_due_to_inactivity',\n MEETING_MEDIA_INACTIVE: 'js_sdk_meeting_media_inactive',\n MEETING_RECONNECT_FAILURE: 'js_sdk_meeting_reconnect_failures',\n MEETING_MAX_REJOIN_FAILURE: 'js_sdk_meeting_max_rejoin_failure',\n MEETING_SHARE_FAILURE: 'js_sdk_meeting_share_failures',\n MEETING_START_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_start_whiteboard_share_failures',\n MEETING_STOP_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_stop_whiteboard_share_failures',\n MUTE_AUDIO_FAILURE: 'js_sdk_mute_audio_failures',\n MUTE_VIDEO_FAILURE: 'js_sdk_mute_video_failures',\n SET_MEETING_QUALITY_FAILURE: 'js_sdk_set_meeting_quality_failures',\n STOP_FLOOR_REQUEST_FAILURE: 'js_sdk_stop_floor_request_failures',\n ADD_DIAL_IN_FAILURE: 'js_sdk_add_dial_in_failure',\n ADD_DIAL_OUT_FAILURE: 'js_sdk_add_dial_out_failure',\n UPDATE_MEDIA_FAILURE: 'js_sdk_update_media_failures',\n UNMUTE_AUDIO_FAILURE: 'js_sdk_unmute_audio_failures',\n UNMUTE_VIDEO_FAILURE: 'js_sdk_unmute_video_failures',\n ROAP_ANSWER_FAILURE: 'js_sdk_roap_answer_failures',\n ROAP_GLARE_CONDITION: 'js_sdk_roap_glar_condition',\n PEERCONNECTION_FAILURE: 'js_sdk_peerConnection_failures',\n INVALID_ICE_CANDIDATE: 'js_sdk_invalid_ice_candidate',\n UPLOAD_LOGS_FAILURE: 'js_sdk_upload_logs_failure',\n UPLOAD_LOGS_SUCCESS: 'js_sdk_upload_logs_success',\n RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure',\n FETCH_MEETING_INFO_V1_SUCCESS: 'js_sdk_fetch_meeting_info_v1_success',\n FETCH_MEETING_INFO_V1_FAILURE: 'js_sdk_fetch_meeting_info_v1_failure',\n ADHOC_MEETING_SUCCESS: 'js_sdk_adhoc_meeting_success',\n ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',\n VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',\n VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',\n VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error',\n MOVE_TO_SUCCESS: 'js_sdk_move_to_success',\n MOVE_TO_FAILURE: 'js_sdk_move_to_failure',\n MOVE_FROM_SUCCESS: 'js_sdk_move_from_success',\n MOVE_FROM_FAILURE: 'js_sdk_move_from_failure',\n TURN_DISCOVERY_FAILURE: 'js_sdk_turn_discovery_failure',\n MEETING_INFO_POLICY_ERROR: 'js_sdk_meeting_info_policy_error',\n LOCUS_DELTA_SYNC_FAILED: 'js_sdk_locus_delta_sync_failed',\n LOCUS_DELTA_OUT_OF_ORDER: 'js_sdk_locus_delta_ooo',\n};\n\nexport {BEHAVIORAL_METRICS as default};\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,kBAAkB,GAAG;EACzBC,4BAA4B,EAAE,qCAAqC;EACnEC,6BAA6B,EAAE,sCAAsC;EACrEC,0BAA0B,EAAE,mCAAmC;EAC/DC,2BAA2B,EAAE,oCAAoC;EACjEC,YAAY,EAAE,qBAAqB;EACnCC,YAAY,EAAE,sBAAsB;EACpCC,iBAAiB,EAAE,0BAA0B;EAC7CC,iBAAiB,EAAE,2BAA2B;EAC9CC,2BAA2B,EAAE,8BAA8B;EAC3DC,kBAAkB,EAAE,2BAA2B;EAC/CC,kBAAkB,EAAE,4BAA4B;EAChDC,qBAAqB,EAAE,8BAA8B;EACrDC,uBAAuB,EAAE,oCAAoC;EAC7DC,yBAAyB,EAAE,sCAAsC;EACjEC,sBAAsB,EAAE,gCAAgC;EACxDC,yBAAyB,EAAE,mCAAmC;EAC9DC,uBAAuB,EAAE,iCAAiC;
|
|
1
|
+
{"version":3,"names":["BEHAVIORAL_METRICS","MEETINGS_REGISTRATION_FAILED","MEETINGS_REGISTRATION_SUCCESS","MERCURY_CONNECTION_FAILURE","MERCURY_CONNECTION_RESTORED","JOIN_SUCCESS","JOIN_FAILURE","ADD_MEDIA_SUCCESS","ADD_MEDIA_FAILURE","ROAP_MERCURY_EVENT_RECEIVED","CONNECTION_SUCCESS","CONNECTION_FAILURE","MEETING_LEAVE_FAILURE","MEETING_END_ALL_FAILURE","MEETING_END_ALL_INITIATED","GET_USER_MEDIA_FAILURE","GET_DISPLAY_MEDIA_FAILURE","JOIN_WITH_MEDIA_FAILURE","LLM_CONNECTION_AFTER_JOIN_FAILURE","RECEIVE_TRANSCRIPTION_AFTER_JOIN_FAILURE","DISCONNECT_DUE_TO_INACTIVITY","MEETING_MEDIA_INACTIVE","MEETING_RECONNECT_FAILURE","MEETING_MAX_REJOIN_FAILURE","MEETING_SHARE_FAILURE","MEETING_START_WHITEBOARD_SHARE_FAILURE","MEETING_STOP_WHITEBOARD_SHARE_FAILURE","MUTE_AUDIO_FAILURE","MUTE_VIDEO_FAILURE","SET_MEETING_QUALITY_FAILURE","STOP_FLOOR_REQUEST_FAILURE","ADD_DIAL_IN_FAILURE","ADD_DIAL_OUT_FAILURE","UPDATE_MEDIA_FAILURE","UNMUTE_AUDIO_FAILURE","UNMUTE_VIDEO_FAILURE","ROAP_ANSWER_FAILURE","ROAP_GLARE_CONDITION","PEERCONNECTION_FAILURE","INVALID_ICE_CANDIDATE","UPLOAD_LOGS_FAILURE","UPLOAD_LOGS_SUCCESS","RECEIVE_TRANSCRIPTION_FAILURE","FETCH_MEETING_INFO_V1_SUCCESS","FETCH_MEETING_INFO_V1_FAILURE","ADHOC_MEETING_SUCCESS","ADHOC_MEETING_FAILURE","VERIFY_PASSWORD_SUCCESS","VERIFY_PASSWORD_ERROR","VERIFY_CAPTCHA_ERROR","MOVE_TO_SUCCESS","MOVE_TO_FAILURE","MOVE_FROM_SUCCESS","MOVE_FROM_FAILURE","TURN_DISCOVERY_FAILURE","MEETING_INFO_POLICY_ERROR","LOCUS_DELTA_SYNC_FAILED","LOCUS_DELTA_OUT_OF_ORDER","PERMISSION_TOKEN_REFRESH","PERMISSION_TOKEN_REFRESH_ERROR"],"sources":["constants.ts"],"sourcesContent":["// Metrics constants ----------------------------------------------------------\n\nconst BEHAVIORAL_METRICS = {\n MEETINGS_REGISTRATION_FAILED: 'js_sdk_meetings_registration_failed',\n MEETINGS_REGISTRATION_SUCCESS: 'js_sdk_meetings_registration_success',\n MERCURY_CONNECTION_FAILURE: 'js_sdk_mercury_connection_failure',\n MERCURY_CONNECTION_RESTORED: 'js_sdk_mercury_connection_restored',\n JOIN_SUCCESS: 'js_sdk_join_success',\n JOIN_FAILURE: 'js_sdk_join_failures',\n ADD_MEDIA_SUCCESS: 'js_sdk_add_media_success',\n ADD_MEDIA_FAILURE: 'js_sdk_add_media_failures',\n ROAP_MERCURY_EVENT_RECEIVED: 'js_sdk_roap_mercury_received',\n CONNECTION_SUCCESS: 'js_sdk_connection_success',\n CONNECTION_FAILURE: 'js_sdk_connection_failures',\n MEETING_LEAVE_FAILURE: 'js_sdk_meeting_leave_failure',\n MEETING_END_ALL_FAILURE: 'js_sdk_meeting_end_for_all_failure',\n MEETING_END_ALL_INITIATED: 'js_sdk_meeting_end_for_all_initiated',\n GET_USER_MEDIA_FAILURE: 'js_sdk_get_user_media_failures',\n GET_DISPLAY_MEDIA_FAILURE: 'js_sdk_get_display_media_failures',\n JOIN_WITH_MEDIA_FAILURE: 'js_sdk_join_with_media_failures',\n LLM_CONNECTION_AFTER_JOIN_FAILURE: 'js_sdk_llm_connection_after_join_failure',\n RECEIVE_TRANSCRIPTION_AFTER_JOIN_FAILURE: 'js_sdk_receive_transcription_after_join_failure',\n\n DISCONNECT_DUE_TO_INACTIVITY: 'js_sdk_disconnect_due_to_inactivity',\n MEETING_MEDIA_INACTIVE: 'js_sdk_meeting_media_inactive',\n MEETING_RECONNECT_FAILURE: 'js_sdk_meeting_reconnect_failures',\n MEETING_MAX_REJOIN_FAILURE: 'js_sdk_meeting_max_rejoin_failure',\n MEETING_SHARE_FAILURE: 'js_sdk_meeting_share_failures',\n MEETING_START_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_start_whiteboard_share_failures',\n MEETING_STOP_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_stop_whiteboard_share_failures',\n MUTE_AUDIO_FAILURE: 'js_sdk_mute_audio_failures',\n MUTE_VIDEO_FAILURE: 'js_sdk_mute_video_failures',\n SET_MEETING_QUALITY_FAILURE: 'js_sdk_set_meeting_quality_failures',\n STOP_FLOOR_REQUEST_FAILURE: 'js_sdk_stop_floor_request_failures',\n ADD_DIAL_IN_FAILURE: 'js_sdk_add_dial_in_failure',\n ADD_DIAL_OUT_FAILURE: 'js_sdk_add_dial_out_failure',\n UPDATE_MEDIA_FAILURE: 'js_sdk_update_media_failures',\n UNMUTE_AUDIO_FAILURE: 'js_sdk_unmute_audio_failures',\n UNMUTE_VIDEO_FAILURE: 'js_sdk_unmute_video_failures',\n ROAP_ANSWER_FAILURE: 'js_sdk_roap_answer_failures',\n ROAP_GLARE_CONDITION: 'js_sdk_roap_glar_condition',\n PEERCONNECTION_FAILURE: 'js_sdk_peerConnection_failures',\n INVALID_ICE_CANDIDATE: 'js_sdk_invalid_ice_candidate',\n UPLOAD_LOGS_FAILURE: 'js_sdk_upload_logs_failure',\n UPLOAD_LOGS_SUCCESS: 'js_sdk_upload_logs_success',\n RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure',\n FETCH_MEETING_INFO_V1_SUCCESS: 'js_sdk_fetch_meeting_info_v1_success',\n FETCH_MEETING_INFO_V1_FAILURE: 'js_sdk_fetch_meeting_info_v1_failure',\n ADHOC_MEETING_SUCCESS: 'js_sdk_adhoc_meeting_success',\n ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',\n VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',\n VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',\n VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error',\n MOVE_TO_SUCCESS: 'js_sdk_move_to_success',\n MOVE_TO_FAILURE: 'js_sdk_move_to_failure',\n MOVE_FROM_SUCCESS: 'js_sdk_move_from_success',\n MOVE_FROM_FAILURE: 'js_sdk_move_from_failure',\n TURN_DISCOVERY_FAILURE: 'js_sdk_turn_discovery_failure',\n MEETING_INFO_POLICY_ERROR: 'js_sdk_meeting_info_policy_error',\n LOCUS_DELTA_SYNC_FAILED: 'js_sdk_locus_delta_sync_failed',\n LOCUS_DELTA_OUT_OF_ORDER: 'js_sdk_locus_delta_ooo',\n PERMISSION_TOKEN_REFRESH: 'js_sdk_permission_token_refresh',\n PERMISSION_TOKEN_REFRESH_ERROR: 'js_sdk_permission_token_refresh_error',\n};\n\nexport {BEHAVIORAL_METRICS as default};\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,kBAAkB,GAAG;EACzBC,4BAA4B,EAAE,qCAAqC;EACnEC,6BAA6B,EAAE,sCAAsC;EACrEC,0BAA0B,EAAE,mCAAmC;EAC/DC,2BAA2B,EAAE,oCAAoC;EACjEC,YAAY,EAAE,qBAAqB;EACnCC,YAAY,EAAE,sBAAsB;EACpCC,iBAAiB,EAAE,0BAA0B;EAC7CC,iBAAiB,EAAE,2BAA2B;EAC9CC,2BAA2B,EAAE,8BAA8B;EAC3DC,kBAAkB,EAAE,2BAA2B;EAC/CC,kBAAkB,EAAE,4BAA4B;EAChDC,qBAAqB,EAAE,8BAA8B;EACrDC,uBAAuB,EAAE,oCAAoC;EAC7DC,yBAAyB,EAAE,sCAAsC;EACjEC,sBAAsB,EAAE,gCAAgC;EACxDC,yBAAyB,EAAE,mCAAmC;EAC9DC,uBAAuB,EAAE,iCAAiC;EAC1DC,iCAAiC,EAAE,0CAA0C;EAC7EC,wCAAwC,EAAE,iDAAiD;EAE3FC,4BAA4B,EAAE,qCAAqC;EACnEC,sBAAsB,EAAE,+BAA+B;EACvDC,yBAAyB,EAAE,mCAAmC;EAC9DC,0BAA0B,EAAE,mCAAmC;EAC/DC,qBAAqB,EAAE,+BAA+B;EACtDC,sCAAsC,EAAE,gDAAgD;EACxFC,qCAAqC,EAAE,+CAA+C;EACtFC,kBAAkB,EAAE,4BAA4B;EAChDC,kBAAkB,EAAE,4BAA4B;EAChDC,2BAA2B,EAAE,qCAAqC;EAClEC,0BAA0B,EAAE,oCAAoC;EAChEC,mBAAmB,EAAE,4BAA4B;EACjDC,oBAAoB,EAAE,6BAA6B;EACnDC,oBAAoB,EAAE,8BAA8B;EACpDC,oBAAoB,EAAE,8BAA8B;EACpDC,oBAAoB,EAAE,8BAA8B;EACpDC,mBAAmB,EAAE,6BAA6B;EAClDC,oBAAoB,EAAE,4BAA4B;EAClDC,sBAAsB,EAAE,gCAAgC;EACxDC,qBAAqB,EAAE,8BAA8B;EACrDC,mBAAmB,EAAE,4BAA4B;EACjDC,mBAAmB,EAAE,4BAA4B;EACjDC,6BAA6B,EAAE,sCAAsC;EACrEC,6BAA6B,EAAE,sCAAsC;EACrEC,6BAA6B,EAAE,sCAAsC;EACrEC,qBAAqB,EAAE,8BAA8B;EACrDC,qBAAqB,EAAE,8BAA8B;EACrDC,uBAAuB,EAAE,gCAAgC;EACzDC,qBAAqB,EAAE,8BAA8B;EACrDC,oBAAoB,EAAE,6BAA6B;EACnDC,eAAe,EAAE,wBAAwB;EACzCC,eAAe,EAAE,wBAAwB;EACzCC,iBAAiB,EAAE,0BAA0B;EAC7CC,iBAAiB,EAAE,0BAA0B;EAC7CC,sBAAsB,EAAE,+BAA+B;EACvDC,yBAAyB,EAAE,kCAAkC;EAC7DC,uBAAuB,EAAE,gCAAgC;EACzDC,wBAAwB,EAAE,wBAAwB;EAClDC,wBAAwB,EAAE,iCAAiC;EAC3DC,8BAA8B,EAAE;AAClC,CAAC;AAAC"}
|
|
@@ -355,6 +355,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
355
355
|
};
|
|
356
356
|
meetingInfoFailureReason: string;
|
|
357
357
|
meetingInfoFailureCode?: number;
|
|
358
|
+
meetingInfoExtraParams?: Record<string, any>;
|
|
358
359
|
networkQualityMonitor: NetworkQualityMonitor;
|
|
359
360
|
networkStatus: string;
|
|
360
361
|
passwordStatus: string;
|
|
@@ -418,6 +419,19 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
418
419
|
* @returns {Boolean}
|
|
419
420
|
*/
|
|
420
421
|
isLocusCall(): boolean;
|
|
422
|
+
/**
|
|
423
|
+
* Internal method for fetching meeting info
|
|
424
|
+
*
|
|
425
|
+
* @returns {Promise}
|
|
426
|
+
*/
|
|
427
|
+
private fetchMeetingInfoInternal;
|
|
428
|
+
/**
|
|
429
|
+
* Refreshes the meeting info permission token (it's required for joining meetings)
|
|
430
|
+
*
|
|
431
|
+
* @param {string} [reason] used for metrics and logging purposes (optional)
|
|
432
|
+
* @returns {Promise}
|
|
433
|
+
*/
|
|
434
|
+
refreshPermissionToken(reason?: string): Promise<void>;
|
|
421
435
|
/**
|
|
422
436
|
* Fetches meeting information.
|
|
423
437
|
* @param {Object} options
|
|
@@ -16,6 +16,8 @@ declare const BEHAVIORAL_METRICS: {
|
|
|
16
16
|
GET_USER_MEDIA_FAILURE: string;
|
|
17
17
|
GET_DISPLAY_MEDIA_FAILURE: string;
|
|
18
18
|
JOIN_WITH_MEDIA_FAILURE: string;
|
|
19
|
+
LLM_CONNECTION_AFTER_JOIN_FAILURE: string;
|
|
20
|
+
RECEIVE_TRANSCRIPTION_AFTER_JOIN_FAILURE: string;
|
|
19
21
|
DISCONNECT_DUE_TO_INACTIVITY: string;
|
|
20
22
|
MEETING_MEDIA_INACTIVE: string;
|
|
21
23
|
MEETING_RECONNECT_FAILURE: string;
|
|
@@ -54,5 +56,7 @@ declare const BEHAVIORAL_METRICS: {
|
|
|
54
56
|
MEETING_INFO_POLICY_ERROR: string;
|
|
55
57
|
LOCUS_DELTA_SYNC_FAILED: string;
|
|
56
58
|
LOCUS_DELTA_OUT_OF_ORDER: string;
|
|
59
|
+
PERMISSION_TOKEN_REFRESH: string;
|
|
60
|
+
PERMISSION_TOKEN_REFRESH_ERROR: string;
|
|
57
61
|
};
|
|
58
62
|
export { BEHAVIORAL_METRICS as default };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-meetings",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.256",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
|
|
6
6
|
"contributors": [
|
|
@@ -32,12 +32,12 @@
|
|
|
32
32
|
"build": "yarn run -T tsc --declaration true --declarationDir ./dist/types"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@webex/plugin-meetings": "3.0.0-beta.
|
|
36
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
37
|
-
"@webex/test-helper-mocha": "3.0.0-beta.
|
|
38
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
39
|
-
"@webex/test-helper-retry": "3.0.0-beta.
|
|
40
|
-
"@webex/test-helper-test-users": "3.0.0-beta.
|
|
35
|
+
"@webex/plugin-meetings": "3.0.0-beta.256",
|
|
36
|
+
"@webex/test-helper-chai": "3.0.0-beta.256",
|
|
37
|
+
"@webex/test-helper-mocha": "3.0.0-beta.256",
|
|
38
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.256",
|
|
39
|
+
"@webex/test-helper-retry": "3.0.0-beta.256",
|
|
40
|
+
"@webex/test-helper-test-users": "3.0.0-beta.256",
|
|
41
41
|
"chai": "^4.3.4",
|
|
42
42
|
"chai-as-promised": "^7.1.1",
|
|
43
43
|
"jsdom-global": "3.0.2",
|
|
@@ -46,19 +46,19 @@
|
|
|
46
46
|
"typescript": "^4.7.4"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@webex/common": "3.0.0-beta.
|
|
49
|
+
"@webex/common": "3.0.0-beta.256",
|
|
50
50
|
"@webex/internal-media-core": "2.0.3",
|
|
51
|
-
"@webex/internal-plugin-conversation": "3.0.0-beta.
|
|
52
|
-
"@webex/internal-plugin-device": "3.0.0-beta.
|
|
53
|
-
"@webex/internal-plugin-llm": "3.0.0-beta.
|
|
54
|
-
"@webex/internal-plugin-mercury": "3.0.0-beta.
|
|
55
|
-
"@webex/internal-plugin-metrics": "3.0.0-beta.
|
|
56
|
-
"@webex/internal-plugin-support": "3.0.0-beta.
|
|
57
|
-
"@webex/internal-plugin-user": "3.0.0-beta.
|
|
58
|
-
"@webex/media-helpers": "3.0.0-beta.
|
|
59
|
-
"@webex/plugin-people": "3.0.0-beta.
|
|
60
|
-
"@webex/plugin-rooms": "3.0.0-beta.
|
|
61
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
51
|
+
"@webex/internal-plugin-conversation": "3.0.0-beta.256",
|
|
52
|
+
"@webex/internal-plugin-device": "3.0.0-beta.256",
|
|
53
|
+
"@webex/internal-plugin-llm": "3.0.0-beta.256",
|
|
54
|
+
"@webex/internal-plugin-mercury": "3.0.0-beta.256",
|
|
55
|
+
"@webex/internal-plugin-metrics": "3.0.0-beta.256",
|
|
56
|
+
"@webex/internal-plugin-support": "3.0.0-beta.256",
|
|
57
|
+
"@webex/internal-plugin-user": "3.0.0-beta.256",
|
|
58
|
+
"@webex/media-helpers": "3.0.0-beta.256",
|
|
59
|
+
"@webex/plugin-people": "3.0.0-beta.256",
|
|
60
|
+
"@webex/plugin-rooms": "3.0.0-beta.256",
|
|
61
|
+
"@webex/webex-core": "3.0.0-beta.256",
|
|
62
62
|
"ampersand-collection": "^2.0.2",
|
|
63
63
|
"bowser": "^2.11.0",
|
|
64
64
|
"btoa": "^1.2.1",
|
package/src/meeting/index.ts
CHANGED
|
@@ -62,8 +62,10 @@ import ReconnectionError from '../common/errors/reconnection';
|
|
|
62
62
|
import ReconnectInProgress from '../common/errors/reconnection-in-progress';
|
|
63
63
|
import {
|
|
64
64
|
_CALL_,
|
|
65
|
+
_CONVERSATION_URL_,
|
|
65
66
|
_INCOMING_,
|
|
66
67
|
_JOIN_,
|
|
68
|
+
_MEETING_LINK_,
|
|
67
69
|
AUDIO,
|
|
68
70
|
CONTENT,
|
|
69
71
|
DISPLAY_HINTS,
|
|
@@ -514,6 +516,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
514
516
|
|
|
515
517
|
meetingInfoFailureReason: string;
|
|
516
518
|
meetingInfoFailureCode?: number;
|
|
519
|
+
meetingInfoExtraParams?: Record<string, any>;
|
|
517
520
|
networkQualityMonitor: NetworkQualityMonitor;
|
|
518
521
|
networkStatus: string;
|
|
519
522
|
passwordStatus: string;
|
|
@@ -1279,54 +1282,26 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1279
1282
|
}
|
|
1280
1283
|
|
|
1281
1284
|
/**
|
|
1282
|
-
*
|
|
1283
|
-
*
|
|
1284
|
-
* @param {String} [options.password] optional
|
|
1285
|
-
* @param {String} [options.captchaCode] optional
|
|
1286
|
-
* @param {Boolean} [options.sendCAevents] optional - Whether to submit Call Analyzer events or not. Default: false.
|
|
1287
|
-
* @public
|
|
1288
|
-
* @memberof Meeting
|
|
1285
|
+
* Internal method for fetching meeting info
|
|
1286
|
+
*
|
|
1289
1287
|
* @returns {Promise}
|
|
1290
1288
|
*/
|
|
1291
|
-
|
|
1289
|
+
private async fetchMeetingInfoInternal({
|
|
1290
|
+
destination,
|
|
1291
|
+
destinationType,
|
|
1292
1292
|
password = null,
|
|
1293
1293
|
captchaCode = null,
|
|
1294
1294
|
extraParams = {},
|
|
1295
1295
|
sendCAevents = false,
|
|
1296
|
-
}: {
|
|
1297
|
-
password?: string;
|
|
1298
|
-
captchaCode?: string;
|
|
1299
|
-
extraParams?: Record<string, any>;
|
|
1300
|
-
sendCAevents?: boolean;
|
|
1301
|
-
}) {
|
|
1302
|
-
// when fetch meeting info is called directly by the client, we want to clear out the random timer for sdk to do it
|
|
1303
|
-
if (this.fetchMeetingInfoTimeoutId) {
|
|
1304
|
-
clearTimeout(this.fetchMeetingInfoTimeoutId);
|
|
1305
|
-
this.fetchMeetingInfoTimeoutId = undefined;
|
|
1306
|
-
}
|
|
1307
|
-
if (captchaCode && !this.requiredCaptcha) {
|
|
1308
|
-
return Promise.reject(
|
|
1309
|
-
new Error('fetchMeetingInfo() called with captchaCode when captcha was not required')
|
|
1310
|
-
);
|
|
1311
|
-
}
|
|
1312
|
-
if (
|
|
1313
|
-
password &&
|
|
1314
|
-
this.passwordStatus !== PASSWORD_STATUS.REQUIRED &&
|
|
1315
|
-
this.passwordStatus !== PASSWORD_STATUS.UNKNOWN
|
|
1316
|
-
) {
|
|
1317
|
-
return Promise.reject(
|
|
1318
|
-
new Error('fetchMeetingInfo() called with password when password was not required')
|
|
1319
|
-
);
|
|
1320
|
-
}
|
|
1321
|
-
|
|
1296
|
+
}): Promise<void> {
|
|
1322
1297
|
try {
|
|
1323
1298
|
const captchaInfo = captchaCode
|
|
1324
1299
|
? {code: captchaCode, id: this.requiredCaptcha.captchaId}
|
|
1325
1300
|
: null;
|
|
1326
1301
|
|
|
1327
1302
|
const info = await this.attrs.meetingInfoProvider.fetchMeetingInfo(
|
|
1328
|
-
|
|
1329
|
-
|
|
1303
|
+
destination,
|
|
1304
|
+
destinationType,
|
|
1330
1305
|
password,
|
|
1331
1306
|
captchaInfo,
|
|
1332
1307
|
// @ts-ignore - config coming from registerPlugin
|
|
@@ -1420,6 +1395,125 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1420
1395
|
}
|
|
1421
1396
|
}
|
|
1422
1397
|
|
|
1398
|
+
/**
|
|
1399
|
+
* Refreshes the meeting info permission token (it's required for joining meetings)
|
|
1400
|
+
*
|
|
1401
|
+
* @param {string} [reason] used for metrics and logging purposes (optional)
|
|
1402
|
+
* @returns {Promise}
|
|
1403
|
+
*/
|
|
1404
|
+
public async refreshPermissionToken(reason?: string): Promise<void> {
|
|
1405
|
+
if (!this.meetingInfo?.permissionToken) {
|
|
1406
|
+
LoggerProxy.logger.info(
|
|
1407
|
+
`Meeting:index#refreshPermissionToken --> cannot refresh the permission token, because we don't have it (reason=${reason})`
|
|
1408
|
+
);
|
|
1409
|
+
|
|
1410
|
+
return;
|
|
1411
|
+
}
|
|
1412
|
+
|
|
1413
|
+
const isStartingSpaceInstantV2Meeting =
|
|
1414
|
+
this.destinationType === _CONVERSATION_URL_ &&
|
|
1415
|
+
// @ts-ignore - config coming from registerPlugin
|
|
1416
|
+
this.config.experimental.enableAdhocMeetings &&
|
|
1417
|
+
// @ts-ignore
|
|
1418
|
+
this.webex.meetings.preferredWebexSite;
|
|
1419
|
+
|
|
1420
|
+
const destination = isStartingSpaceInstantV2Meeting
|
|
1421
|
+
? this.meetingInfo.meetingJoinUrl
|
|
1422
|
+
: this.destination;
|
|
1423
|
+
const destinationType = isStartingSpaceInstantV2Meeting ? _MEETING_LINK_ : this.destinationType;
|
|
1424
|
+
|
|
1425
|
+
const timeLeft = this.getPermissionTokenTimeLeftInSec();
|
|
1426
|
+
|
|
1427
|
+
LoggerProxy.logger.info(
|
|
1428
|
+
`Meeting:index#refreshPermissionToken --> refreshing permission token, destinationType=${destinationType}, timeLeft=${timeLeft}, reason=${reason}`
|
|
1429
|
+
);
|
|
1430
|
+
|
|
1431
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.PERMISSION_TOKEN_REFRESH, {
|
|
1432
|
+
correlationId: this.correlationId,
|
|
1433
|
+
timeLeft,
|
|
1434
|
+
reason,
|
|
1435
|
+
destinationType,
|
|
1436
|
+
});
|
|
1437
|
+
|
|
1438
|
+
try {
|
|
1439
|
+
await this.fetchMeetingInfoInternal({
|
|
1440
|
+
destination,
|
|
1441
|
+
destinationType,
|
|
1442
|
+
extraParams: {
|
|
1443
|
+
...this.meetingInfoExtraParams,
|
|
1444
|
+
permissionToken: this.meetingInfo.permissionToken,
|
|
1445
|
+
},
|
|
1446
|
+
sendCAevents: true, // because if we're refreshing the permissionToken, it means that user is intending to join that meeting, so we want CA events
|
|
1447
|
+
});
|
|
1448
|
+
} catch (error) {
|
|
1449
|
+
LoggerProxy.logger.info(
|
|
1450
|
+
'Meeting:index#refreshPermissionToken --> failed to refresh the permission token:',
|
|
1451
|
+
error
|
|
1452
|
+
);
|
|
1453
|
+
|
|
1454
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.PERMISSION_TOKEN_REFRESH_ERROR, {
|
|
1455
|
+
correlationId: this.correlationId,
|
|
1456
|
+
reason: error.message,
|
|
1457
|
+
stack: error.stack,
|
|
1458
|
+
});
|
|
1459
|
+
|
|
1460
|
+
throw error;
|
|
1461
|
+
}
|
|
1462
|
+
}
|
|
1463
|
+
|
|
1464
|
+
/**
|
|
1465
|
+
* Fetches meeting information.
|
|
1466
|
+
* @param {Object} options
|
|
1467
|
+
* @param {String} [options.password] optional
|
|
1468
|
+
* @param {String} [options.captchaCode] optional
|
|
1469
|
+
* @param {Boolean} [options.sendCAevents] optional - Whether to submit Call Analyzer events or not. Default: false.
|
|
1470
|
+
* @public
|
|
1471
|
+
* @memberof Meeting
|
|
1472
|
+
* @returns {Promise}
|
|
1473
|
+
*/
|
|
1474
|
+
public async fetchMeetingInfo({
|
|
1475
|
+
password = null,
|
|
1476
|
+
captchaCode = null,
|
|
1477
|
+
extraParams = {},
|
|
1478
|
+
sendCAevents = false,
|
|
1479
|
+
}: {
|
|
1480
|
+
password?: string;
|
|
1481
|
+
captchaCode?: string;
|
|
1482
|
+
extraParams?: Record<string, any>;
|
|
1483
|
+
sendCAevents?: boolean;
|
|
1484
|
+
}) {
|
|
1485
|
+
// when fetch meeting info is called directly by the client, we want to clear out the random timer for sdk to do it
|
|
1486
|
+
if (this.fetchMeetingInfoTimeoutId) {
|
|
1487
|
+
clearTimeout(this.fetchMeetingInfoTimeoutId);
|
|
1488
|
+
this.fetchMeetingInfoTimeoutId = undefined;
|
|
1489
|
+
}
|
|
1490
|
+
if (captchaCode && !this.requiredCaptcha) {
|
|
1491
|
+
return Promise.reject(
|
|
1492
|
+
new Error('fetchMeetingInfo() called with captchaCode when captcha was not required')
|
|
1493
|
+
);
|
|
1494
|
+
}
|
|
1495
|
+
if (
|
|
1496
|
+
password &&
|
|
1497
|
+
this.passwordStatus !== PASSWORD_STATUS.REQUIRED &&
|
|
1498
|
+
this.passwordStatus !== PASSWORD_STATUS.UNKNOWN
|
|
1499
|
+
) {
|
|
1500
|
+
return Promise.reject(
|
|
1501
|
+
new Error('fetchMeetingInfo() called with password when password was not required')
|
|
1502
|
+
);
|
|
1503
|
+
}
|
|
1504
|
+
|
|
1505
|
+
this.meetingInfoExtraParams = cloneDeep(extraParams);
|
|
1506
|
+
|
|
1507
|
+
return this.fetchMeetingInfoInternal({
|
|
1508
|
+
destination: this.destination,
|
|
1509
|
+
destinationType: this.destinationType,
|
|
1510
|
+
password,
|
|
1511
|
+
captchaCode,
|
|
1512
|
+
extraParams,
|
|
1513
|
+
sendCAevents,
|
|
1514
|
+
});
|
|
1515
|
+
}
|
|
1516
|
+
|
|
1423
1517
|
/**
|
|
1424
1518
|
* Checks if the supplied password/host key is correct. It returns a promise with information whether the
|
|
1425
1519
|
* password and captcha code were correct or not.
|
|
@@ -4459,39 +4553,13 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4459
4553
|
this.meetingFiniteStateMachine.join();
|
|
4460
4554
|
LoggerProxy.logger.log('Meeting:index#join --> Success');
|
|
4461
4555
|
|
|
4462
|
-
return join;
|
|
4463
|
-
})
|
|
4464
|
-
.then((join) => {
|
|
4465
|
-
joinSuccess(join);
|
|
4466
|
-
this.deferJoin = undefined;
|
|
4467
4556
|
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.JOIN_SUCCESS, {
|
|
4468
4557
|
correlation_id: this.correlationId,
|
|
4469
4558
|
});
|
|
4470
4559
|
|
|
4471
|
-
|
|
4472
|
-
})
|
|
4473
|
-
.then(async (join) => {
|
|
4474
|
-
// @ts-ignore - config coming from registerPlugin
|
|
4475
|
-
if (this.config.enableAutomaticLLM) {
|
|
4476
|
-
await this.updateLLMConnection();
|
|
4477
|
-
}
|
|
4560
|
+
joinSuccess(join);
|
|
4478
4561
|
|
|
4479
|
-
|
|
4480
|
-
})
|
|
4481
|
-
.then(async (join) => {
|
|
4482
|
-
if (isBrowser) {
|
|
4483
|
-
// @ts-ignore - config coming from registerPlugin
|
|
4484
|
-
if (this.config.receiveTranscription || options.receiveTranscription) {
|
|
4485
|
-
if (this.isTranscriptionSupported()) {
|
|
4486
|
-
await this.receiveTranscription();
|
|
4487
|
-
LoggerProxy.logger.info('Meeting:index#join --> enabled to recieve transcription!');
|
|
4488
|
-
}
|
|
4489
|
-
}
|
|
4490
|
-
} else {
|
|
4491
|
-
LoggerProxy.logger.error(
|
|
4492
|
-
'Meeting:index#join --> Receving transcription is not supported on this platform'
|
|
4493
|
-
);
|
|
4494
|
-
}
|
|
4562
|
+
this.deferJoin = undefined;
|
|
4495
4563
|
|
|
4496
4564
|
return join;
|
|
4497
4565
|
})
|
|
@@ -4527,9 +4595,59 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4527
4595
|
);
|
|
4528
4596
|
|
|
4529
4597
|
joinFailed(error);
|
|
4598
|
+
|
|
4530
4599
|
this.deferJoin = undefined;
|
|
4531
4600
|
|
|
4532
4601
|
return Promise.reject(error);
|
|
4602
|
+
})
|
|
4603
|
+
.then((join) => {
|
|
4604
|
+
// @ts-ignore - config coming from registerPlugin
|
|
4605
|
+
if (this.config.enableAutomaticLLM) {
|
|
4606
|
+
this.updateLLMConnection().catch((error) => {
|
|
4607
|
+
LoggerProxy.logger.error('Meeting:index#join --> Update LLM Connection Failed', error);
|
|
4608
|
+
|
|
4609
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.LLM_CONNECTION_AFTER_JOIN_FAILURE, {
|
|
4610
|
+
correlation_id: this.correlationId,
|
|
4611
|
+
reason: error?.message,
|
|
4612
|
+
stack: error.stack,
|
|
4613
|
+
});
|
|
4614
|
+
});
|
|
4615
|
+
}
|
|
4616
|
+
|
|
4617
|
+
return join;
|
|
4618
|
+
})
|
|
4619
|
+
.then((join) => {
|
|
4620
|
+
if (isBrowser) {
|
|
4621
|
+
// @ts-ignore - config coming from registerPlugin
|
|
4622
|
+
if (this.config.receiveTranscription || options.receiveTranscription) {
|
|
4623
|
+
if (this.isTranscriptionSupported()) {
|
|
4624
|
+
LoggerProxy.logger.info(
|
|
4625
|
+
'Meeting:index#join --> Attempting to enabled to recieve transcription!'
|
|
4626
|
+
);
|
|
4627
|
+
this.receiveTranscription().catch((error) => {
|
|
4628
|
+
LoggerProxy.logger.error(
|
|
4629
|
+
'Meeting:index#join --> Receive Transcription Failed',
|
|
4630
|
+
error
|
|
4631
|
+
);
|
|
4632
|
+
|
|
4633
|
+
Metrics.sendBehavioralMetric(
|
|
4634
|
+
BEHAVIORAL_METRICS.RECEIVE_TRANSCRIPTION_AFTER_JOIN_FAILURE,
|
|
4635
|
+
{
|
|
4636
|
+
correlation_id: this.correlationId,
|
|
4637
|
+
reason: error?.message,
|
|
4638
|
+
stack: error.stack,
|
|
4639
|
+
}
|
|
4640
|
+
);
|
|
4641
|
+
});
|
|
4642
|
+
}
|
|
4643
|
+
}
|
|
4644
|
+
} else {
|
|
4645
|
+
LoggerProxy.logger.error(
|
|
4646
|
+
'Meeting:index#join --> Receving transcription is not supported on this platform'
|
|
4647
|
+
);
|
|
4648
|
+
}
|
|
4649
|
+
|
|
4650
|
+
return join;
|
|
4533
4651
|
});
|
|
4534
4652
|
}
|
|
4535
4653
|
|
package/src/metrics/constants.ts
CHANGED
|
@@ -18,6 +18,8 @@ const BEHAVIORAL_METRICS = {
|
|
|
18
18
|
GET_USER_MEDIA_FAILURE: 'js_sdk_get_user_media_failures',
|
|
19
19
|
GET_DISPLAY_MEDIA_FAILURE: 'js_sdk_get_display_media_failures',
|
|
20
20
|
JOIN_WITH_MEDIA_FAILURE: 'js_sdk_join_with_media_failures',
|
|
21
|
+
LLM_CONNECTION_AFTER_JOIN_FAILURE: 'js_sdk_llm_connection_after_join_failure',
|
|
22
|
+
RECEIVE_TRANSCRIPTION_AFTER_JOIN_FAILURE: 'js_sdk_receive_transcription_after_join_failure',
|
|
21
23
|
|
|
22
24
|
DISCONNECT_DUE_TO_INACTIVITY: 'js_sdk_disconnect_due_to_inactivity',
|
|
23
25
|
MEETING_MEDIA_INACTIVE: 'js_sdk_meeting_media_inactive',
|
|
@@ -57,6 +59,8 @@ const BEHAVIORAL_METRICS = {
|
|
|
57
59
|
MEETING_INFO_POLICY_ERROR: 'js_sdk_meeting_info_policy_error',
|
|
58
60
|
LOCUS_DELTA_SYNC_FAILED: 'js_sdk_locus_delta_sync_failed',
|
|
59
61
|
LOCUS_DELTA_OUT_OF_ORDER: 'js_sdk_locus_delta_ooo',
|
|
62
|
+
PERMISSION_TOKEN_REFRESH: 'js_sdk_permission_token_refresh',
|
|
63
|
+
PERMISSION_TOKEN_REFRESH_ERROR: 'js_sdk_permission_token_refresh_error',
|
|
60
64
|
};
|
|
61
65
|
|
|
62
66
|
export {BEHAVIORAL_METRICS as default};
|