# electron-meeting-sdk

## ✨ 环境要求

1. Electron 5+
2. Node >= 14

## 📦 安装

```bash
npm install @cloudroom/electron-meeting-sdk -S
```

## 🚀 准备工作

1. 您需要先准备好会议系统的账号和密码以便测试，如果您没有账号，请[联系我们](https://www.cloudroom.com/)。
2. 您需要先准备好会议号以便测试，会议号可以在[管理后台](https://www.cloudroom.com/mgr/manager/login)创建，也可以通过[webapi](https://docs.cloudroom.com/conference/document/conf_managerment/conference_create?platform=webapi)创建。

## 🎉 示例
```js
// 导入SDK
import meetingSDK from "@cloudroom/electron-meeting-sdk";
// SDK实例
const meetingSDK = new MeetingSDK();
// 注册SDK回调：登录结果
meetingSDK.on("onLoginRslt", (sdkErr) => {
    if (sdkErr === 0) { 
      // 登录成功
    }
});
// 注册SDK回调：掉线通知
// 注册SDK回调：入会状态通知
// 注册SDK回调...
// SDK接口：初始化SDK
const res = meetingSDK.init({
    server: 'xxx.xxx.xxx', // 会议服务地址
});
if(res === 0){
  // 初始化成功，后续可进行登录等操作
}
// SDK接口：登录
meetingSDK.login(account, password);
// SDK接口：加入会议（需要先登录）
meetingSDK.joinMeeting(meetID, meetPswd);
// SDK接口：离开会议
meetingSDK.leaveMeeting();
// SDK接口：登出
meetingSDK.logout();
// 销毁订阅
meetingSDK.off("onLoginRslt", fn);
...
// SDK接口：反初始化SDK
meetingSDK.uninit();
```
## 所有接口
### 回调
```js
// 登录结果  sdkErr —— SDK错误码
meetingSDK.on("onLoginRslt", (sdkErr: number) => {});
// 掉线通知  reason —— 掉线原因代码
meetingSDK.on("notifyLineOff", (reason: number) => {});
// 呼入通知  callID —— 呼叫ID | caller —— 主叫人员ID | meetInfo —— 会议详细信息
meetingSDK.on("notifyCallIn", (callID: string, caller: string, meetInfo: string) => {});
// 取消呼叫  callID —— 呼叫ID
meetingSDK.on("notifyCallInCanceled", (callID: string) => {});
// 参会状态通知 state —— 入会状态代码（0未在会议中；1进入中；2会议中）| sdkErr —— SDK错误码
meetingSDK.on("onJoinMeetingState", (state: number, sdkErr: number) => {});
// 请求自定义组织结构
meetingSDK.on("notifyQueryOrgInfo", () => {});
// 通知邀请的人员信息[{"id":xxx}]  users —— 人员信息JSON字符串
meetingSDK.on("notifyInviteUsers", (users: string) => {});
```
### 主调
```js
// 初始化 congfig：配置对象 {server: 'xxx.xxx.xxx'}
meetingSDK.init(config)
// 反初始化
meetingSDK.uninit()
// 参数配置 jsonStr：配置参数JSON串 "{"autoOpenMic":0, "autoOpenCam":0}"
meetingSDK.setParams(jsonStr)
// 登录   account：账号   password：密码
meetingSDK.login(account, password)
// 登出
meetingSDK.logout()
// 接受呼叫 callID：呼叫ID
meetingSDK.acceptCall(callID)
// 拒接呼叫 callID：呼叫ID
meetingSDK.declineCall(callID)
// 入会   meetID：会议号   meetPswd：会议密码
meetingSDK.joinMeeting(meetID, meetPswd)
// 免登录入会  meetID：会议号, meetPswd：会议密码, userID：用户唯一ID, userName：用户昵称, asHost：是否作为主持人身份
meetingSDK.joinMeetingWithoutLogin( meetID, meetPswd, userID, userName, asHost)
// 立即离开会议， 要结束会议请调用WEB API
meetingSDK.leaveMeeting()
// 启用自定义组织结构 enable：是否启用自定义组织结构
meetingSDK.enableCustomOrgInfo(enable)
// 在notifyQueryOrgInfo后，将自定义组织结构设置给sdk，
// 格式： {"contactData":[{"departId":1,"userId":"100","userName":"test"}],"contactDepartsData":[{"departName":"测试部门","id":1,"pId":0}]}
meetingSDK.setCustomOrgInfo(orgInfo)
// 获取会议SDK版本
meetingSDK.getMeetingSDKVer()
```

## 📖 附录

- [官网](https://www.cloudroom.com) 一 您可以在此联系官方技术支持
- [Demo示例](https://docs.cloudroom.com/CRMeetingSDK/document/download/download?platform=Electron) 一 便于快速集成项目
- [开发文档](https://docs.cloudroom.com/CRMeetingSDK/document/intro/ProductSummary?platform=Electron)

## 📄 License

MIT许可