协同办公场景下的集成实践
更新时间: 2025/09/11 15:02:54
本文以协同办公场景为例,介绍网易会议的两种集成方式(PaaS 会议组件 集成、源码项目集成)及各自适用场景。本文内容不涉及 网易视频会议解决方案 的集成方式,如有需求,请参考 开通方案,开通网易视频会议解决方案。
业务场景
在数字化转型的推动下,协同办公场景中的会议已从线下会议和差旅模式转向线上线下融合的智能化形态。通过 AI 技术、多端协作工具及流程优化,让会议效率与决策质量显著提升。
会议模块作为协同办公场景中不可或缺的一环。快速在现有的协同办公场景中搭载一个强大的会议模块,能够帮助企业高效完成沟通平台的统一化。

方案架构
网易会议提供全套开放、简单、安全的视频会议服务,帮助企业实现卓越的音视频性能、丰富的会议协作能力、坚实的会议安全保障,打造企业专属的会议能力。企业可以使用网易会议组件 远程音视频会议、在线协作、会管会控、会议录制、指定邀请、布局管理 等会议功能,提升办公协作效率,满足大、中、小会议全场景需求。

集成方案
以协同办公需求场景为例,如何在现有应用中快速增加会议模块是部分客户的常见需求。在此类协同办公需求场景下,主要采用 网易会议组件接入 和 源码项目集成 两种集成方案:
集成方案 | 方案说明 | 适合需求 |
---|---|---|
网易会议组件 | 以封装好的组件包形式交付。您可以通过调用提供的接口,轻松实现完整的会议流程。
|
|
源码项目集成 | 提供 网易会议的完整 UI 开源代码,您可以根据具体需求灵活定制会议过程中的用户界面。
|
|
接入方式
以协同办公需求场景为例,应用接入方式主要有两种:
接入方式 | 接入说明 | 主要特点 | 应用示例 |
---|---|---|---|
独立模块 | 作为独立模块嵌入到协同办公应用中。集成后,遵循标准会议软件用法。 | 多端可单独集成。 会议高级功能如白板功能,会议直播等都可以按需添加。 |
![]() |
集成模块 | 作为单聊、群聊下的子模块,在日常聊天过程中直接发起在线会议。 | 对标准会议功能有删减需求(详情可参考下文 实现多人音视频通话)。 存在 会议中跳转其他消息页面 需求。 |
![]() |
接入流程
本文以 安卓、iOS、网页 为例,介绍如何在现有办公应用中集成会议能力,供您在集成开发前参考。
若有关其他客户端的接入需求,请参考各端对应的集成开发文档(安卓 | iOS | macOS/Windows | Web/H5 | Electron | 小程序)。
graph LR
A("1.创建应用并<br>获取 App Key") --> B("2.开通 NERoom<br> 房间组件") --> C("3.跑通 SampleCode<br>或源码项目") --> D("4.实现会议<br>基础功能") --> E("5.实现协同<br>办公场景功能")
主要步骤 | 步骤说明 |
---|---|
创建应用并获取 App Key | 在 网易云信控制台 中创建应用,查看该应用的应用密钥(AppKey),后续集成 SDK 时,在本地工程中填入该 AppKey。 |
开通 NERoom 房间组件 | 在 网易云信控制台 中为已创建的应用开通 NERoom 房间组件 服务。 |
跑通 SampleCode.git 或者 源码项目.git | 初步了解 会议流程,直观体验 会议效果。meetingkit-restful.html HTML 文件,填入您在网易云信控制台获取的 appkey 和 appsecret 信息及测试账号信息,即可创建会议账号。项目运行后,使用创建的账号完成 登录鉴权(适用于 ID 和 Token 鉴权方式)。 |
实现会议基础功能 | 基于网易会议组件,快速实现会议场景的基本功能。 |
实现协同办公场景会议功能 | 参考后续内容,实现协同办公场景下的会议集成流程,包括 选择组件版本、完成 通用集成步骤、了解特定场景下的 最佳实践。 |
一:选择组件版本
在协同办公场景中,除了常规的即时通讯 IM 的沟通需求外,还需要在线视频会议的使用场景。通常要求能够在一个应用内同时使用即时通讯 IM 和会议模块,不做额外的应用跳转动作。常见的有安卓、iOS、网页端。
底层依赖
-
网易会议组件是基于 房间组件 NERoom、即时通讯 IM、音视频通话 2.0 等底层 SDK 封装实现。
针对不同版本网易会议组件兼容的底层 SDK,请参考各端对应的更新日志(安卓 | iOS | macOS/Windows | Web/H5 | Electron | 小程序)文档。
-
网易云信 IM UIKit 也是基于即时通讯 IM 底层 SDK 封装的。
版本推荐
因此,共同使用 IM UIKit 和网易会议组件时,需要考虑两者的兼容性,使用相互兼容的版本。
平台 | 使用的 IM UIKit 版本 | 推荐 IM UIKit 版本 | 推荐网易会议组件版本 | 特殊说明 |
---|---|---|---|---|
安卓 | 10.x.x | 10.6.1 | 4.8.2 及以上 | 必须使用 10.4.0 及以上版本 IM UIKit |
低于 10.0.0 | 9.7.1 | 4.8.0 及以下 | - | |
iOS | 10.x.x | 10.6.0 | 4.8.2 及以上 | 必须使用 10.4.1 及以上版本 IM UIKit |
低于 10.0.0 | 9.7.3 | 4.8.0 及以下 | - | |
网页 | 10.x.x | 10.7.0 | 4.8.2 及以上 | 必须使用 10.6.0 及以上版本 IM UIKit |
低于 10.0.0 | 9.8.7 | 4.8.0 及以下 | - |
二:通用集成步骤
第一步:创建会议账号
在实现会议功能前需要完成登录,因此需要有对应的账号。网易会议提供了 创建会议账号 服务端接口,业务服务端可以通过接口,提前或者实时创建会议账号。
会议账号创建成功并入库保存后,业务客户端每次请求业务账号信息时,业务服务端将对应的会议账号信息一并返回给客户端。大致流程如下:
sequenceDiagram
业务客户端 ->> 业务服务端:请求业务账号信息
业务服务端 ->> 业务服务端: 检查是否已创建会议账号?
业务服务端 -->> 业务客户端: (会议账号存在)返回全量账号信息
业务服务端 ->> 网易会议服务端: (会议账号不存在)创建会议账号<br>/scene/meeting/api/v2/add-user
网易会议服务端 -->> 业务服务端: 返回会议账号信息
业务服务端 ->> 业务服务端: 入库保存账号信息
业务服务端 -->> 业务客户端: 返回全量账号信息
- 完整的实现在线会议的主要流程,请参考对应平台的接口调用时序(安卓 | iOS | Web)。
- 在协同办公的场景下,经常涉及到与 IM 账号的复用 的案例。具体请参考会议账号复用文档(安卓 | iOS | Web)。
第二步:实现会议功能
场景一:集成会议组件
会议组件适合快速实现标准会议功能,但不需要深度 UI 定制的场景(网易云信为用户开放了 菜单栏 项目的自定义能力,如添加/隐藏特定功能按钮)。您可以通过网易会议组件提供的接口完成一系列会前功能,而会中功能操作主要依赖于界面的单击交互。更多详情,请参考 网易会议组件。
各端集成流程如下:
客户端 SDK 引入 | 后续流程 | 扩展功能 |
---|---|---|
安卓端集成 |
|
|
iOS 端集成 | ||
网页端集成 |
客户端和服务端接口在功能和实现细节上存在差异,如需了解服务端接口的具体功能和使用示例,请参考接口 /meeting/api/{appId}/v1/create/{type}
。
场景二:集成源码项目
若您有更深度定制需求(如修改主题色系、界面布局等),推荐集成开源的网易会议源码项目,开源项目地址:NetEase_Meeting.git。
源码涉及到的端类型如下表:
接入方式 | 安卓 | iOS | 网页 | H5 | Flutter | Window/macOS | uni-app | Electron | 小程序 |
---|---|---|---|---|---|---|---|---|---|
网易会议组件 | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | 参考 H5 |
会议源码项目 | 参考 Flutter 项目 | 参考 Flutter 项目 | ✅ | ✅ | ✅ | 参考 Electron 项目 | ❌ | ✅ | ❌ |
- 桌面端基于 Electron 开发,支持跨平台定制。
- 移动端采用 Flutter 构建,具备灵活的 UI 调整能力。
您可以通过对开源项目实现二次开发,根据实际业务需求灵活调整界面元素。如有任何集成问题,请 提交工单 联系网易云信技术支持工程师。
三:场景最佳实践
实现多人音视频通话
在现代办公环境中,团队成员之间的沟通和协作需求愈发频繁。尤其是在需要集体讨论、决策及信息分享的场合,多人会议成为了组织和企业日常运作的重要组成部分。因此,如何高效、便捷地接入会议并实现多人音视频通话,成为了这个业务场景中最核心的需求。
场景建议
-
快速会议场景:保留核心音视频功能,适合紧急会议、客服通话等时效性场景。
-
教育培训场景:通过隐藏非必要控件,降低学生端操作复杂度。
-
嵌入式集成方案:作为子模块嵌入时,保证 UI 风格一致性。
核心目标
在多人音视频通话场景,实现以下核心目标:
- 保留基础音视频能力(麦克风/摄像头)
- 移除非必要交互元素
- 提升会议界面纯净度
实现方法(以安卓为例)
会议界面极简模式配置示例,相关接口类请参考 NEMeetingOptions。
JavaNEMeetingOptions options = new NEJoinMeetingOptions();
// ================= 工具栏菜单定制 =================
NEMenuItemListBuilder toolbarMenuBuilder = NEMenuItemListBuilder.toolbarMenuBuilder();
// 移除默认功能项(按功能模块分组说明)
toolbarMenuBuilder.removeMenuById(NEMenuIDs.PARTICIPANTS_MENU_ID); // 参与者列表
toolbarMenuBuilder.removeMenuById(NEMenuIDs.MANAGE_PARTICIPANTS_MENU_ID);// 成员管理
toolbarMenuBuilder.removeMenuById(NEMenuIDs.SCREEN_SHARE_MENU_ID); // 屏幕共享
// 应用精简后的工具栏配置(仅保留音视频控制)
options.fullToolbarMenuItems = toolbarMenuBuilder.build();
// ================= 功能模块显隐控制 =================
// 隐藏更多菜单扩展功能
options.fullMoreMenuItems = new ArrayList<NEMeetingMenuItem>();
// 关闭 Web 应用集成能力
options.noWebApps = true; // 如签到、投票等扩展应用
// 隐藏社交化交互组件
options.noChat = true; // 聊天对话框
options.showMeetingInfo = false; // 会议详情面板
options.showHandsUp = false; // 举手功能
options.showEmojiResponse = false; // 表情互动
配置参数详解
-
工具栏定制:通过
removeMenuById
链式调用移除不需要的功能模块。例如:- 成员管理类:参与者列表/权限管理
- 协作功能类:屏幕共享
- 附加功能类:录制、直播等
-
界面精简策略:通过
fullToolbarMenuItems
隐藏界面右下角的 更多 扩展菜单,实现界面精简策略。Java
// 隐藏更多菜单 options.fullMoreMenuItems = new ArrayList<>();
-
社交功能开关:以下示例表示禁用文字聊天、文件传输等 IM 功能。配合关闭表情/举手等交互,打造专注音视频环境。
Java
// 隐藏社交化交互组件 options.noWebApps = true; // 如签到、投票等扩展应用 options.noChat = true; // 聊天对话框 options.showMeetingInfo = false; // 会议详情面板 options.showHandsUp = false; // 举手功能 options.showEmojiResponse = false; // 表情互动
实现会议邀请跳转
会议邀请 是常见的会议操作之一,邀请功能不仅解决了会议召集的基础需求,更成为办公提效和数据统计的关键枢纽。跳转链接的逻辑实现,则确保了从邀请发出到实际参会的体验闭环,实现现代协作工具提升会议体验的核心策略。
该功能面向需要通过 集成网易会议源码项目,并需开发者提前准备用于会议信息展示的 业务域名。
邀请实现步骤
-
将会议 App 和 Web 端发布到服务器,获得在线访问链接
https://xxx.xxx.com
。 -
在 Web 邀请页源码中,跳转到网易会议的 url 替换成步骤 1 的
https://xxx.xxx.com
。 -
将 Web 邀请页发布到服务器时,发布到
xxx.xxx.com/invite
路径下。 -
将应用密钥(appkey)和
https://xxx.xxx.com
,提供给服务您的网易云信技术支持工程师,协助您将邀请页域名替换成https://xxx.xxx.com
。邀请页面的功能实现推荐如下流程:
graph TD
A1[开始]-->A
subgraph ProcessLinks ["链接处理"]
A[用户单击邀请链接] --> B[解析会议 ID 和参数]
B --> C[查询会议状态]
end
subgraph StatusCheck ["状态判断"]
C --> | 会议已回收 | E[显示'会议已失效'界面]
C --> | 会议有效 | D[展示会议详情]
end
subgraph Result ["最终结果"]
J --> END[等待用户操作]
M --> P[进入 App 会议界面]
end
subgraph ClientCheck ["客户端检测"]
D --> F[本地是否安装 App?]
F --> | 已安装 | K[弹出'跳转 App 确认弹窗']
K --> L[用户确认跳转?]
L --> | 是 | M[携带参数启动 App]
L --> | 否 | J[保持当前页面]
I --> O[下载完成并重新单击邀请链接]
F --> | 未安装 | G[显示基础会议信息]
G --> H[用户单击'立即加入'?]
H --> | 是 | I[跳转应用商店下载页]
H --> | 否 | J[保持当前页面]
end
%% 为节点定义样式
classDef process fill:#cce5ff,stroke:#6699ff,stroke-width:1px;
classDef decision fill:#ffffff,stroke:#ff4da6,stroke-width:1px;
classDef endpoint fill:#e5ffe5,stroke:#009900,stroke-width:1px;
class A1,A,B,D,E,G,I,J,K,M,N,O,P,END process;
class C,F,H,L decision;
class P,END2,END3 endpoint;
%% 为子图定义样式
classDef linkGroup fill:#f2f2f2,stroke:#f2f2f2,stroke-width:2px
classDef statusGroup fill:#f3e5f5,stroke:#f3e5f5,stroke-width:2px
classDef clientGroup fill:#ffe5ff,stroke:#ffe5ff,stroke-width:2px
classDef resultGroup fill:#ffffcc,stroke:#ffffcc,stroke-width:2px
%% 应用样式到子图
class ProcessLinks,StatusCheck,ClientCheck,Result linkGroup
实现会议直播
会议直播功能适用于以下场景:
-
大型会议活动:例如学术会议、公共演讲等需要广泛传播和参与的场合。
-
少量主播互动:适用于主播之间进行有限交流的场景,此类场合不需要观众间频繁的音视频沟通互动。
准备工作
实现直播功能前,请确保您已经在 网易云信控制台 启用 房间组件 NERoom 的 在线直播 功能、启用 音视频通话 RTC 的 旁路推流 功能。
实现方法
-
准备业务域名。
默认情况下,会议直播使用
meeting.163.com
域名。如下图 网易会议 App 中开启直播所示:为避免部分场景下可能导致的权限问题,您可以替换为专有的业务域名:
- 准备一个符合要求的业务域名,例如
xxx.corp.yunxin_live.com
。 - 将业务域名提供给服务您的网易云信技术支持工程师进行替换。
- 替换后,直播观看地址将更新为类似
https://xxx.corp.yunxin_live.com?meetingKey=xxx
格式。此地址也可通过 查询会议信息 接口获取。
- 准备一个符合要求的业务域名,例如
-
部署直播页面。
下载 WebLive.zip 源码项目,配置您的网易云信应用密钥
appKey
:JavaScript
var common = { appKey: 'xxxxx', cancelJoin: function() { console.warn('您单击的关闭'); } }
到达观看部署页时,只需要进行会议账号鉴权即可,可参考源码示例,通过
useruuid
和usertoken
手动登录。或者业务上直接处理,传入指定的账号和密码。JavaScript
function login(){ var obj = { ...common, accountToken: getDom('.account-token').value, accountId: getDom('.account-id').value, }; neWebMeetingLive.actions.login(obj, (e) => { if (e) { console.error(e); } }) }
-
验证会议观看效果。
-
创建会议与配置直播。
-
客户端创建:对于客户端创建的会议,仅在预约会议时,可以配置或开启直播功能,此时系统所使用的是网易云信底层依赖的直播能力。
-
场景一:集成网易会议组件时,通过代码配置直播。
安卓Java
NEMeetingItemLive live = NEMeetingKit.getInstance().getPreMeetingService().createMeetingItemLive(); live.setEnable(true); live.setLiveWebAccessControlLevel(NEMeetingLiveAuthLevel.appToken); meetingItem.setLive(live);
iOSObjective-C
NEMeetingItemLive *live = [[NEMeetingItemLive alloc] init]; [live setEnable:YES]; [live setLiveWebAccessControlLevel:NEMeetingLiveAuthLevelAppToken]; [meetingItem setLive:live];
WebJavaScript
const neMeetingItemLive = { enable:true, state:1 } PreMeetingService.createScheduleMeetingItem().then(({ data: meetingItem }) => { // 修改预约会议信息 meetingItem.subject = 'xx' meetingItem.startTime = xxx meetingItem.endTime = xxx meetingItem.noSip = true meetingItem.live = neMeetingItemLive PreMeetingService.scheduleMeeting(meetingItem) })
-
场景二:集成源码项目时,在预约会议界面可以开启直播功能。
-
-
服务端创建:若是通过 服务端接口创建会议,则可以使用外部 CDN 推拉流地址进行直播,可配置字段为
externalLiveConfig
。
-
-
配置直播能力后,主持人可以在会议菜单栏上单击 直播 按钮,在对应页面上选择开播的用户并开启直播,客户端获取直播观看地址即可拉流观看。
总结
网易会议提供了灵活的接入方式,您可以可根据企业的技术能力、定制需求和业务场景选择合适的集成方案。无论是快速集成、深度定制、还是直接使用网易会议 App,都能有效提升协同办公效率,实现线上会议的无缝衔接。
如有更多集成问题,请 提交工单 联系网易云信技术支持工程师。