/** * XY WebRTC SDK Event Keys * * Created at : 2024-06-07 11:00:49 * Last modified : 2025-03-11 14:28:17 */ /** * SDK客户端事件Key枚举 * * @since 1.0.0 */ export declare enum XYClientEventKey { /** * ==================分组:会控事件================== */ /** * 会控清除举手事件 * 相关内容:​​​基础功能-举手发言 */ CANCEL_HANDUP = "cancel-handup", /** * 焦点画面事件 * 可通过会控对终端设置/取消焦点画面;自动布局下,焦点画面会保持在演讲者布局的大窗口上; * 使用场景:需要将画面固定在大窗口上,可以设置焦点画面,可通过监听此事件获取当前焦点画面信息,给用户友好提示 * 调用时机:通过调用startMeetingFocusView开启焦点画面或通过会控页面指定终端成为焦点画面终端 * 相关内容:​​高级功能-焦点画面​​ * 相关方法:设置焦点画面:startMeetingFocusView;取消焦点画面:stopMeetingFocusView * * @since 4.0.0 */ FOCUS_VIEW = "focus-view", /** * 会控互动工具相关数据, 签到事件 * 加入会议后,会议主持人可以通过会控页面发起成员签到服务,签到发起后,WebSDK会收到此消息,通过CopyWriting数据结构展示签到提示框内容,使用signin方法完成签到 * 使用场景:签到业务可监听此消息 * 相关方法:响应签到:signIn */ INTERACTIVE_TOOL_INFO = "interactiveToolInfo", /** * 会控消息,包含麦克风静音/非静音、是否强制静音、主会场设备、对话模式、轮询多画面控制等状态和信息 * 使用场景:举手发言、对话模式、本地共享、录制等场景,可通过监听此事件获取对应的会控状态 * 调用时机:初始化SDK后,入会之前 * 相关内容:​​举手发言​​​、​​对话模式​​​、​​内容共享​​、​​轮询多画面 */ MEETING_CONTROL = "meeting-control", /** * 会控申请开启/关闭摄像头消息、提示消息 * 会控申请打开指定参会者的摄像头,被申请者收到此事件后,可以应答是否响应开启摄像头操作; * 使用场景:会控操作开启参会者摄像头,查看参会者摄像头画面 * 相关方法:通知会控打开/关闭摄像头结果:sendVideoControlResult * 注意事项:只有会控操作自己的设备,才会出现强制开启摄像头操作,其他参会者都需要申请,由用户决定是否打开摄像头; */ MEETING_CONTROL_VIDEO = "meeting-control-video", /** * 会控联席主持人/主持人/改名权限变更事件 * 加入会议成功后,可通过此事件获取当前参会者的角色身份; * 使用场景:需要区分普通参会者、主持人、联席主持人角色时 */ NOTIFICATION = "notification", /** * 会控启用/关闭等候室事件 * 会控或者云会议室设置开启等候室后,当前参会者接收不到远端画面和声音,需等待主持人移除等候室后即可再次加入会议; * 使用场景:需要参会者暂时不参与会议讨论,不接收会议内容 */ ONHOLD = "onhold", /** * 会控点名/滚动字幕事件 * 使用场景:需要展示会议固定滚动信息时、点名消息提供等 * 关联内容:​​高级功能-字幕 */ SUB_TITLE = "sub-title", /** * ==================分组:会议状态/信息================== */ /** * 本地麦克风状态事件 * 加入会议后,监听此方法获取麦克风实时开启/关闭状态,此方法会基于本地设备操作或远端会控等控制实时更新,方便业务做提醒和UI更新使用; * 使用场景:获取最新的实时麦克风启用状态 * 相关事件:获取实时摄像头状态事件:video-status * 相关内容:​​基础功能-设备管理 */ AUDIO_STATUS = "audio-status", /** * 会议呼叫状态事件 * 入会之前监听此消息,获取呼叫会议的连接状态,最大连接40s时间,中间会有不同连接状态上报。默认情况下,大概1-3s加入会议成功; * 使用场景:加入会议获取连接状态 * 相关内容:基础功能-参会 * 相关事件:强制退会事件:disconnected,收到此消息后,必须执行挂断会议操作 */ CALL_STATUS = "call-status", /** * 云会议室信息 * 获取详细的呼叫会议室信息,包含会议室配置,基础信息,邀请链接,会议主持人(初始入会状态)信息等 * 使用场景:初始入会获取会议基本信息 * * @since 4.0.0 */ CONFERENCE_INFO = "conference-info", /** * 强制挂断会议消息,收到此消息时,需要进行退出会议操作 * 调用时机:初始化SDK后,入会之前 * 相关事件:会议连接状态事件:call-status * 注意事项:强烈建议处理此事件,否则会导致会议保持在会,但无音视频数据造成的各种异常问题 */ DISCONNECTED = "disconnected", /** * 企业配置信息(头像配置、禁用语音转写英文翻译) * * @since 4.0.0 */ ENTERPRISE_CONFIG = "enterprise-config", /** * 轮询状态事件 * @since 4.0.0 */ LAYOUT_STATE = "layout-state", /** * 媒体迁会事件 */ MEDIA_CHANGED_MIGRATE = "media-changed-migrate", /** * 登录用户信息和个人云会议室信息数据 * * @since 4.0.0 */ USER_INFO = "user-info", /** * 本地摄像头状态事件 */ VIDEO_STATUS = "video-status", /** * ==================分组:拉流/布局================== */ /** * 会议人员数量/共享内容/主会场等发生变化事件 * 使用场景:自定义布局时,基于此事件触发请求参会者视频流数据 * 相关内容:​​拉流及布局​​ * 相关方法:请求远端参会者视频流方法:requestNewLayout * 相关事件:请流完成后,会收到layout事件,返回结果列表数据 * 注意事项:当收到此消息时,一定需要重新请求视频流 */ CONF_CHANGE_INFO = "conf-change-info", /** * 当前正在共享内容的参会者信息 */ CONTENT = "content", /** * 自动布局-布局容器尺寸变化事件 * * @since 4.0.0 */ CONTAINER_RESIZE = "container-resize", /** * 自动布局-参会人员强制全屏显示事件 * 使用场景:自动布局下设置全屏画面 * 调用时机:初始化SDK后,入会之前 */ FORCE_FULL_SCREEN = "force-full-screen", /** * 参会成员布局列表数据,包含参会者基本信息、位置、尺寸、旋转等数据(自定义布局不包含位置、尺寸、旋转数据) * 请流完成后会返回布局结果数据,包含当前布局模式的参会人员状态、基本信息数据,业务直接使用此数据渲染最终的参会者数据即可;有如下可能导致重新推送此数据的时机: * 1、自动布局,当会议的状态产生变化时,会重新推送此消息 * 2、自定义布局,当重新发送请流,会重新推送此消息 * 3、屏幕/布局容器大小变化时,会推送新的信息 * 4、布局模型变化后,会推送新的信息 * 调用时机:初始化SDK后,入会之前 * 相关内容:​​拉流及布局​​ * 注意事项:此数据触发较为频繁,建议使用框架(React、Vue等)进行diff更新操作 * 相关方法:请及时调用setVideoRenderer方法执行画面渲染,否则画面会无流伴随黑屏现象 */ LAYOUT = "layout", /** * 自动布局-分页数据 */ PAGE_INFO = "page-info", /** * 参会者视频画面旋转信息 * 调用时机:初始化SDK后,入会之前 * 相关内容:​​拉流及布局 */ ROTATION_CHANGE = "rotation-change", /** * 自动布局-布局容器尺寸和位置信息 * 自动布局,实时上报布局画面容器尺寸数据,支持屏幕 resize 变化。 自定义布局不需要监听此数据; * 调用时机:初始化SDK后,入会之前 * 相关内容:​​拉流及布局 */ SCREEN_INFO = "screen-info", /** * 自动布局-当前布局模式 * 使用场景:需根据布局模式切换布局画面、或显示当前布局模式,可监听此事件 * 相关内容:​​拉流及布局​​ * 相关方法:调用switchLayout方法切换不同的布局模式 */ TEMPLATE_MODE = "template-mode", /** * ==================分组:媒体================== */ /** * 音频轨道Tracks数据 * 使用场景:会中播放远端参会者的声音,在入会前监听此事件 * 调用时机:加入会议成功后调用 * 相关内容:​​基础功能-参会​​ * 相关方法:调用setAudioRenderer方法播放音频数据 * 相关事件:通过监听play-failed事件获取播放异常行为,如果播放异常,需调用playAudio方法重新播放音频数据 */ AUDIO_TRACK = "audio-track", /** * 订阅Roster事件(参会者数据) * 监听全量订阅参会者数据,可以在入会首次接收到全部参会者信息,之后,如果有其他成员入会、退会、状态变化,会通过增量数据推送; * 使用场景:会中需要获取全量参会者数据时监听 * 调用时机:加入会议成功后 * 注意事项:全量订阅Roster数据没有进行优先级排序,如需排序,请自行处理 */ BULK_ROSTER = "bulkRoster", /** * 参会者出入会事件 * 使用场景:会中需要展示当前会议出入会的参会者信息,可监听此事件 */ IN_OUT_REMINDER = "in-out-reminder", /** * 本地端网络质量等级 * 会议中,使用此事件监听获取本地端网络情况,基于不同的网络情况调整视频和布局策略,保证会议的稳定性,并基于一定的用户提示,例如在Bad网络下,提醒用户更新网络环境; * 使用场景:监听获取本地的网络质量情况 */ NETWORK_LEVEL = "networkLevel", /** * 远端参会者网络等级,每隔5s推送一次数据 * 会议中,使用此事件监听获取远端参会者的网络情况,推送频率是每个参会者5秒推送一次; * 使用场景:在Layout布局或者参会者列表中实时展示远端参会者的网络情况 */ NETWORK_PARAMETER = "networkParameter", /** * 会议总人数事件 */ PARTICIPANTS_COUNT = "participants-count", /** * 参会者列表事件(仅上报前20路,包含本地数据) * 实时参会者列表数据,按照优先级上报最多20条数据;如果开启隐藏本地画面,则数据中不包含本地信息; * 前20路参会者数据排序优先级:共享内容->主会场->本地->AS终端->开启摄像头+麦克风终端->开启麦克风终端->开启摄像头终端->关闭摄像头+麦克风终端; * 调用时机:初始化SDK后,入会之前 * 相关事件:如需获取全量参会者数据,可以监听订阅Roster事件:bulkRoster */ ROSTER = "roster", /** * 语音激励人员信息 * 此消息推送的AS设备会响应到演讲者布局的大窗口上,当切换参会者时,对应大窗口画面会跟随变化;如需固定大窗口画面,可以使用焦点画面方法固定大窗口参会者; * 使用场景:演讲者布局大窗口显示AS设备 * 相关事件:监听layout事件获取最新的布局列表数据;如需实时获取多路参会者声量大小数据,可以监听speakers-info消息 */ SPEAKER_INFO = "speaker-info", /** * 实时讲话人信息(最多3三路数据) * 需要通过设置​​setFeatureConfig​​中的​​enableSpeakerInfo​​属性为true启用推送实时讲话人信息。一旦启用,当会议中的讲话人发生变化时,每隔2秒推送一次消息,如果没有变化,则不会推送; * 使用场景:显示最多3路的正在讲话人的信息 * 相关方法:调用​​setFeatureConfig​​方法启用实时讲话人开关,调用getAudioAnalyser方法获取音频分析器,可以获取对应讲话人的实时音量大小; */ SPEAKERS_INFO = "speakers-info", /** * 通话字幕内容 * 调用​​startTranslation​​方法启用通话字幕功能后,当会议中的参会者说话时,SDK会上报相应参会者说话的内容; * 使用场景:显示会中说话人实时字幕加英文翻译,可监听此事件 * 相关内容:​​通话字幕​​ * 相关方法:startTranslation */ TRANSLATION_CONTENT = "translation-content", /** * 视频轨道事件 * 一般情况下,无需使用此事件获取所有参会者MediaStream数据,可通过getVideoStream方法获取具体参会者视频流; * 相关方法:获取视频的Stream数据方法:getVideoStream */ VIDEO_TRACK = "video-track", /** * AI 合成语音TTS 状态事件 */ AI_TTS_STATUS = "ai-tts-status", /** * AI 数字人状态事件 */ AI_DIGITAL_HUMAN_STATUS = "ai-digital-human-status", /** * ==================分组:会议调度================== */ /** * 多分组通道信息事件 * ​WebSDK支持媒体多分组能力,可以基于不同的媒体通道发送给不同端音视频数据;当会议支持多分组能力后,SDK会上报非0/1的分组通道给业务,由业务决定启用具体的分组通道,并在特定的分组通道传输音视频流; * 使用场景:会控向会议中指定终端喊话 * 相关方法:启用通道方法:startMonitorGroup;停止通道方法:stopMonitorGroup */ MULTI_GROUP_INFO = "multi-group-info", /** * 调度成功事件 * 调度结果数据,返回成功和失败调度设备数据; * 使用场景:教育平台-巡课 * 相关方法:开启调度设备:startMonitor */ START_MONITOR_REPORT = "start-monitor-report", /** * 停止调度事件 * 调度停止,释放整个链路资源; * 使用场景:教育平台-巡课 * 相关方法:结束调度设备:stopMonitor */ STOP_MONITOR_REPORT = "stop-monitor-report", /** * ==================分组:录制================== */ /** * 本地录制结果上报事件 * 调用​​startCloudRecord​​方法启动录制后,通过监听此事件可获取本地录制结果; * 相关内容:​​高级功能-录制​​ * 相关方法:调用startCloudRecord方法开启录制 * 使用限制:需要开启云会议室属性开关和会控录制权限开关 */ RECORDING_STATE_CHANGED = "recording-state-changed", /** * 远端(或会控)录制状态通知 * 远端或会控开启、停止录制,通过监听此事件可获取对应状态; * 关联内容:​​高级功能-录制 */ RECORD_STATUS_NOTIFICATION = "record-status-notification", /** * 录制权限事件 * 当前云会议室录制权限,如果没有权限,则本地不可进行录制,录制权限可以在管理平台云会议室设置中开启; * 关联内容:​​高级功能-录制​​ * 使用限制:需要开通云会议室设置和会控录制权限开关 */ RECORD_PERMISSION = "record-permission", /** * ==================分组:白板/批注================== */ /** * 白板状态变更事件 * 关联内容:高级功能-白板 * 相关方法:调用startWhiteboard开始分享白板 */ WHITEBOARD_STATE_CHANGED = "whiteboard-state-changed", /** * 批注状态变更事件 * 关联内容:高级功能-批注 * 相关方法:调用startAnnotation开始分享批注 * 使用限制:仅支持在接收分享内容下启用批注功能 */ ANNOTATION_STATE_CHANGED = "annotation-state-changed", /** * 白板状态变更事件 * 关联内容:高级功能-白板 * 相关方法:调用startWhiteboard开始分享白板 */ WHITEBOARD_CONNECTED = "whiteboard-connected", /** * 白板绘制数据 * 关联内容:高级功能-白板 * 相关方法:调用startWhiteboard开始分享白板 */ WHITEBOARD_DATA_CHANGED = "whiteboard-data-changed", /** * 共享内容原始尺寸 * 关联内容:高级功能-白板 */ ORI_VIDEO_SIZE = "origin-video-size", /** * 通话字幕、转写状态变更事件 * 关联内容:高级功能-通话字幕 */ TRANSCRIPTION_STATUS = "transcription-status", /** * ==================分组:其他================== */ /** * 接收自定义消息事件 * ​通过媒体通道接收到的自定义消息内容,可以是指定参会者消息或者是广播消息; * 使用场景:会议中发送自定义消息内容 * 使用限制:单条消息最大可传输1MB * 注意事项:消息内容必须是Json数据格式,支持序列化 */ CUSTOM_MESSAGE_RECV = "custom-message-recv", /** * 错误事件 */ ERROR = "error", /** * 会议质量数据,包含接收/发送方的分辨率、带宽、码率、帧率、丢包等调试数据,如果开启调试模式,每 4s 会推送一条数据 * 调用​​switchDebug​​方法开启调试模式后,通过此事件可获取会议质量数据,包含接收/发送方的分辨率、带宽、码率、帧率、丢包等调试数据。此数据每隔4秒推送一次; * 使用场景:需要获取到参会者音视频数据以支持进行数据分析或显示,可监听此事件 * 关联内容:​​数据统计​​ * 相关方法:开启调试模式:​​switchDebug​​ */ MEETING_STATS = "meeting-stats", /** * 播放音视频失败事件 * 浏览器安全策略,部分移动端浏览器需要一定的交互行为才可以触发音频/视频播放,否则会导致音视频播放失败,此时需要监听此消息,获取播放的类型,重新播放; * 相关方法:重新播放音频方法:playAudio;重新播放视频方法:playVideo * 相关内容:​​Chrome自动播放政策​​、​​IOS自动播放策略​​、​​火狐自动播放策略​​ */ PLAY_FAILED = "play-failed", /** * 登录状态变更事件 */ LOGIN_STATE = "login-state", /** * Socket关闭事件,不需要对外 */ SOCKET_CLOSE = "socket-close", /** * Socket错误事件,不需要对外 */ SOCKET_ERROR = "socket-error", /** * Socket消息,不需要对外 */ SOCKET_MESSAGE = "socket-message", /** * Socket打开事件,不需要对外 */ SOCKET_OPEN = "socket-open", /** * Socket重连事件,不需要对外 */ SOCKET_RECONNECT = "socket-reconnect", /** * Socket超时事件,不需要对外 */ SOCKET_TIMEOUT = "socket-timeout" } /** * 自定义Track事件Key枚举 */ export declare enum XYTrackEventKey { /** * 监听设备列表数据 */ DEVICE = "device", /** * 监听设备授权权限变动状态 */ PERMISSION = "permission", /** * 监听可以开始推送共享内容事件,当遇到权限等原因被拒绝后,则收不到此信息 */ START_SHARE_CONTENT = "start-share-content", /** * 监听结束共享内容事件,例如通过会控结束共享,则需要在此事件中结束本地共享内容 */ STOP_SHARE_CONTENT = "stop-share-content", /** * Track错误事件 * 当采集麦克风或者摄像头流失败时,则通过此事件返回详细的错误内容,可以在业务上给出正确的提示内容; * 使用场景:采集音视频流错误时,给出相应的提示内容 * 调用方式:执行videoAudioTrack.capture()方式时上报 * 相关内容:N/A */ TRACK_ERROR = "track-error", /** * 音频PCM数据事件 */ AUDIO_PCM_DATA = "audio-pcm-data", /** * 音频PCM错误事件 */ AUDIO_PCM_ERROR = "audio-pcm-error" } /** * 设备事件Key枚举 */ export declare enum XYDeviceEventKey { DEVICE = "device", PERMISSION = "permission" } /** * Socket事件 */ export declare enum XYSocketEventKey { /** * Socket连接关闭 */ CLOSE = "close", /** * Socket连接错误 */ ERROR = "error", /** * Socket接收到消息 */ MESSAGE = "message", /** * Socket连接成功 */ OPEN = "open", /** * Socket重连 */ RECONNECT = "reconnect", /** * Socket连接超时 */ TIMEOUT = "timeout", /** * Token失效 */ TOKEN_INVALID = "TOKEN_INVALID" } /** * IM事件 */ export declare enum XYIMEventKey { /** * IM消息 */ IM_MSG = "xy-im-msg", /** * IM输入框聚焦 */ XY_INPUT_FOCUS = "xy-input_focus" } /** * Action事件 */ export declare enum XYActionKey { /** * Token信息 */ TOKEN = "token" }