主要功能

会议管理

入会

/**
*@brief 进入会议
*@param pUserName 进入会议的用户的名字
*@param pMeetingCode 会议的参会密码(注意不含‘-’)
*@param videoEnable 是否默认开启视频
*@param audioEnable 是否默认打开音频
*@param showPreview 是否显示视频预览窗口
*@param extraData 用来在会议信息中显示的扩展数据
*/
void TangMeetingJoin(const char* pUserName, const char* pMeetingCode, bool videoEnable, bool audioEnable,
    bool showPreview, const char* extraData);

调用时机:初始化之后

使用UserID 入会

/**
*@brief 进入会议
*@param pUserId   进入会议的用户id
*@param pMeetingCode 会议的参会密码(注意不含‘-’)
*@param videoEnable 是否默认视频
*@param audioEnable 是否默认打开音频
*@param showPreview 是否显示视频预览窗口
*@param extraData 用来在会议信息中显示的扩展数据
*/
void TangMeetingJoinByUserId(const char * pUserId , const char* pMeetingCode, bool videoEnable, bool audioEnable,
    bool showPreview, const char* extraData);

调用时机:初始化以后 注意:使用此接口入会,会中的display name将自动识别为开通的账号的display name, 另外,如果使用约会人的userId, 会议密码即使用参会人密码,会中仍然是主持人

extraData说明

// extraData 是用来替换会中信息的 Json格式字符串
// 参考:
[
{"key":"飒飒飒飒1","value":"11111111111111111111","type":"show, copy","replace":""},  // 直接展示在会议信息中,并且可以复制
{"key":"飒飒飒飒2","value":"11111111111111111111","type":"show, copy","replace":""},  // 直接展示在会议信息中,并且可以复制
{"key":"飒飒飒飒3","value":"11111111111111111111","type":"show, copy","replace":""},  // 直接展示在会议信息中,并且可以复制
{"key":"2222啊啊","value":"https://www.meeting.com/","type":"copy","replace":"joinUrl"}, // 不展示在界面上,可以复制,替换的原先的joinUrl-- 目前仅仅支持joinUrl的替换 
{"key":"飒飒飒飒4","value":"11111111111111111111","type":"show, copy","replace":""} // 直接展示在会议信息中,并且可以复制
]

退会

/**
*@brief 退出会议
*@terminate true时,表示主持人离开会议时是否自动结束会议,对参会人此参数无效
*@return void
*/
void TangMeetingStop(bool terminate);

调用时机:用户希望通过app控制退会

反初始化

/**
*@brief 销毁TangMeetingSDK.该接口可将meetingSDK的实例杀掉,第三方APP退出之前应调用该接口,否则可能不能完全退出程序
*@return
*- == true 销毁成功
*- == false 销毁失败
*/
bool TangMeetingUninitialize();

调用时机:用户app结束时,卸载sdk

配置界面属性

/**
*@brief 此接口用来定制界面做一些个性化设置,应在入会之前调用,且只需调用一次,多次调用无效。如没有个性化要求,此接口可以不调用
*@customConfigData Json格式的字符串,具体可配置项如下
*
*return
*-== true 设置成功
*-== false 设置失败(比如没有调用Initialize就调用本函数)
*/
bool TangMeetingSetCustomConfig(const char * customConfigData);

customConfigData示例:

{"colorTheme":1,"language":1, "customUI":{"inviteBtn":{"isShow":true}}} // 深色主题,英文,参会人也有邀请按钮

customConfig对象定义:

key value类型 描述
appName string 设置会议窗口显示名称
language number 设置会议界面的显示语言,0:简体中文(默认);1:英文
colorTheme number 设置会议界面的主题色, 1:深色主题; 2: 浅色主题(默认)
customUI object 设置会议界面中元素的自定义项,见customUI对象参考
openVideoWhenJoinMeeting boolean 入会是否开启视频,true: 开启; false: 不开启,如果调用入会接口TangMeetingJoin时,设置了videoEnable,则会覆盖该值
openVOIPWhenJoinMeeting boolean 入会是否连接VOIP,true: 连接; false: 不连接,如果调用入会接口TangMeetingJoin时,设置了audioEnable,则会覆盖该值
isMuteMicrophoneWhenJoin boolean 入会是否连接VOIP是否静音,true: 静音; false: 不静音,只有入会自动连接VOIP时,该值才起作用

customUI对象定义:

key value类型 描述
inviteBtn customBtnObject 邀请按钮
shareBtn customBtnObject 共享按钮
switchLayoutBtn customBtnObject 切换布局按钮
layoutType number 设置布局类型,1:平均(默认);2:全景;3:演讲;4:回型;5:上台; 6: 工字型; 7: 左右
audioBtn customBtnObject 音频设置按钮
videoBtn customBtnObject 视频设置按钮
attendeeBtn customBtnObject 参会人按钮
chatBtn customBtnObject 聊天按钮
lockBtn customBtnObject 锁定会议按钮
interactiveBtn customBtnObject 互动激励按钮
customerServiceBtn customBtnObject 客服按钮
aboutBtn customBtnObject 关于按钮
feedbackBtn customBtnObject 反馈按钮
isShowFootbar boolean 是否显示底部工具栏,true:显示(默认);false:隐藏
isShowMeetingInfo boolean 是否显示会议信息,true:显示(默认);false:隐藏
leaveBtn customBtnObject 离开按钮
isShowBulletOption boolean 是否显示弹幕选项,true:显示(默认);false:隐藏
isShowEmotionToolbar boolean 是否显示聊天表情,true:显示(默认);false:隐藏
isShowAudioGuide boolean 是否显示音频引导弹窗,true:显示(默认);false:隐藏,如果设置了入会自动连接VOIP,则该值不起作用

customBtnObject对象参考:

key value类型 描述
isShow boolean 是否显示,true:显示(默认);false:隐藏

调用时机:在初始化之后

其他功能

获取会议信息

/**
*@brief    通过会议Id获取会议信息
*@param meetingId 会议ID
*@return
*/
void GetMeetingInfo(const char* meetingId);

调用时机:初始化以后,通过会议ID获取会议详情, 详情通过回调 pfnOnGetMeetingInfo 返回

登录

/**
*@brief    通过普通账号密码登录云会议
*@param pUserName 用户名
*@param pPassword 密码

*@return
*/
void LoginWithPassword(const char* pUserName, const char* pPassword);

调用时机:初始化以后,登录状态通过 pfnOnLoginResult 回调返回

回调事件说明

会议状态回调

/**
* 会议状态变化的回调
*/
typedef void(*pfnOnMeetingStatusChanged)(TangMeetingStatus eStatus);

约会或邀请人后回调

/** 返回数据说明
 {"contactsInfo":"
    {
        "attendeePassCode":"参会人密码",
        "meetingId":"会议id",
        "conferenceJoinUrl":"入会链接",
        "confHostName":"会议主持人名称",
        "conHostId":"会议主持人 id",
        "title":"会议标题",
        "trigger":2}"}
 */
/** 返回数据demo
 {"contactsInfo":"
    {
        "attendeePassCode":"1673958948",
        "meetingId":"3436449",
        "conferenceJoinUrl":"https://n.qsh1.cn/k/klppX2dKa0",
        "confHostName":"微V测试06",
        "conHostId":"20384857",
        "title":"微V测试06的会议室",
        "trigger":2}"}
 */

/**
* 预约会议或会中邀请按钮被触发的回调
*/
typedef void(*pfnOnInviteContact)(const char *pMeetingInfo);

创建会议后的回调

/**
* 创建会议后的回调, 返回会议的id
*/
typedef void(*pfnOnMeetingCreated)(TangMeetingErrorCode errorCode, const char *pMeetingId);

获取会议信息回调

/**
* 获取会议信息的回调, 返回会议信息的JSON字符串
{
    id - 会议的id,
    title - 会议的标题,
    startTime - 会议的开始时间,
    attendees - 会议的参会人ID列表数组,
    hostId - 会议的主持人ID,
    hostName - 会议的主持人名字,
    pCode - 会议的参会人密码,
    hCode - 会议的主持人密码,仅在登录账户是该场会议的主持人时候返回,
}
*/

typedef void(*pfnOnGetMeetingInfo)(TangMeetingErrorCode errorCode, const char *pMeetingInfo);

登录的回调


/**
* 登录的回调, 返回错误码
*/
typedef void(*pfnOnLoginResult)(TangMeetingErrorCode errorCode);

邀请外呼列表回调

/**
* 返回外呼邀请信息
返回的UserInfo是一个Json数组
 [ 
    { 
        userName: name, 
        phoneNum: phoneNumber, 
        email:xxx@emaml.com
    }, 
]
*/
typedef void(*pfnOnCallUsers)(const char *pUsersInfo);

对应错误码与状态码

enum TangMeetingStatus
{
    tang_meeting_login_failed = 100,        //登陆失败
    tang_meeting_scheduler_failed = 101,    //预约会议失败
    tang_meeting_join_failed = 102,            //入会失败
    tang_meeting_join_need_login = 103, // 入会需要登录
    tang_meeting_login_succeed = 200,        // 登陆成功 
    tang_meeting_scheduler_succeed = 201,    // 预约会议成功
    tang_meeting_join_succeed = 202,        // 入会成功 
    tang_meeting_exit = 300,                // 退出会议
    tang_meeting_ended = 301, // 会议已结束
    tang_meeting_exit_meeting_window = 400, // 退出会中窗口
    tang_meeting_auth_key_invalid = 410, // 没有或者authKey无效
    tang_meeting_login_with_auth_key_failed = 411, //使用authKey登录失败
};

enum TangMeetingErrorCode
{
    success = 0,                            // 成功
    login_failed = 100,                        // 登录失败
    client_not_login = 104,                    // 客户端没有登录
    client_not_running = 105,                // SDK的客户端没有运行
};