亿联会议 Electron SDK
准备工作
-
环境搭建 目前win平台下SDK只支持 electron 32位版本
win平台安装依赖前,需配置下.npmrc
1、项目根目录添加 .npmrc 文件
//.npmrc arch=ia32
SDK概述
提供的SDK包内,将包含以下文件:

ylsdk_windows_c.zip / ylsdk_macos_c.zip: 亿联会议 C++ SDK ylsdk electron sdk: 亿联会议 electron SDK ylsdk electron demo: electron 集成 DEMO
用途说明:
ylsdk_windows_c.zip / ylsdk_macos_c.zip
C++ SDK,electron 集成不需要引入

demo:YLSDK 的 API 测验demo(sdk_api_demo)、YLSDK 的集成演示demo(vcd_sdk_demo) ylsdk:YLSDK 主体,亿联会议功能基础库及资源,发布 App 时需携带 ylsdk_h:App 集成 YLSDK 时编译所需头文件,可在集成时查看接口已参数说明 ylsdk_lib:App 集成 YLSDK 时编译所需 .lib 及运行所需 .dll
ylsdk electron sdk.zip
electron 需要引入 ylsdk electron sdk 中的 win/mac 文件
win

mac

ylsdk:YLSDK 主体,可从 ylsdk_windows_c.zip/ylsdk_macos_c.zip压缩包中获取
yealink.node:提供给 electron 引用
yealink_sdk_lib.dll/libyealink_sdk_lib.dylib:App 运行所需.dll, 可从 ylsdk_windows_c.zip / ylsdk_macos_c.zip 压缩包目录ylsdk_lib 中获取
ylsdk electron demo.zip
运行DEMO前请查看 readme.md

lib: 静态资源文件夹,存放SDK src: 集成代码
快速集成
Electron 配置
创建窗口时需要增加以下配置
//main.js
...
new BrowserWindow({
...,
webPreferences: {
...,
nodeIntegration: true, //启用 Node integration
contextIsolation: false, //取消上下文隔离
},
});
electron_sdk 需要作为静态资源引用,存放在静态资源文件夹; 使用 electron-builder 打包时需要注意配置 extraResources
// package.json
...
"build": {
"productName": "ylsdk demo",
"appId": "ylsdk_demo",
"directories": {
"output": "build"
},
"extraResources": [
"lib/**/*"
]
},
引入 SDK
集成时请注意SDK文件在开发环境/打包后路径问题
// renderer.js
const yealink = require(path.join(process.cwd(), './lib/win/yealink.node'));
集成流程
-
初始化 SDK
// 需要指定到 ylsdk 的 bin 目录下 yealink.LoadSDK(path.join(process.cwd(), './lib/win/ylsdk/bin')); -
鉴权
// 鉴权 yealink.AuthService_AuthSDK({ strAppID: 'strAppID', strAppSecret: 'strAppSecret', }); // strAppID, strAppSecret 可联系亿联销售人员获取 -
登录
/** * 鉴权方式,默认通过云视讯-密码登录方式鉴权 * 0 云视讯-密码登录 * 1 邮箱登录 */ let eAuthType = 0; // 登录 const YLSDKERR = yealink.AuthService_Login({ strAccount: 'strAccount', // 账号 strPassword: 'strPassword', // 密码 eAuthType, }); -
加入会议
/** * 会议媒体类型,是否需要使用视频 * 0 纯音频通话 * 1 音视频通话 */ let eMediaType = 1; /** 会议号 */ let strMeetingId = "xxx"; /** 会议密码 */ let strPassword = ""; // 加入会议 yealink.MeetingService_JoinMeeting(strMeetingId, strPassword, eMediaType); -
未登录入会
/** 用户名 */ let strUserName = ''; /** 会议id */ let strMeetingId = ''; /** 会议密码 */ let strPassword = ''; /** 是否开启麦克风 */ let bAudioSendOn = true; /** 是否开启摄像头 */ let bVideoSendOn = true; // 未登录入会 yealink.MeetingService_JoinMeetingWithoutLogin({ strUserName, strMeetingId, strPassword, bAudioSendOn, bVideoSendOn, }); -
卸载SDK
集成时请注意,退出进程前一定要调用
window.onunload = () => { /** * 清理sdk资源 * 退出进程前一定要调用 */ yealink.CleanUPSDK(); }; -
接口返回值枚举说明
/** * 错误码 */ enum YLSDKERR { YLSDKERR_SUCCESS = 0,/** < 返回成功 */ YLSDKERR_NOT_SUPPORT = 1,/** < 还不支持的功能 */ YLSDKERR_LOADSDK_FAIL = 2,/** < 加载sdk失败 */ YLSDKERR_AUTH_FAIL = 3,/** < 鉴权失败 */ YLSDKERR_PARAM_ERR = 4,/** < 参数错误 */ YLSDKERR_NOT_LOAD = 5,/** < 该功能邀请load之后才能调用,但是在load之前调用 了 */ YLSDKERR_NOT_INIT = 6,/** < 该功能要求init之后才能调用,但是在init之前调用 了 */ YLSDKERR_ALREADY_INITED = 7,/** < 该功能要求init之前才能调用,但是在init 之后调用了 */ YLSDKERR_NOT_LOGIN = 8,/** < 该功能要求login之后才能调用,但是在login之前 调用了 */ YLSDKERR_ALREADY_LOGIN = 9,/** < 该功能要求login之前才能调用,但是在 login之后调用了 */ YLSDKERR_NOT_IN_MEETING = 10,/** < 会议中的功能不能在无会议时使用 */ YLSDKERR_ALREADY_IN_MEETING = 11,/** < 已经有一路会议时不能使用 */ YLSDKERR_NOT_HOST = 12,/** < 会议中的特定功能,无主持人权限不能使用 */ YLSDKERR_NOT_AUTHORITY = 13,/** < 会议中的特定功能,该账号无权限使用 */ YLSDKERR_ACTION_INVALID = 14,/** < 会议中的特定场景下,该操作是非法的 */ YLSDKERR_RECORD_STATE_INVALID = 15,/** < 会议中的录制功能,在当前状态下无 法执行对应操作 */ YLSDKERR_VIRTUALBG_NOT_SUPPORT = 16,/** < 计算机配置不符合背景虚化最低要 求 */ YLSDKERR_ALREADY_AUTHED = 17,/** < 该功能要求Auth之前或失败才能调用,但是 在Auth成功之后调用了 */ }; -
主要回调事件说明
/** * sdk进程启动完成的通知 */ yealink.SetCallBackFor_AuthService_onSDKReadyEvent(() => { console.log('🚀 SetCallBackFor_AuthService_onSDKReadyEvent'); }); /** * 鉴权完成的通知 */ yealink.SetCallBackFor_AuthService_onAuthResultEvent(() => { console.log('🚀 SetCallBackFor_AuthService_onAuthResultEvent'); }); /** * 登录结果的通知 ** eAccountState 账号状态 * 0 未登录状态 * 1 登录中状态 * 2 登录成功状态 ** dataAccountInfo 账号信息 */ yealink.SetCallBackFor_AuthService_onLoginResultEvent((eAccountState, dataAccountInfo) => { console.log('🚀 SetCallBackFor_AuthService_onLoginResultEvent'); console.log('eAccountState: ', eAccountState, '\n dataAccountInfo: ', dataAccountInfo); }); /** * 登录失败或登出结果的通知 ** eAccountState 账号状态 ** dataAccountInfo 账号信息 */ yealink.SetCallBackFor_AuthService_onLogoutEvent((eAccountState, dataAccountInfo) => { console.log('🚀 SetCallBackFor_AuthService_onLogoutEvent'); console.log('eAccountState: ', eAccountState, '\n dataAccountInfo: ', dataAccountInfo); }); /** * 会议状态变化时的通知 * eMeetingState * 0 空闲状态 * 1 鉴权中 * 2 正在加入会议 * 3 已经在会议中 */ yealink.SetCallBackFor_MeetingService_onMeetingStatusChangedEvent((eMee tingState) => { console.log('🚀 eMeetingState: ', eMeetingState); }); /** * 会议结束的通知 * eMeetingFinishReason: 会议结束的原因码 * nCode: 当原因码为其他错误时,根据nCode查询更详细的会议结束原因 */ yealink.SetCallBackFor_MeetingService_onMeetingFinishReasonEvent((eMeet ingFinishReason, nCode) => { console.log('🚀 eMeetingFinishReason: ', eMeetingFinishReason, '\n nCode: ', nCode); });
API说明
具体接口说明、通知回调等可通过查看 ylsdk_windows_c.zip / ylsdk_macos_c.zip 下 ylsdk_h 文件夹中头文件了解

Electron SDK 更新
在 ylsdk_windows_c.zip / ylsdk_macos_c.zip 版本更新时,需要将 ylsdk_windows_c.zip / ylsdk_macos_c.zip 中的 ylsdk 文件夹复制到集成工 程中对应的 SDK win/mac 文件进行覆盖