最后更新于:2017-04-25
PC客户端SDK是在PC(Windows)平台上,以二进制库(DLL)的形式提供的云会议软件开 发包。PC客户端SDK需要与客户自己的客户端应用编译、构建、打包成一个安装包,并最终安 装、运行为一个完整的应用程序。
通过PC客户端SDK及所提供的简单的几个接口调用,只需很少的开发工作量,带着完整会议 功能和UI交互界面的云会议客户端就真正成为客户自己的客户端应用的一部分,不存在同时安 装、运行两个应用程序的问题,整合的更加紧密、无缝。
PC客户端SDK一般和云端管理、控制类API一起使用,在客户自己的客户端产品中实现完整 的会前、会中、会后等会议功能。
云会议PC-SDK是在windows操作系统下提供给第三方开发者的一组接口,包括接口文档、接口定义源代码文
件、接口调用库文件等。通过该SDK,第三方开发者能够开发出带有全时云会议接入功能的软件产品。 支持的操作系统包括windows XP、windows7、windows10等。下面介绍云会议PC-SDK的使用方法。
请联系全时客服人员或销售人员,获取PC-SDK开发资料。
SDK接口以windows动态库DLL文件的形式提供,并提供接口定义C++头文件。 特别说明:提供的只是接口文件,不包括其他云会议客户端程序文件。首次调用接口会自动下载云会议客户端程
序到本地电脑中,然后才能完成会议的各项功能。
文件 | 说明 |
---|---|
GnetMeetingPlugin.dll | 动态库文件,运行时用到。接收入会等请求,传递给云会议客户端。 |
GnetMeetingPlugin.lib | 用于静态加载DLL,加入第三方源代码工程中,链接时用到。 |
IGnetMeetingPlugin.h | 包含两个导出函数及接口类的定义,加入第三方源代码工程中,代码编译时用到。 |
GnetMeetingPlugin.ini | 程序的配置信息,无需改动 |
接口头文件IGnetMeetingPlugin.h内容如下,后面会对其中的代码详细介绍:
# if !defined(__IGNETMEETINGPLUGIN_H__)
# define __IGNETMEETINGPLUGIN_H__
# ifdef QSBEEPLUGIN_EXPORTS
# define API_DECLSPEC
# else
# define API_DECLSPEC
# endif
# include "wtypes.h"
# if _MSC_VER > 1000
# pragma once
# endif
__declspec(dllexport)
__declspec(dllimport)
typedef enum JoinConferenceResult
{
MEETING_JOINED = 0, // 入会成功
MEETING_READIED, //组件初始化完成
MEETING_JOINFAILED, // 加入会议失败
MEETING_CLOSED, //离开或者结束会议
MEETING_SHOW_IMMAIN_WND, //显示窗口
MEETING_RESULT_COUNT
}JoinConferenceResult;
class IGnetMeetingPluginSink
{
public:
virtual void NotifyUpdateResult(int Result) = 0; /*不需要更新(0);开始
更新(1);更新成功(2);更新失败(3);超时(4)*/
virtual void NotifyUpdateProcess(int type, int percent, bool install) = 0; /* type 0:下载, 1:更新 percent 进度信息 isInstall true:初次安装,false:升级*/ };
class IJoinConferenceSink
{
public:
virtual void NotifyJoinConferenceResult(JoinConferenceResult Result) = 0;
};
class IGnetMeetingPlugin
{
public: /*
为空,则采用默认路径 */
功能:完成SDK的初始化 logPath:存放插件日志的路径,不能包含文件名,文件名由插件自己定义,如果
```
virtual int initSDK(const char *logPath) = 0;
/*
```
*/
```
功能:是否安装了Tang 返回值:如果为true,已经安装,如果为false,未安装
用户 */ 会人入会)*/
/* 检查当前会议状态,返回 isMeeting:当前是否在开会,isSameUser:是否是同一个
/* isSameMeeting:0,不是同一场会,1,是同一场会(主持人入会) 2,是同一场会(参
```
virtual bool isInstallTang() = 0;
/*
```
*/
```
功能:完成静默升级
action:标识蜜蜂吊起云会议客户端,固定值为11 timeout:为超时时间,单位毫秒,建议为20000 updateType:0,定时升级云会议客户端,如果未安装,完成初始化安装
1,只进行一次升级,如果未安
装,完成初始化安装 pSink:回调类,生命周期和动态库相同
virtual int updateMeetingClient(int appid, int siteid, int skinid,
int action, int timeout, int updateType, const char *userid, IGnetMeetingPluginSink
*pSink) = 0;
/* 功能:监听云会议入会进度 */
virtual int setJoinConferenceSink(IJoinConferenceSink *pSink) = 0;
/* 功能:设置云会议的配置信息 meetingConfig的格式必须是Json格式*/ virtual int setConfigInfo(const char *meetingConfig) = 0;
/* 入会前检查本地版本是否满足入会要求,如果返回true,表示可以直接入会,返回 false,表示升级本地云会议客户端, 外部调用需要等升级结束后再入会 */
```
virtual bool checkMeetingClientVersion(const char *cmdline,
IGnetMeetingPluginSink *pSink) = 0;
virtual bool checkMeetingState(const char *pcode, const char *userid,
bool &isMeeting, int &isSameMeeting, bool &isSameUser) = 0;
```
起失败
功能:蜜蜂直接入会
返回值:-1,表示内部逻辑错误 0,表示客户端程序吊起成功 1,表示客户端程序吊
101,表示当前正在吊起客户端程序 102,IE版本过低,无法吊起客户端程序
/* 显示云会议客户端 */
virtual void showMeetingClientWnd() = 0;
/*
```
*/
virtual int joinConference(
```
UINT32 nSessionID,
UINT32 nSessionIDType,
UINT32 nLoadType,
UINT32 nRunMode,
const char *createParameter,
const char *cmdline, //入会吊起串 const char *headImageUrl//蜜蜂头像url
/*
起失败 2服务端错误(*pSrvStatus 5位服务端状态码,-1网络连接失败) 101,表示当前正在吊起客户端程序
};
extern "C" {
```
API_DECLSPEC
pszInterfaceName);
API_DECLSPEC
```
) = 0;
from参数的含义是从普通的客户端登陆入会还是通过sdk入会。 如果from是pc,表示从pc端登陆入会。 如果from是uc,表示从整合sdk的整合的第三方工具入会。
email和userid可以设置为NULL
功能:通过密码和账户入会
返回值:-1,表示内部逻辑错误 0,表示客户端程序吊起成功 1,表示客户端程序吊
102,IE版本过低,无法吊起客户端程序
*/
virtual int joinConferenceEx(
UINT32 nSessionID,
UINT32 nSessionIDType,
UINT32 nLoadType,
UINT32 nRunMode,
const char *createParameter,
const char *password,
const char *username,
const char *headImageUrl,//蜜蜂头像url
const char *from,
const char *email,
const char *userid,
int* pSrvStatus=NULL
) = 0;
void* _stdcall sgCreateInstance(const char *
void _stdcall sgDestroyInstance(void* lpInterface);
}
云会议PC-SDK目前只支持以C++方式接入到第三方应用程序中,建议的编译开发工具是Visual Studio 2005。
如果第三方应用程序以其他编程语言开发,可以对该DLL进行封装,通过封装的模块提供第三方应用程序能够访 问的接又。
云会议PC-SDK提供了入会、退会、升级等功能,需要跟云端API以及云会议PC客户端程序共同使用,才能够正 常工作。
前置条件
首先调用云端API进行帐号管理、安排会议、获取入会调起串等。
确保与云会议uniform服务器网络通信畅通。
入会
调用PC-SDK接口进行入会操作,传入正确的云会议帐号数据、入会调起串等相关参数。
首次安装及升级
首次入会需要下载云会议PC客户端程序,需要确保与云会议升级服务器网络畅通、以及本地磁盘有足够
空间(默认安装到<用户>\Quanshi\目录下)。
云会议PC客户端程序已存在的情况下,通过SDK接口能够静默升级,手动或自动定期检查新版本,发
现新版本自动后台升级。 整体结构图
下面是第三方使用云会议PC-SDK的整体系统结构示意图:
下面简要介绍SDK接口的使用方法,并给出简单的Demo代码。
接口以windows动态库方式对外提供,包括dll文件和对应的lib文件。
首先加载dll文件,获取两个导出函数,调用导出函数得到接口对象指针(IGnetMeetingPlugin*类型)。
然后调用接口对象指针提供的方法即可。
一、加载动态库:
1、静态加载:在第三方代码工程中引入GnetMeetingPlugin.lib及IGnetMeetingPlugin.h,然后可以直接在代码中 调用上面给出的两个导出函数。
2、动态加载:调用系统API LoadLibrary加载动态库,然后调用GetProcAddress,传入导出函数名称,获得函数 指针。
二、DLL导出函数:
获得接又对象指针:参数传""即可,返回值强制转换为类型 (IGnetMeetingPlugin* pMeeting)
void* sgCreateInstance(const char * pszInterfaceName);
销毁接又对象指针:程序退出前调用,传入上面返回的接又指针,释放资源。
void sgDestroyInstance(void* lpInterface);
静态加载DLL并获得接口对象指针的Demo代码如下:
【头文件】
# include "IGnetMeetingPlugin.h"
class BeePluginSink:IGnetMeetingPluginSink
{
public:
void NotifyUpdateResult(int Result)
{
switch(Result){
case 0:
//... 在此判断result的值,处理升级结果,例如无需升级、升级成功、失败,直接给出提示信息。开始更新:显示等 待页面(升级结束,还会调用到这个函数中。)
} }
void NotifyUpdateProcess(int type, int percent, bool install)
{
switch(type){ case 0: //显示下载进度 case 1: //显示更新文件进度 }}
};
class CMyAppData{
public:
static IGnetMeetingPlugin* pMeeting;//接口对象指针,定义为全局变量 static BeePluginSink mSink;//升级回调对象
static BeePluginSink mSink;//升级回调对象
... }
【源文件】 ...
IGnetMeetingPlugin* CMyAppData::pMeeting=NULL;
BeePluginSink CMyAppData::mSink;
...
//获取接又对象指针 CMyAppData::pMeeting=(IGnetMeetingPlugin*)sgCreateInstance("");
三、操作接口对象指针:
首先调用initSDK方法初始化SDK, 调用一次即可
char *logPath=NULL;//日志保存路径,为空表示使用默认路径
CMyAppData::pMeeting->initSDK(logPath);
如果为true,已经安装,如果为false,未安装
bool isInstallTang()
调用updateMeetingClient方法初始化升级参数, 用户可以选择是定时升级,还是只升级一次
// pMeeting->updateMeetingClient(appid, siteid, skinid, action, timeout, updateType, lpStrUserid,
pSink);
//函数参数含义后面有介绍, lpStrUserid是从云端API获取的用户帐号id
CMyAppData::pMeeting->updateMeetingClient(6, 60001, 1, 11, 20000, 0, lpStrUserid,
&CMyAppData::mSink);
返回0成功,其他失败。 [注] pMeeting指代从DLL中创建的接口对象指针,用来调用会议接口,下同。
关于此接口的详细介绍请参考 3 API说明。
入会时需要捕获当前处理进度,比如入会成功、失败、会议退出等状态进度,在入会接口前调用一个监听方法
setJoinConferenceSink(IJoinConferenceSink *pSink) 对进度进行监听。demo代码如下: 增加全局对象mJoinSink处理入会进度,修改之前定义的CMyAppData类。
【头文件】
class JoinConfSink:IJoinConferenceSink
{
public:
void NotifyJoinConferenceResult(JoinConferenceResult Result)
{
switch(Result){
case MEETING_READIED:
LOG_INFO(L"组件初始化完成,即将入会");
```
break;
case MEETING_JOINED:
```
LOG_INFO(L"入会成功");
```
break;
case MEETING_JOINFAILED:
```
LOG_INFO(L"加入会议失败"); break;
case MEETING_CLOSED: LOG_INFO(L"离开或者结束会议");
```
break;
case MEETING_SHOW_IMMAIN_WND:
```
} }
} };
LOG_INFO(L"(会议结束或隐藏)需要显示第三方主窗口"); break;
```
class CMyAppData{
public:
```
static IGnetMeetingPlugin* pMeeting;//接口对象指针,定义为全局变量 static BeePluginSink mSink;//升级回调对象
static JoinConfSink mJoinSink;//入会事件回调对象
... }
【源文件】
BeePluginSink CMyAppData::mJoinSink; CMyAppData::pMeeting->setJoinConferenceSink(&CMyAppData::mJoinSink);//在此之后调用入会接口才能收到入会
的回调
会议需要一些扩展参数,为了保证扩展性,采用json字符串作为参数格式,方便将来增加新的会议参数。示例代码如下:
std::string jsonStr="{ \"aac\": 1, \"aui\": 0 }"; //该字符串可以通过界面配置设定参数值后,组装而成,此处
为测试填写的固定值。
CMyAppData::pMeeting->setConfigInfo(jsonStr.c_str());//必须放在入会接口joinConference或
joinConferenceEx之前
关于此接口的详细介绍请参考 API说明。
检查当前会议状态: 返回 isMeeting:当前是否在开会,isSameUser:是否是同一个用户
isSameMeeting:0,不是同一场会,1,是同一场会(主持人入会) 2,是同一场会(参会人入会
bool checkMeetingState(const char *pcode, const char *userid, bool &isMeeting, int &isSameMeeting, bool &isSameUser)
显示云会议客户端:
void showMeetingClientWnd();
入会前检查本地版本是否满足入会要求,如果返回true,表示可以直接入会,返回false,表示升级本地云会议客
户端, 外部调用需要等升级结束后再入会: 关于此接口的详细介绍请参考 API说明。
如需进入已安排的会议,调用接口指针的下面方法并传入会议参数即可,其中最重要的参数是调起串cmdline, 它是通过云端API得到的,包含有会议的很多关键信息。
//pMeeting-> joinConference(nSessionID, nSessionIDType, nLoadType, nRunMode, createParameter, cmdline, headImageUrl);
//cmdline从云端API获取,此处为示例数据
std::string cmdline = "tang:///us:wssalesupgrade.quanshi.com|xjpdownload.quanshi.com/pc| djdownload.quanshi.com/pc|meetnow.quanshi.com/upgradeserver/up:80|80|80|80/app:6/skin:1/site: 60000/hs:1/aac:1/ahc:1/auv:0/aav:1/pinCode:7052/bpc:1/arc:0/fromTry:0/aasv:1/alo:1/hcv:0/autoET: 0/vmh:0/aaum:1/isMax:0/nt:3/pwdType:0/lang:cn/dm:meetnow.quanshi.com/Version:3.2.1.062/mv: 3.2.1.062/conf_id:1684604416/aal:7|10|11|9|12|14|16|8|6/cid:660301/huid:1867393/puid:1867393/ user_id:578990301/fuc:1/rc:0/dpm:d/vmit:1/rec:1/svc:776/productType:1/ums_user_id:1867393/ account:1/showAttInfo:1/cts_ip:203.174.108.243-bjsales-cts-rec2.quanshi.com|203.174.108.242- bjsales-cts-rec1.quanshi.com/dts_ip:119.253.82.17-gsalesdts2.quanshi.com/channel_info:1|
```
167973740|167806234|167973741|167806235|258|167973748|167806242|167973749|167806243|259|
167973750|167806244|167973751|167806245|516|167973752|167806246|167973753|167806247|775|
167973742|167806236|167973743|167806237|776|167973744|167806238|167973745|167806239|777|
167973746|167806240|167973747|167806241";
int ret = CMyAppData::pMeeting->joinConference(100, 2, 2, 0, "ConferenceParameter",
cmdline.c_str(), "");
if(0!=ret){
```
//入会失败,请稍后重试 }
另外还有一个入会接口,通过会议密码方式入会,主持人入会需要传入主持人密码,参会人入会需要传入参会密 码。
//pMeeting-> joinConferenceEx(nSessionID, nSessionIDType, nLoadType, nRunMode, createParameter, password, username, headImageUrl, from, email, userId, pSrvStatus);
int srvStatus=-1;
int ret = CMyAppData::pMeeting->joinConferenceEx(100, 2, 2, 0, "ConferenceParameter", "2017027841", "韩飞", "rr", “uc”, xxx@quanshi.com, “234234234”, &srvStatus);
```
if(2==ret){
if(srvStatus==-1){
```
//网络连接错误 }else{
//到云端API错误状态码对照表转换错误信息,显示服务端错误信息,例如 50701 表示 密码错误 }
```
}else
if(0!=ret){
```
//入会失败,请稍后重试 }
关于此接口的详细介绍请参考 3 API说明。
编译:客户C++工程中需要加入GnetMeetingPlugin.lib、IGnetMeetingPlugin.h。
打包:第三方软件打包时只需要加入GnetMeetingPlugin.dll、 GnetMeetingPlugin.ini ,云会议客户端的其他程序文件将在运行时自动从服务器下载安装,所以无需加入到第三方软件安装包中。
云会议PC-SDK的升级包含两部分:
提供windows操作系统下接入全时云会议的功能,SDK包括下列文件:
GnetMeetingPlugin.dll
GnetMeetingPlugin.lib
IGnetMeetingPlugin.h
GnetMeetingPlugin.ini
加载dll以后通过导出函数sgCreateInstance获得接又对象指针IGnetMeetingPlugin* pMeeting以后,即可通过 pMeeting提供的方法进行入会、升级等操作。
接口对象IGnetMeetingPlugin提供了下列接口方法,下面依次介绍。
描述:初始化SDK,要求在dll加载后立即调用。
int initSDK (const char *logPath);
参数说明:
参数 | 说明 |
---|---|
logPath | 存放插件日志的路径,不能包含文件名,文件名由插件自己定义,例如"C:\Users\Hanfei\Documents\quanshiFiles\log". 如果为空,则默认为 C:\Users<用户>\AppData\Local\Quanshi\Bee\log **(附)**日志文件名称:GnetMeetingPlugin_日期时间.log |
[返回值] | 0成功,其他失败。 |
描述:判断客户本地是否安装了全时云会议客户端,返回true, 已安装,false未安装。
bool isInstallTang();
参数说明:
参数 | 说明 |
---|---|
无 | 无 |
[返回值] | true已安装,false未安装。 |
描述:对云会议客户端进行升级检查(如有新版本,自动下载并更新),返回0成功,其他失败。可以选择升级 类型。
int updateMeetingClient( int appid,
int siteid,
int skinid,
int action,
int timeout,
int updateType,
const char *userid, IGnetMeetingPluginSink *pSink);
参数说明:
参数 | 说明 |
---|---|
appid | 应用程序id(填6,以后再扩展) |
siteid | 站点id(填60001,以后再扩展) |
skinid | 云会议客户端显示的皮肤类型,默认填1 |
action | 标识调起的动作类型,填11(将来会增加其他值)。 |
timeout | 升级超时时长,单位毫秒(建议填20000) |
updateType | 0,定时升级云会议客户端,如果未安装,完成初始化安装 1,只进行一次升级,如果未安装,完成初始化安装。 定时升级时,每天自动升级一次(早上0-6时内取1个随机时间点进行升级;如果升级失败,6时以后到24时会每隔10分钟尝试一次,直到升级处理成功)(无需升级也算处理成功)。 |
userid | 用户id,来自于云端API的登录接口返回值 |
pSink | 升级结果回调对象指针(生命周期和****动态库接口对象指针相同,否则会导致回调时异常) |
[返回值] | 0成功,其他失败。 |
回调指针pSink:IQsMeetingPluginSink中有一个虚函数,升级期间或结束时会回调该函数,需要监听对象实现 该函数:
```
class IGnetMeetingPluginSink
{
```
public:
virtual void NotifyUpdateResult(int result) = 0; //升级检查结果返回时调用此函数,并将处理结果传递
给result
virtual void NotifyUpdateProcess(int type, int percent) = 0; /* 显示更新进度信息, type 0:下
载, 1:更新 percent 百分比*/ };
result的值含义如下:
result | 说明 |
---|---|
0 | 不需要更新,已经是最新版本 |
1 | 开始更新(还会继续回调) |
2 | 更新成功 |
3 | 更新失败 |
4 | 超时(下载配置文件超出初始化接口中传入的timeout时长) |
type的值含义如下:
type | 说明 |
---|---|
0 | 下载 |
1 | 更新 |
升级过程: 1)向服务器请求最新版本配置文件。 2)与本地版本信息比较,判断是否需要升级,无需升级则结束本次升级过程。 3)如需进行升级,则继续向服务器请求下载更新文件。 4)更新文件下载完毕,释放到安装目录,完成升级。
参数说明:
void showMeetingClientWnd();
bool checkMeetingState(const char *pcode, const char *userid, bool &isMeeting, int
&isSameMeeting, bool &isSameUser)
参数 | 说明 |
---|---|
pcode | 入会密码 |
Userid | 用户id |
isMeeting | 当前是否在开会 |
isSameUser | 是否是同一个用户 |
isSameMeeting | 0,不是同一场会,1,是同一场会(主持人入会) 2,是同一场会(参会人入会) |
[返回值] | 0成功,其他失败。 |
描述:调用入会接口前设定pSink,然后调用入会接口,能够获知入会的各种状态,包括入会成功、失败、离开 会议等,并进行相应的处理。
int setJoinConferenceSink(IJoinConferenceSink *pSink); //返回0成功,其他失败
目前能够响应下面几种会议事件状态:
参数 | 说明 |
---|---|
pSink | 会议事件的回调函数(生命周期和动态库相同) |
[返回值] | 0成功,其他失败。 |
回调指针pSink:IJoinConferenceSink中有一个虚函数,入会开始或结束时调用,需要监听对象实现该函数:
typedef enum JoinConferenceResult
{
MEETING_JOINED = 0, //入会成功 MEETING_READIED, //组件初始化完成
MEETING_JOINFAILED, //加入会议失败
MEETING_CLOSED, //离开或者结束会议
MEETING_SHOW_IMMAIN_WND //显示窗又
```
MEETING_RESULT_COUNT
}JoinConferenceResult;
class IJoinConferenceSink
{
public:
virtual void NotifyJoinConferenceResult(JoinConferenceResult Result) = 0;
```
};
描述:入会需要设置一些扩展的参数,为了增加扩展性,采用json格式传入参数,将来新增参数可以很方便的加入,而无需修改接口格式。
int setConfigInfo(const char *meetingConfig);
参数 | 说明 |
---|---|
meetingConfig | 扩展参数json字符串,符合标准json要求 { "参数名称" : 参数值, ... ... "参数名称" : 参数值 } [注]字符串类型的参数值用双引号括起来 |
[返回值] | 0成功,其他失败。 |
会议扩展参数说明:【下列参数可以不传,或传部分。如果某个参数不传,将使用默认值】
例如setConfigInfo("{\"aui\":0,\" lang\":\"en\"}"); //aac没传,使用默认值1
会****议参数名称 | 会****议参数说明 |
---|---|
aac | 是否允许参会人外呼。 0 不允许; 1 允许. (默认**)** |
auvt | 允许用户使用语音接入方式(没有默认值,不传的时候跟随QSboss走): 1: 电话+VOIP :1 2:电话主动呼入+VOIP: 2 3:仅电话 :3 4:仅VOIP :4 5:仅电话主动呼入: 5 |
asd | Allow share document 的缩写。是否允许该用户共享文档,仅针对主讲人有效。如果需要控制主讲人是否能共享文档,最好给每一个用户都要传该值。只有主讲人才能看到共享文档按钮,如果是主讲人并且asd为0时,此时不显示共享文档按钮。如果不传该值,走云会议自身的控制文档按钮显示隐藏逻辑(主讲人都能共享) 0:不允许共享文档 1:如果变为主讲人,该主讲人允许共享文档 |
aui | 是否允许使用会中邀请功能。 0 不允许; 1 允许使用所有的会中邀请功能(包括通讯录邀请,电话邀请,更多邀请); (默认**)** 2 仅使用电话外呼功能. 3|URL Protocol串 ,支持通过url scheme方式调起一个版本应用,3和URL Protocol串用竖线|分隔,比如可以通过这个调起云会议客户端(如果本地安装了):3|tang:///app:6/skin:1/site:60000/ |
mpm | mainPannelModel的缩写, 0表示普通面板模式,主窗口和池子分离。(默认****) 1表示主窗口和池子合在一起 |
alm | attendeeListModel的缩写, 0不显示未入会列表, 1正常显示未入会列表。该字段仅对用户版账号设置有效。(默认****) |
fbm | feedbackModel,会中问题反馈的模式, 0为正常普通模式,跟现在一样,(默认****) 1为面板中不显示邮箱一项。 |
fst | firstShareTip,表示第一次入会是否需要共享提示, 0为不显示, 1为显示。 |
lang | 表示会中国际化语言, zh_CN 中文, en 英文 其它 不做处理,默****认中文。 |
mim | meetingInfoModel的缩写,会中主持人是否支持编辑会议. 0不支持编辑会议, 1可以编辑会议。(默认****) |
otm | overTipsModel的缩写,超过会议结束时间半小时之后,是否弹出提示。 0,不提示。(默认****) 1,如果会议结束超过30分钟后,会给主持人提示。 |
pan | phoneAccessNumber缩写, 此处传入自定义"查看更多接入号"的URL地址。 不传或者传入值不合法,则使用默认值。 |
rec | 是否支持开启会中录制。 0为不开启会中录制,隐藏录制按钮; 1为正常显示录制按钮(仅主持人)(默认****) |
skin | 云会议支持的皮肤样式(如无需求,不传该字段): dark , 会中参会人列表以黑色样式显示 |
3.7. 检查本地版本是否满足入会要求
描述:入会前检查本地版本是否满足入会要求,如果返回true,表示可以直接入会,返回false,需要升级本地云 会议客户端, 外部调用需要等升级结束后再入会。
bool checkMeetingClientVersion(const char *cmdline, IGnetMeetingPluginSink *pSink);
参数说明:
参数 | 说明 |
---|---|
cmdline | 入会调起长串。 |
pSink | 升级结果回调对象指针。 |
[返回值] | true 可以直接入会; false 需要等待升级结束后入会; |
描述:直接调起云会议客户端并入会(同步方式),通过调起串方式入会,调起串是通过云端API获得。
```
int joinConference(
UINT32 nSessionID,
UINT32 nSessionIDType,
UINT32 nLoadType,
UINT32 nRunMode,
const char *createParameter,
const char *cmdline,
const char *headImageUrl
```
);
参数说明:
参数 | 说明 |
---|---|
nSessionID | 会议id(通过云端API接口安排会议并获取会议信息) |
nSessionIDType | 会话类型(1用户ID类型即点对点会话;2讨论组;3群;4会议)填4,以后扩展。 |
nLoadType | 加载类型(1聊天类型;2会议类型;3电话类型)填2,以后扩展。 |
nRunMode | 保留参数,填0 |
createParameter | 保留参数,固定填"createParameter" |
cmdline | 入会调起长串,通过云端API接口获取。 |
headImageUrl | 用户头像url,会显示在会议窗口中。填""也可。 |
[返回值] | -1 内部逻辑错误; 0 入会成功; 1 入会失败; 101 当前正在入会中(上一次入会接口还未处理完); 102 IE版本过低,无法入会(最低支持IE8). 103该参会人的入会语音权限超过主持人账号配置的语音权限了 |
描述:通过会议密码和用户名入会,无需调起串(同步方式),会议密码可通过云端API获取,或外部分享方式获得。用户名填写个人姓名或昵称即可, 如果参数中包含非英文字符,请使用utf-8格式
```
int joinConferenceEx(
UINT32 nSessionID,
UINT32 nSessionIDType,
UINT32 nLoadType,
UINT32 nRunMode,
const char *createParameter,
const char *password,
const char *username,
const char *headImageUrl,
const char *from,
const char *email,
const char *userid,
int* pSrvStatus=NULL
);
```
);
参数说明:
参数 | 说明 |
---|---|
nSessionID | 会议id(通过云端API接口安排会议并获取会议信息) |
nSessionIDType | 会话类型(1用户ID类型即点对点会话;2讨论组;3群;4会议)填4,以后扩展。 |
nLoadType | 加载类型(1聊天类型;2会议类型;3电话类型)填2,以后扩展。 |
nRunMode | 保留参数,填0 |
createParameter | 保留参数,固定填"createParameter" |
password | 会议密码pcode,分主持人密码和参会人密码两种。 如果是以主持人身份入会,请填写主持人密码; 如果是参会人,请填写参会人密码; |
username | 用户名,填写实际姓名或昵称 |
headImageUrl | 用户头像url,会显示在会议窗口中。填""也可。 |
from | 入会方式:指的是从普通的客户端登陆入会还是通过sdk入会。 from取值pc的时候,表示从pc端登陆入会。 From取值uc的时候,表示从整合sdk的整合的第三方工具入会,通常是一些统一通信工具,即Unified Communication,比如全时的蜜蜂,顺丰的丰声等。 |
用户的邮件地址,可以为空. | |
userid | 用户的user id,可以为空. |
pSrvStatus | 服务器返回错误状态导致的入会失败时,可能会有服务端错误状态码,如果pSrvStatus非NULL,则填写将服务端错误状态码填写到 * pSrvStatus中。在使用该值前需先判断函数返回值。 函数返回值2: ----* pSrvStatus值为5位数字代表服务端错误码(参见云会议Uniform接口返回码定义)。 ----* pSrvStatus值为-1代表网络连接失败。 函数返回其他值: ---- * pSrvStatus为-1代表无效值(此时无需处理 * pSrvStatus的值)。 |
[返回值] | -1 内部逻辑错误; 0 入会成功; 1 入会失败; 2 服务器返回错误状态导致入会失败(*pSrvStatus 5位服务端状态码,-1网络连接失败) ; 101 当前正在入会中(上一次入会接口还未处理完); 102 IE版本过低,无法入会(最低支持IE8). 103 该参会人的入会语音权限超过主持人账号配置的语音权限了 |
描述:入会(为顺丰提供的临时接口, 在入会前进行升级,显示升级进度, 然后入会)。
参数及参数含义与接口joinConferenceEx完全一致。
int joinConferenceSF(
UINT32 nSessionID,
UINT32 nSessionIDType,
UINT32 nLoadType,
UINT32 nRunMode,
const char *createParameter,
const char *password,
const char *username,
const char *headImageUrl,//蜜蜂头像url
const char *from,
const char *email,
const char *userid,
int* pSrvStatus=NULL
);
参数说明:
参数 | 说明 |
---|---|
nSessionID | 会议id(通过云端API接口安排会议并获取会议信息) |
nSessionIDType | 会话类型(1用户ID类型即点对点会话;2讨论组;3群;4会议)填4,以后扩展。 |
nLoadType | 加载类型(1聊天类型;2会议类型;3电话类型)填2,以后扩展。 |
nRunMode | 保留参数,填0 |
createParameter | 保留参数,固定填"createParameter" |
password | 会议密码pcode,分主持人密码和参会人密码两种。 如果是以主持人身份入会,请填写主持人密码; 如果是参会人,请填写参会人密码; |
username | 用户名,填写实际姓名或昵称。 |
headImageUrl | 用户头像url,会显示在会议窗口中。填""也可。 |
from | 入会方式:指的是从普通的客户端登陆入会还是通过sdk入会。 from取值pc的时候,表示从pc端登陆入会。 From取值uc的时候,表示从整合sdk的整合的第三方工具入会,通常是一些统一通信工具,即Unified Communication,比如全时的蜜蜂,顺丰的丰声等。 |
用户的邮件地址,可以为空. | |
userid | 用户的user id,可以为空. |
pSrvStatus | 服务器返回错误状态导致的入会失败时,可能会有服务端错误状态码,如果pSrvStatus非NULL,则填写将服务端错误状态码填写到 * pSrvStatus中。在使用该值前需先判断函数返回值。 函数返回值2: ----* pSrvStatus值为5位数字代表服务端错误码(参见云会议Uniform接口返回码定义)。 ----* pSrvStatus值为-1代表网络连接失败。 函数返回其他值: ---- * pSrvStatus为-1代表无效值(此时无需处理 * pSrvStatus的值)。 |
[返回值] | -1 内部逻辑错误; 0 入会成功; 1 入会失败; 2服务端错误(*pSrvStatus 5位服务端状态码,-1网络连接失败) 101 当前正在入会中(上一次入会接口还未处理完); 102 IE版本过低,无法入会(最低支持IE8). 103该参会人的入会语音权限超过主持人账号配置的语音权限了. |
错误码 | 含****义 |
---|---|
50001 | 数据库忙碌 |
50002 | 上传文件的格式类型不支持或文件已损坏 |
50003 | 文件大小超出上限xM |
50004 | 文件缺少字段{s} |
50005 | 导入联系人文件中联系人记录中存在数据格式错误 |
50006 | 创建文件错误 |
50007 | 下载错误 |
50008 | 文件为空 |
50009 | 文件上传成功,但是有错误 |
-- | |
50020 | 组为空 |
50021 | 通讯录最大允许创建100个组 |
50022 | 组名不合法 |
50023 | 组名已存在 |
50024 | 待移动组不存在 |
50025 | 添加组失败 |
50026 | 编辑组失败 |
50027 | 删除组失败 |
50028 | 获取组失败 |
-- | |
50040 | 通讯录中无联系人 |
50041 | 导入联系人文件中联系人记录数超过最大限制2000 |
50042 | 导入联系人文件中联系人记录数小于最小限制1 |
50043 | 添加联系人失败 |
50044 | 编辑联系人失败 |
50045 | 移动联系人失败 |
50046 | 删除联系人失败 |
50047 | 通讯录中已存在该邮箱地址 |
50048 | 通讯录中已存在该手机号码 |
50049 | 邮箱地址不合法 |
-- | |
50060 | 添加通讯录版本号失败 |
50061 | 更新通讯录版本号失败 |
-- | |
50080 | 输入错误 |
1 | 字段值不能为空 |
2 | 字段长度不合法 |
3 | 字段格式不正确 |
---【文件】业务状态码----------------------------- | |
50081 | 数据不整合 |
50082 | 文件不存在 |
50083 | 文件不可读 |
50084 | 在文件中没找到该key |
50085 | 文件上传失败 |
50101 | HTTP请求方式(GET或POST)不合法 |
50102 | 请求的数据为空 |
50103 | 请求的参数不合法 |
50104 | 服务器异常 |
50105 | 服务端超时 |
50106 | 传入的数据无法被正常解析为xml或json |
50107 | 传入的数据缺少必要字段 |
50108 | 验证productappKey失败 |
-- | |
50200 | 没有登录,需要登录 |
50201 | 获取历史会议失败,请稍后重试 |
50202 | 导入参会人失败,请稍后重试 |
50203 | 文件可用记录为0,请重新上传 |
50204 | 导入参会人记录条数超过上限 |
50205 | 获取会议基本信息失败 |
50206 | 查询邀请参会人失败 |
50207 | 提醒入会失败 |
50208 | 会中邀请参会人失败 |
50209 | 没有找到相关会议 |
-- | |
50310 | 获取ums帐号信息失败 |
-- | |
50501 | 预约会议时长超过24小时 |
50502 | 预约会议开始时间小于当前时间 |
50503 | 预约会议失败 |
50504 | 预约会议冲突 |
50505 | 预约会议时间大于6个月之后的时间 |
-- | |
50301 | 创建帐号失败 |
50302 | 帐号验证,获取不到站点信息 |
50303 | 创建帐号失败,手机号码不能为空 |
50304 | 创建帐号,获取不到客户信息 |
-- | |
50401 | 验证码错误 |
50402 | 登录失败 |
50403 | 帐号未激活 |
50404 | 帐号所属站点被禁用 |
50405 | 同一个帐号不能同时登录 |
50406 | 帐号被禁用 |
50407 | 帐号被过期 |
50408 | 帐号被欠费 |
50409 | 简约版用户不能登录 |
50410 | 登录异常 |
50501 | 预约会议时长超过24小时 |
50502 | 预约会议开始时间小于当前时间 |
50503 | 预约会议失败 |
50504 | 预约会议冲突 |
50505 | 预约会议时间大于6个月之后的时间 |
-- | |
50601 | 时间有误 |
50781 | 根据临时会议id查询不到会议ID |
50782 | 保存点名记录失败 |
50783 | 根据临时用户id获取所有参会人信息为空 |
50784 | 开启点名失败 |
50785 | 获取点名信息失败 |
50786 | 延时点名失败 |
50787 | 结束点名失败,无法识别的结束取消标识 |
50788 | 结束取消点名失败 |
50789 | 点名已经结束或取消 |
50790 | 已经签到,不能重复签到 |
50791 | 更新签到信息失败 |
50792 | 保存签到信息失败 |
50793 | 获取签到信息失败 |
50794 | 获取参会人信息失败,无法识别的签到类型标识 |
-- | |
50701 | 密码错误 |
50703 | 获取帐号产品状态欠费 |
50704 | 获取帐号产品状态过期 |
50705 | 获取帐号产品状态禁用 |
50706 | 主持人不能同时进入多场会议 |
50707 | 入会失败 |
50708 | 会议结束时间小于当前时间 |
50709 | 会议不存在 |
50710 | 会议已结束 |
50711 | 在会议开始时间前45分钟入会 |
50712 | 主持人正在会中 |
50713 | 参会人正在会中 |
50714 | 会议已锁定 |
50715 | 超方 |
50716 | 站点被禁用 |
50717 | 用户入会站点不正确 |
50718 | 邮箱和密码不匹配 |
50719 | 验证码不正确 |
-- | |
50801 | 编辑会议失败 |
50802 | 要变更的会议已过期 |
50803 | 要变更的会议开始时间小于当前时间 |
50804 | 要变更的会议不存在 |
50806 | 要变更的会议已结束 |
50807 | 会议冲突 |
-- | |
50901 | 取消会议失败 |
50902 | 要取消的会议不存在 |
50903 | 50903 |
-- | |
51001 | 举手错误 |
-- | |
51101 | Admin 错误 |
51102 | 站点不存在 |
51103 | 创建失败 |
51104 | 搜索的userId不存在 |
51105 | 更新失败 |
51106 | 更改用户状态失败 |
51107 | 客户码不存在 |
-- | |
51201 | 不支持的产品类型 |
51202 | 订阅会议失败 |
51203 | 激活会议失败 |
51204 | 预约会议失败 |
51205 | 外呼列表为空失败 |
51206 | 用户校验失败 |
52000 | 此用户已开通PC3.0产品 |
52001 | 传入的邮箱对应的手机号码与传入的手机号码不一致 |
52002 | 传入的手机号码对应的邮箱与传入的邮箱不一致 |
52003 | 用户创建失败 |
52004 | 绑定邮箱 |
52005 | 获取用户信息失败 |
52006 | 帐号不存在 |
52007 | 激活码过期 |
52008 | 激活码不正确 |
52009 | 帐号已激活过 |
52010 | 关联UMS中用户产品信息失败 |
52011 | 更新UMS中用户产品信息失败 |
52012 | URL已过期 |
52013 | 设置登录密码失败 |
52014 | QSBOSS服务器连接失败 |
52015 | QSBOSS创建帐号失败 |
52016 | UMS服务器连接失败 |
52017 | 获取站点信息为空 |
52018 | 获取用户信息为空 |
52019 | 获取用户产品信息为空 |
52020 | 用户加入会议方式错误 |