邀请入会

更新时间: 2026/01/06 15:49:38

网易会议组件(NEMeetingKit)为开发者提供了功能丰富、灵活易用的会议邀请系统。通过这套完整的邀请机制,您可以为用户打造流畅自然的协作体验,让参会者随时随地加入会议,提升沟通效率。本文详细介绍如何在您的应用中实现各类邀请场景。

注意事项

  • NEJoinMeetingParams 类中的 meetingNum 字段用于指定要加入的会议号。
  • NEJoinMeetingOptions 类提供了丰富的入会配置选项,您可以根据需要开启或关闭会中的各类 UI 和功能开关。
  • 实现自定义邀请功能前,请确保您的应用已正确集成网易会议组件。
  • 使用组件提供的邀请接口前,确保已完成网易会议组件的 初始化登录鉴权
  • 自定义落地页需要您自行部署和维护。

自定义邀请按钮

为了满足不同应用的 UI 需求,网易会议组件允许开发者自定义邀请入口,创造符合品牌调性的会议体验。

隐藏内置邀请按钮

当您需要实现自定义的邀请流程时,可以通过 NEMeetingOptions.noInvite 配置隐藏网易会议组件内置提供的邀请按钮:

JavaScriptconst neMeetingKit = NEMeetingKit.getInstance()
const meetingService = neMeetingKit.getMeetingService()

const params = {
    displayName: '入会昵称',
    // 会议号
    meetingNum,

}
const options = {
    // 添加需要的参数
    noInvite: true,// 隐藏邀请按钮
}
meetingService.joinMeeting(params, options)

添加自定义邀请菜单

您可以添加符合自身应用风格的邀请菜单,实现个性化的邀请体验。有关菜单定制的更多详情,请参考 自定义菜单。以下代码演示如何在 更多 中添加一个名为 通讯录邀请 的菜单。

JavaScript// 通过 startMeeting 或 joinMeeting options 传入
const neMeetingKit = NEMeetingKit.getInstance()
const meetingService = neMeetingKit.getMeetingService()

const param = {
    displayName: '入会昵称',
    // 会议号
    meetingNum: '123456',
}

const options = {
// 更多菜单
fullMoreMenuItems: [
    {
    // 自定义菜单需要 ID 大于 100
    itemId: 102,
    singleStateItem: {
        // 按钮图标需要一个url地址
        icon: '',
        // 按钮文案
        text: '通讯录邀请',
    },
    },
]
}

meetingService.joinMeeting(param, options)

监听自定义菜单单击

通过 setOnInjectedMenuItemClickListener 监听器捕获用户单击 通讯录邀请 的按钮事件,实现自定义的通讯录邀请逻辑:

JavaScriptconst neMeetingKit = NEMeetingKit.getInstance()
const meetingService = neMeetingKit.getMeetingService()

const meetingOnInjectedMenuItemClickListener = {
    onInjectedMenuItemClick(clickInfo, meetingInfo) {
        // 菜单单击回调可以根据clickInfo.itemId判断点击的是哪个按钮
    },
}

meetingService.setOnInjectedMenuItemClickListener(
    meetingOnInjectedMenuItemClickListener
)

邀请方式

在监听到邀请按钮单击后,需要根据自身需求实现自定义的邀请方式。网易会议组件不会限制邀请方式,您可根据业务需求灵活选择。如可通过发送自定义 IM 消息邀请,或调用组件内部邀请服务的接口进行邀请。

场景一:发送自定义会议邀请信息

发送邀请自定义消息

如果您的应用已经集成了即时通讯功能(以网易云信 IM 为例),可以利用现有渠道发送自定义的会议邀请消息:

JavaScript// 获取当前会议信息并拼接邀请消息
function getMeetingInviteInfo(meetingInfo: NEMeetingInfo): string {
    // meetingNum 和 password 是 NEMeetingInfo 类的字段,可直接访问
    const meetingNum = meetingInfo.meetingNum;  // 直接访问会议号字段
    const password = meetingInfo.password;      // 直接访问密码字段

    // 可以填入其他会议信息l
    // ...
    return JSON.stringify({
        type: 1,
        meetingNum,
        password
    })
}

// 发送自定义消息
function sendMeetingInviteMessage(NEMeetingInfo meetingInfo) {
    try {
        const rawAttachment = getMeetingInviteInfo(meetingInfo);
        const v2CustomMessage = nim.V2NIMMessageCreator.createCustomMessage(text, rawAttachment);
        v2MessageService.sendMessage(v2CustomMessage)
    } catch (error => {
    })
}

通过网易云信 IM 发送消息时,您可以构建一个包含会议号等信息的 JSON 格式字符串作为附件用于创建一条自定义消息,如 {"type": "1", "meetingNum": "12345678", "password": "123456"}。其中 type 为 1 表明该消息为会议邀请消息,meetingNum 为目标会议号,password 为会议密码(如有)。当接收方收到自定义消息后,按照如上的格式进行解析附件,如果能正确解析出 type 和 meetingNum,则可确定该条消息为会议邀请消息。此时可显示对话框提示用户加入会议,用户确认后,直接使用解析出的会议号和密码加入会议。更多详情,请参考 收发自定义消息

受邀方加入会议

受邀用户只需提供会议号和密码,即可快速加入会议(joinMeeting):

JavaScript// 加入会议
function joinMeeting(meetingNum: string, password: string) {

    const neMeetingKit = NEMeetingKit.getInstance()
    const meetingService = neMeetingKit.getMeetingService()

    const params = {
        displayName: '入会昵称',
        // 会议号
        meetingNum,
        password,
    }
    const options = {
        // 添加需要的参数
        noAudio: true,// 入会时不开启音频
        noVideo: true,// 入会时不开启视频
    }
    meetingService.joinMeeting(params, options).then(() => {
        // 加入成功
    }).catch (error => {
        // 加入失败
    })
}

场景二:通过网易会议组件接口邀请

网易会议组件提供了内置的邀请服务(NEMeetingInviteService),您无需额外开发即可实现高质量的邀请体验。包括邀请联系人、以及监听邀请状态、接受/拒绝邀请。如需接入,欢迎 提交工单 联系网易云信技术支持工程师开通邀请功能。

接收方设置邀请监听器

在网易会议组件初始化完成后,接收方需要设置邀请监听器(addMeetingInviteStatusListener)才可监听到邀请状态变更事件。

JavaScriptconst neMeetingKit = NEMeetingKit.getInstance()
const inviteService = neMeetingKit.getMeetingInviteService()
const inviteStatusListener = {
    onMeetingInviteStatusChanged: (status, inviteInfo, meetingId) => {
     // 邀请状态变更事件
    }
}
inviteService.addMeetingInviteStatusListener(inviteStatusListener)

// 不需要时移除监听
inviteService.removeMeetingInviteStatusListener(inviteStatusListener);

邀请方发送邀请

邀请方调用具体接口发送邀请。

  • 邀请单个联系人inviteContact)。

    JavaScript// userUuid 为被邀请用户的唯一标识
    const neMeetingKit = NEMeetingKit.getInstance()
    const inviteService = neMeetingKit.getMeetingInviteService()
    inviteService.inviteContact(userUuid).then(() => {
        // 邀请成功
    }).catch((err) => {
        // 邀请失败
    });
    
  • 批量邀请联系人(当需要邀请多人参加会议时,可使用批量邀请接口 inviteContactList 提高效率)。

    JavaScriptconst neMeetingKit = NEMeetingKit.getInstance()
    const inviteService = neMeetingKit.getMeetingInviteService()
    const userUuidList = ["user1", "user2", "user3"];
    inviteService.inviteContactList(userUuidList)(() => {
        // 邀请成功
    }).catch((err) => {
        // 邀请失败
    });
    

受邀请方接受邀请或拒绝邀请

当用户收到会议邀请推送时,可以直接通过接受邀请的方式加入会议(acceptInvite):

JavaScriptconst neMeetingKit = NEMeetingKit.getInstance()
const inviteService = neMeetingKit.getMeetingInviteService()

const params = {
    displayName: '入会昵称',
    // 会议号
    meetingNum,
    password,
}
const options = {
    // 添加需要的参数
    noAudio: true,// 入会时不开启音频
    noVideo: true,// 入会时不开启视频
}
inviteService.acceptInvite(params, options).then(() => {
    // 加入成功
}).catch (error => {
    // 加入失败
})

用户也可以选择拒绝会议邀请(rejectInvite):

JavaScriptconst neMeetingKit = NEMeetingKit.getInstance()
const inviteService = neMeetingKit.getMeetingInviteService()
inviteService.rejectInvite(
    meetingId  // 邀请中包含的会议ID
).then(() => {
    // 拒绝会议邀请成功
}).catch (error => {
    // 拒绝会议邀请失败
});

场景三:应用外链接邀请

为了打破应用边界,提高邀请的便捷性,可以实现通过链接邀请用户加入会议的功能。

自定义邀请落地页

您可以基于网易云信提供的邀请落地页源码(可以 提交工单 联系网易云信技术支持工程师获取),打造品牌专属的邀请页面:

落地页通常包含以下内容:

  • 会议基本信息(ID、主题、开始时间等):您可通过对应的 RESTFul 接口查询会议信息详情进行展示。
  • 下载应用或打开应用的按钮:提供快捷方式让用户安装应用或直接跳转至已安装的应用。
  • 会议参与者信息(可选):显示当前已加入会议的参会者列表。

如下展示了一个简单的邀请落地页:

image.png

场景四:特殊设备邀请

网易会议组件通过 callOutRoomSystem 接口支持邀请专业会议室设备加入,实现与其他会议室硬件设备无缝对接:

JavaScriptconst neMeetingKit = NEMeetingKit.getInstance()
const inviteService = neMeetingKit.getMeetingInviteService()

inviteService.callOutRoomSystem({
    deviceAddress: "192.168.1.100", // 设备 IP 或地址
    protocol: NERoomSipDeviceInviteProtocolType.IP
});
此文档是否对你有帮助?
有帮助
去反馈
  • 注意事项
  • 自定义邀请按钮
  • 隐藏内置邀请按钮
  • 添加自定义邀请菜单
  • 监听自定义菜单单击
  • 邀请方式
  • 场景一:发送自定义会议邀请信息
  • 发送邀请自定义消息
  • 受邀方加入会议
  • 场景二:通过网易会议组件接口邀请
  • 接收方设置邀请监听器
  • 邀请方发送邀请
  • 受邀请方接受邀请或拒绝邀请
  • 场景三:应用外链接邀请
  • 自定义邀请落地页
  • 场景四:特殊设备邀请