台湾一级a毛片在线播放,黄色精品偷拍视频大全,精品一区二区在线欧美日韩,日本特黄一级视频播三级片,日韩美女18岁美女视频,偷偷操不一样的99,国产午夜激无码av毛片久

智慧服務(wù),成就美好體驗(yàn) 項(xiàng)目咨詢

主頁 > 服務(wù)與支持 > 開發(fā)平臺(tái) > 客戶端SDK參考 > Windows Native SDK > 會(huì)議 會(huì)議接入

入門使用

會(huì)議接入

更新時(shí)間:2019-11-20

會(huì)議列表一鍵入會(huì)

描述

用戶通過會(huì)議列表一鍵入會(huì)的方式加入會(huì)議。

前提條件:

  1. 鑒權(quán)登錄成功。
  2. SIP號(hào)碼已成功注冊(cè)。
  3. 會(huì)議環(huán)境參數(shù)已設(shè)置。

業(yè)務(wù)流程

圖1 會(huì)議列表一鍵入會(huì)流程 
  1. UI調(diào)用tsdk_join_conference()加入會(huì)議;SDK發(fā)送加入會(huì)議請(qǐng)求至服務(wù)器。
    說明: 

    在加入會(huì)議時(shí),入會(huì)參數(shù)(conf_join_param),是否視頻接入會(huì)議(is_video_join)為必選;

    1. 入會(huì)參數(shù)機(jī)構(gòu)體重conf_id,access_number,conf_password都為必選。
    2. 入會(huì)號(hào)碼(join_number)如果不填,則使用自己軟終端號(hào)碼入會(huì)。
    3. 會(huì)議對(duì)應(yīng)的呼叫ID(接口會(huì)同步返回call_id,需要記錄下),在使用SIP終端號(hào)碼入會(huì)時(shí)有效。
    代碼示例:
    //c code
    TSDK_RESULT ret;
    ret = tsdk_join_conference(confJoinParam, joinNumber, isVideoJoin, callId);
    if (TSDK_SUCCESS != ret)
    {
        LOG_D_CALL_ERROR("join conf failed. result=%#x", ret);
        return -1;
    }
    return TSDK_SUCCESS;
    
     
  2. SDK在收到服務(wù)器返回的加入會(huì)議響應(yīng)后,向UI上報(bào)加入會(huì)議結(jié)果通知TSDK_E_CONF_EVT_JOIN_CONF_RESULT,對(duì)應(yīng)的結(jié)果數(shù)據(jù)結(jié)構(gòu)為TSDK_S_JOIN_CONF_IND_INFO,并返回conf handle,后續(xù)會(huì)控時(shí)使用,此時(shí), UI可跳轉(zhuǎn)至?xí)h界面。
    說明: 
    1. 在加入會(huì)議時(shí),會(huì)請(qǐng)求會(huì)議權(quán)限,若請(qǐng)求失敗,則會(huì)向UI上報(bào)會(huì)議權(quán)限請(qǐng)求失敗通知TSDK_E_CONF_EVT_REQUEST_CONF_RIGHT_FAILED,UI提示申請(qǐng)會(huì)控權(quán)限失敗,若請(qǐng)求成功,則不上報(bào)。
    2. 若應(yīng)用程序是以多流的方式(SVC)成功加入會(huì)議,則此結(jié)果通知中會(huì)攜帶SVC信息,包含 is_svc_conf (是否多流會(huì)議)、svc_label_count(可使用的多流Label數(shù)) 和 svc_label (多流Label 表),應(yīng)用程序應(yīng)保存多流“Label”信息,用于后繼流程中“綁定SVC視頻窗口”、"選看SVC與會(huì)者"和“設(shè)置SVC窗口和與會(huì)者關(guān)系”等操作。
    代碼示例:
    //c code
    case TSDK_E_CONF_EVT_JOIN_CONF_RESULT:
    {
         if (TSDK_SUCCESS == param2)
         {
             CHECK_POINTER(data);
             TSDK_S_JOIN_CONF_IND_INFO* pResult = (TSDK_S_JOIN_CONF_IND_INFO*)data;
             TSDK_S_JOIN_CONF_IND_INFO* notifyInfo = new TSDK_S_JOIN_CONF_IND_INFO;
             memset(notifyInfo, 0, sizeof(TSDK_S_JOIN_CONF_IND_INFO));
             memcpy_s(notifyInfo, sizeof(TSDK_S_JOIN_CONF_IND_INFO), pResult, sizeof(TSDK_S_JOIN_CONF_IND_INFO));
             ::PostMessage(maindlg->GetSafeHwnd(), WM_CONF_CTRL_JOIN_RESULT, (WPARAM)notifyInfo, (LPARAM)param1);
         }
         else 
         {
              maindlg->MessageBox(_T("join conf failed!"));
         }
         break;
    }
    
     
  3. SDK收到會(huì)議狀態(tài)更新通知,向UI上報(bào)會(huì)議信息及狀態(tài)更新事件TSDK_E_CONF_EVT_INFO_AND_STATUS_UPDATE,UI刷新會(huì)議成員列表和會(huì)議信息。

    代碼示例詳見“更新會(huì)議狀態(tài)信息和與會(huì)者列表”描述。

  4. 若會(huì)議包含數(shù)據(jù)會(huì)議能力,SDK會(huì)向UI上報(bào)獲取數(shù)據(jù)會(huì)議參數(shù)結(jié)果TSDK_E_CONF_EVT_GET_DATACONF_PARAM_RESULT。
    代碼示例:
    //c code
    case TSDK_E_CONF_EVT_GET_DATACONF_PARAM_RESULT:
    {
         if (TSDK_SUCCESS != param2)
         {
             maindlg->MessageBox(_T("get data conf param failed!"));
         }
         else
         {
             ::PostMessage(maindlg->GetSafeHwnd(), WM_CONF_CTRL_GET_DATA_CONF_PARAM, (WPARAM)param1, NULL);
         }
         break;
    }
    
     
  5. 此時(shí)UI可選擇自動(dòng)加入或用戶選擇加入數(shù)據(jù)會(huì)議,調(diào)用加入數(shù)據(jù)會(huì)議接口tsdk_join_data_conference(),SDK發(fā)送創(chuàng)建會(huì)議請(qǐng)求至?xí)h服務(wù)器。
    代碼示例:
    //c code
    TSDK_RESULT ret;
    ret = tsdk_join_data_conference(confHandle);
    if (TSDK_SUCCESS != ret)
    {
        LOG_D_CALL_ERROR("join data conf failed. result=%#x", ret);
        return -1;
    }
    return TSDK_SUCCESS;
    
     
  6. SDK在收服務(wù)器加入數(shù)據(jù)會(huì)議響應(yīng)后,向UI上報(bào)數(shù)據(jù)會(huì)議加入結(jié)果通知TSDK_E_CONF_EVT_JOIN_DATA_CONF_RESULT,若成功,則UI刷新界面,提示加入數(shù)據(jù)會(huì)議成功,若失敗,則提示加入數(shù)據(jù)會(huì)議失敗。
    說明: 

    在加入數(shù)據(jù)會(huì)議后,會(huì)向UI上報(bào)會(huì)議信息及狀態(tài)更新事件TSDK_E_CONF_EVT_INFO_AND_STATUS_UPDATE,UI刷新會(huì)議成員列表和會(huì)議信息。

    代碼示例:
    //c code
    case TSDK_E_CONF_EVT_JOIN_DATA_CONF_RESULT:
    {
         ::PostMessage(maindlg->GetSafeHwnd(), WM_CONF_CTRL_JOIN_DATACONF_RESULT, NULL, (LPARAM)param2);
         break;
    }   
    
     

注意事項(xiàng)

無。

會(huì)議接入碼入會(huì)

描述

用戶由第三方途徑獲取會(huì)議信息,通過輸入會(huì)議號(hào)和接入碼的方式加入會(huì)議。

說明: 
  1. 因不支持從撥號(hào)盤撥打“會(huì)議號(hào)”+“接入碼”的方式直接加入會(huì)議,所以應(yīng)用程序界面需要提供“接入會(huì)議”的單獨(dú)入口;
  2. 與“會(huì)議列表一鍵入會(huì)”的接口調(diào)用流程相同,不同在于用戶界面入口。

業(yè)務(wù)流程

參見“會(huì)議列表一鍵入會(huì)”。

注意事項(xiàng)

無。

統(tǒng)一會(huì)議接入號(hào)入會(huì)

描述

用戶由第三方途徑獲取會(huì)議信息,通過撥打統(tǒng)一會(huì)議接入號(hào),使用IVR導(dǎo)航的方式加入會(huì)議。

前提條件:

  1. 鑒權(quán)登錄成功;
  2. SIP號(hào)碼已成功注冊(cè);
  3. 會(huì)議環(huán)境參數(shù)已設(shè)置。

業(yè)務(wù)流程

圖2 統(tǒng)一會(huì)議接入號(hào)入會(huì)流程

  1. UI調(diào)用“音視頻呼叫”接口tsdk_start_call()發(fā)起一個(gè)呼叫請(qǐng)求,被叫號(hào)碼為“統(tǒng)一會(huì)議接入號(hào)”。
    代碼示例:
    //c code
    TSDK_RESULT ret;
    ret = tsdk_start_call(&callid, call_number, FALSE);
    if (TSDK_SUCCESS != ret)
    {
        LOG_D_CALL_ERROR("start call failed. result=%#x", ret);
        return -1;
    }
    return TSDK_SUCCESS;
    
     
  2. 若呼叫建立 成功,SDK向UI上報(bào)呼叫建立事件TSDK_E_CALL_EVT_CALL_CONNECTED,與普通音視頻呼叫相同。
    代碼示例:
    //c code
    case TSDK_E_CALL_EVT_CALL_CONNECTED:
    {
         CHECK_POINTER(data);
         TSDK_S_CALL_INFO* callInfo = (TSDK_S_CALL_INFO*)data;
         TSDK_S_CALL_INFO* notifyInfo = new TSDK_S_CALL_INFO;
         memset(notifyInfo, 0, sizeof(TSDK_S_CALL_INFO));
         memcpy_s(notifyInfo, sizeof(TSDK_S_CALL_INFO), callInfo, sizeof(TSDK_S_CALL_INFO));
    
         ::PostMessage(maindlg->GetSafeHwnd(), WM_CALL_CONNECTED, (WPARAM)notifyInfo, NULL);
         break;
    }
    
     
  3. 用戶根據(jù)服務(wù)器的語言提示,在二次撥號(hào)界面輸入會(huì)議接入碼和密碼,UI調(diào)用tsdk_send_dtmf()完成會(huì)議接入碼和密碼發(fā)送,SDK完成入會(huì)交互處理。
    代碼示例:
    //c code
    TSDK_RESULT ret;
    ret = tsdk_send_dtmf(callid, tone);
    if (TSDK_SUCCESS != ret)
    {
        LOG_D_CALL_ERROR("send dtmf failed. result=%#x", ret);
        return -1;
    }
    return TSDK_SUCCESS;
    
     
  4. SDK在收到服務(wù)器返回的加入會(huì)議響應(yīng)后,向UI上報(bào)加入會(huì)議結(jié)果通知TSDK_E_CONF_EVT_JOIN_CONF_RESULT,對(duì)應(yīng)的結(jié)果數(shù)據(jù)結(jié)構(gòu)為TSDK_S_JOIN_CONF_IND_INFO,并返回conf handle,后續(xù)會(huì)控時(shí)使用,此時(shí), UI可跳轉(zhuǎn)至?xí)h界面。
    說明: 
    1. 在加入會(huì)議時(shí),會(huì)請(qǐng)求會(huì)議權(quán)限,若請(qǐng)求失敗,則會(huì)向UI上報(bào)會(huì)議權(quán)限請(qǐng)求失敗通知TSDK_E_CONF_EVT_REQUEST_CONF_RIGHT_FAILED,UI提示申請(qǐng)會(huì)控權(quán)限失敗,若請(qǐng)求成功,則不上報(bào)。
    2. 若應(yīng)用程序是以多流的方式(SVC)成功加入會(huì)議,則此結(jié)果通知中會(huì)攜帶SVC信息,包含 is_svc_conf (是否多流會(huì)議)、svc_label_count(可使用的多流Label數(shù)) 和 svc_label (多流Label 表),應(yīng)用程序應(yīng)保存多流“Label”信息,用于后繼流程中“綁定SVC視頻窗口”、"選看SVC與會(huì)者"和“設(shè)置SVC窗口和與會(huì)者關(guān)系”等操作。
    代碼示例:
    //c code
    case TSDK_E_CONF_EVT_JOIN_CONF_RESULT:
    {
         if (TSDK_SUCCESS == param2)
         {
             CHECK_POINTER(data);
             TSDK_S_JOIN_CONF_IND_INFO* pResult = (TSDK_S_JOIN_CONF_IND_INFO*)data;
             TSDK_S_JOIN_CONF_IND_INFO* notifyInfo = new TSDK_S_JOIN_CONF_IND_INFO;
             memset(notifyInfo, 0, sizeof(TSDK_S_JOIN_CONF_IND_INFO));
             memcpy_s(notifyInfo, sizeof(TSDK_S_JOIN_CONF_IND_INFO), pResult, sizeof(TSDK_S_JOIN_CONF_IND_INFO));
             ::PostMessage(maindlg->GetSafeHwnd(), WM_CONF_CTRL_JOIN_RESULT, (WPARAM)notifyInfo, (LPARAM)param1);
         }
         else 
         {
              maindlg->MessageBox(_T("join conf failed!"));
         }
         break;
    }
    
     
  5. SDK收到會(huì)議狀態(tài)更新通知,向UI上報(bào)會(huì)議信息及狀態(tài)更新事件TSDK_E_CONF_EVT_INFO_AND_STATUS_UPDATE,UI刷新會(huì)議成員列表和會(huì)議信息。

    代碼示例詳見“更新會(huì)議狀態(tài)信息和與會(huì)者列表”描述。

  6. 若會(huì)議包含數(shù)據(jù)會(huì)議能力,SDK會(huì)向UI上報(bào)獲取數(shù)據(jù)會(huì)議參數(shù)結(jié)果TSDK_E_CONF_EVT_GET_DATACONF_PARAM_RESULT。
    代碼示例:
    //c code
    case TSDK_E_CONF_EVT_GET_DATACONF_PARAM_RESULT:
    {
         if (TSDK_SUCCESS != param2)
         {
             maindlg->MessageBox(_T("get data conf param failed!"));
         }
         else
         {
             ::PostMessage(maindlg->GetSafeHwnd(), WM_CONF_CTRL_GET_DATA_CONF_PARAM, (WPARAM)param1, NULL);
         }
         break;
    }
    
     
  7. 此時(shí)UI可選擇自動(dòng)加入或用戶選擇加入數(shù)據(jù)會(huì)議,調(diào)用加入數(shù)據(jù)會(huì)議接口tsdk_join_data_conference(),SDK發(fā)送創(chuàng)建會(huì)議請(qǐng)求至?xí)h服務(wù)器。
    代碼示例:
    //c code
    TSDK_RESULT ret;
    ret = tsdk_join_data_conference(confHandle);
    if (TSDK_SUCCESS != ret)
    {
        LOG_D_CALL_ERROR("join data conf failed. result=%#x", ret);
        return -1;
    }
    return TSDK_SUCCESS;
    
     
  8. SDK在收服務(wù)器加入數(shù)據(jù)會(huì)議響應(yīng)后,向UI上報(bào)數(shù)據(jù)會(huì)議加入結(jié)果通知TSDK_E_CONF_EVT_JOIN_DATA_CONF_RESULT,若成功,則UI刷新界面,提示加入數(shù)據(jù)會(huì)議成功,若失敗,則提示加入數(shù)據(jù)會(huì)議失敗。
    說明: 

    在加入數(shù)據(jù)會(huì)議后,會(huì)向UI上報(bào)會(huì)議信息及狀態(tài)更新事件TSDK_E_CONF_EVT_INFO_AND_STATUS_UPDATE,UI刷新會(huì)議成員列表和會(huì)議信息。

    代碼示例:
    //c code
    case TSDK_E_CONF_EVT_JOIN_DATA_CONF_RESULT:
    {
         ::PostMessage(maindlg->GetSafeHwnd(), WM_CONF_CTRL_JOIN_DATACONF_RESULT, NULL, (LPARAM)param2);
         break;
    }   
    
     

注意事項(xiàng)

無。

被邀接入會(huì)議

描述

會(huì)議主席邀請(qǐng)新的與會(huì)者加入會(huì)議。

與會(huì)者通過主席身份加入會(huì)議,或已申請(qǐng)獲取為主席。

業(yè)務(wù)流程

圖3 被邀入會(huì)流程 
  1. 被邀與會(huì)者側(cè)SDK收到會(huì)議來電請(qǐng)求,向UI上報(bào)會(huì)議來電事件TSDK_E_CONF_EVT_CONF_INCOMING_IND,對(duì)應(yīng)的事件數(shù)據(jù)結(jié)構(gòu)為TSDK_S_CONF_INCOMING_INFO,UI提示用戶會(huì)議來電。
    代碼示例:
    //c code
    case TSDK_E_CONF_EVT_CONF_INCOMING_IND:
    {
         CHECK_POINTER(data);
         TSDK_S_CONF_INCOMING_INFO* pResult = (TSDK_S_CONF_INCOMING_INFO*)data;
         TSDK_S_CONF_INCOMING_INFO* notifyInfo = new TSDK_S_CONF_INCOMING_INFO;
         memset(notifyInfo, 0, sizeof(TSDK_S_CONF_INCOMING_INFO));
         memcpy_s(notifyInfo, sizeof(TSDK_S_CONF_INCOMING_INFO), pResult, sizeof(TSDK_S_CONF_INCOMING_INFO));
         ::PostMessage(maindlg->GetSafeHwnd(), WM_CONF_CTRL_CONF_COMMING, (WPARAM)notifyInfo, (LPARAM)param1);
         break;
    }
    
    LRESULT CDemoMainDlg::OnConfInComming(WPARAM wparam, LPARAM lparam)
    {
        TSDK_S_CONF_INCOMING_INFO* notifyInfo = (TSDK_S_CONF_INCOMING_INFO*)wparam;
        CHECK_POINTER_RETURN(notifyInfo, 0L);
        unsigned int handle = (unsigned int)lparam;
        std::string strchairman = notifyInfo->number;
        unsigned int conf_id = CTools::str2num(notifyInfo->conf_id);
        SetConfChairman(false);
    
        CDemoCallInCommingDlg incommingDlg;
    
        if (TSDK_E_CONF_MEDIA_VIDEO == notifyInfo->conf_media_type || TSDK_E_CONF_MEDIA_VIDEO_DATA == notifyInfo->conf_media_type)
        {
            incommingDlg.GetInitParam(VIDEO_CONF_CALL, strchairman, conf_id);
        }
        else
        {
            incommingDlg.GetInitParam(AUDIO_CONF_CALL, strchairman, conf_id);
        }
    
        INT_PTR nResponse = incommingDlg.DoModal();
        if (IDOK == nResponse)
        {
            if (TSDK_E_CONF_MEDIA_VIDEO == notifyInfo->conf_media_type || TSDK_E_CONF_MEDIA_VIDEO_DATA == notifyInfo->conf_media_type)
            {
                (void)service_conf_mem_accept(handle, TRUE);
            }
            else
            {
                (void)service_conf_mem_accept(handle, FALSE);
            }
        }
        else
        {
            (void)service_conf_mem_reject(handle);
        }
        m_confHandle = handle;
        SAFE_DELETE(notifyInfo);
        return 0L;
    }
    
     
  2. 被邀與會(huì)者側(cè)接受入會(huì)邀請(qǐng)則調(diào)用tsdk_accept_conference()接聽會(huì)議來電呼叫,拒絕入會(huì)邀請(qǐng)則調(diào)用tsdk_reject_conference()。
    代碼示例:
    //c code
    TSDK_RESULT ret;
    ret = tsdk_accept_conference(confHandle, isJoinVideo);
    if (TSDK_SUCCESS != ret)
    {
        LOG_D_CALL_ERROR("accept conf failed. result=%#x", ret);
        return -1;
    }
    return TSDK_SUCCESS;
    
     
  3. SDK在收到服務(wù)器返回的加入會(huì)議響應(yīng)后,向UI上報(bào)加入會(huì)議結(jié)果通知TSDK_E_CONF_EVT_JOIN_CONF_RESULT,對(duì)應(yīng)的結(jié)果數(shù)據(jù)結(jié)構(gòu)為TSDK_S_JOIN_CONF_IND_INFO,并返回conf handle,后續(xù)會(huì)控時(shí)使用,此時(shí), UI可跳轉(zhuǎn)至?xí)h界面。
    代碼示例:
    //c code
    case TSDK_E_CONF_EVT_JOIN_CONF_RESULT:
    {
         if (TSDK_SUCCESS == param2)
         {
             CHECK_POINTER(data);
             TSDK_S_JOIN_CONF_IND_INFO* pResult = (TSDK_S_JOIN_CONF_IND_INFO*)data;
             TSDK_S_JOIN_CONF_IND_INFO* notifyInfo = new TSDK_S_JOIN_CONF_IND_INFO;
             memset(notifyInfo, 0, sizeof(TSDK_S_JOIN_CONF_IND_INFO));
             memcpy_s(notifyInfo, sizeof(TSDK_S_JOIN_CONF_IND_INFO), pResult, sizeof(TSDK_S_JOIN_CONF_IND_INFO));
             ::PostMessage(maindlg->GetSafeHwnd(), WM_CONF_CTRL_JOIN_RESULT, (WPARAM)notifyInfo, (LPARAM)param1);
          }
          else 
          {
              maindlg->MessageBox(_T("join conf failed!"));
          }
          break;
    }
    
     
  4. SDK收到會(huì)議成員列表刷新通知,向UI上報(bào)會(huì)議成員列表刷新事件TSDK_E_CONF_EVT_INFO_AND_STATUS_UPDATE,UI刷新會(huì)議成員列表和會(huì)議信息。

    代碼示例詳見“更新會(huì)議狀態(tài)信息和與會(huì)者列表”描述。

匿名加入會(huì)議

描述

用戶在未注冊(cè)EC帳號(hào)時(shí),通過匿名方式加入一個(gè)會(huì)議。

會(huì)議已經(jīng)創(chuàng)建,且用戶通過第三方方式獲取到會(huì)議ID和密碼。

業(yè)務(wù)流程

圖4 匿名加入會(huì)議流程 
  1. UI調(diào)用tsdk_join_anonymous_conference()接口,匿名加入會(huì)議。
    說明: 

    參數(shù)TSDK_S_CONF_ANONYMOUS_JOIN_PARAM中的服務(wù)器地址和端口,指會(huì)議服務(wù)器的地址和端口。

    代碼示例:

    //c code
    TSDK_S_CONF_ANONYMOUS_JOIN_PARAM anonymousJoinConfParam;
    service_memset_s(&anonymousJoinConfParam,sizeof(TSDK_S_CONF_ANONYMOUS_JOIN_PARAM),0,sizeof(TSDK_S_CONF_ANONYMOUS_JOIN_PARAM));
    
    anonymousJoinConfParam.user_id = 1;
    CTools::CString2Char(m_strConfId, anonymousJoinConfParam.conf_id, TSDK_D_MAX_CONF_ID_LEN);
    CTools::CString2Char(m_strJoinPwd, anonymousJoinConfParam.conf_password, TSDK_D_MAX_CONF_PASSWORD_LEN);
    CTools::CString2Char(m_strConfServerAddress, anonymousJoinConfParam.server_addr, TSDK_D_MAX_URL_LENGTH);
    CTools::CString2Char(m_strNickname, anonymousJoinConfParam.display_name, TSDK_D_MAX_DISPLAY_NAME_LEN);
    anonymousJoinConfParam.server_port = (unsigned short)CTools::str2num(CTools::UNICODE2UTF(m_strConfServerPort));
    
    (void)service_join_conference_by_anonymous(&anonymousJoinConfParam);
    
    int service_join_conference_by_anonymous(TSDK_S_CONF_ANONYMOUS_JOIN_PARAM *confJoinParam)
    {
        TSDK_RESULT ret;
        ret = tsdk_join_conference_by_anonymous(confJoinParam);
        if (TSDK_SUCCESS != ret)
        {
            LOG_D_CALL_ERROR("join conference by anonymous failed. result=%#x", ret);
            return -1;
        }
        return TSDK_SUCCESS;
    }
    
     
  2. SDK通過會(huì)議ID和密碼向會(huì)議服務(wù)器完成鑒權(quán),獲取臨時(shí)帳號(hào),上報(bào)臨時(shí)帳號(hào)獲取結(jié)果事件TSDK_E_LOGIN_EVT_GET_TEMP_USER_RESULT。
    說明: 

    若此次事件通知返回失敗,應(yīng)用程序界面應(yīng)提示用戶。

    代碼示例:

    //c code
    case TSDK_E_LOGIN_EVT_GET_TEMP_USER_RESULT:
    {
         CHECK_POINTER(data);
         TSDK_CHAR* notifyInfo = (TSDK_CHAR*)data;
         ::PostMessage(logindlg->GetSafeHwnd(), WM_LOGIN_GET_TEMP_USER_RESULT, (WPARAM)notifyInfo, NULL);
         break;
    }
    
     
  3. SDK自動(dòng)完成臨時(shí)帳號(hào)注冊(cè),并完成加入會(huì)議處理,向UI上報(bào)加入會(huì)議結(jié)果事件TSDK_E_CONF_EVT_JOIN_CONF_RESULT。后續(xù)過程與普通入會(huì)流程相同。
    說明: 

    匿名會(huì)議過程中,無論用戶采用主席密碼入會(huì)或是普通與會(huì)者密碼入會(huì),均只有設(shè)置自己閉音的會(huì)控能力,其他會(huì)控能力暫不支持。

    代碼示例:
    //c code
    case TSDK_E_CONF_EVT_JOIN_CONF_RESULT:
    {
    if (TSDK_SUCCESS == param2)
    {
        CHECK_POINTER(data);
        TSDK_S_JOIN_CONF_IND_INFO* pResult = (TSDK_S_JOIN_CONF_IND_INFO*)data;
        TSDK_S_JOIN_CONF_IND_INFO* notifyInfo = new TSDK_S_JOIN_CONF_IND_INFO;
        service_memset_s(notifyInfo, sizeof(TSDK_S_JOIN_CONF_IND_INFO), 0, sizeof(TSDK_S_JOIN_CONF_IND_INFO));
        memcpy_s(notifyInfo, sizeof(TSDK_S_JOIN_CONF_IND_INFO), pResult, sizeof(TSDK_S_JOIN_CONF_IND_INFO));
        ::PostMessage(maindlg->GetSafeHwnd(), WM_CONF_CTRL_JOIN_RESULT, (WPARAM)notifyInfo, (LPARAM)param1);
    }
    else
    {
         maindlg->MessageBox(_T("join conf failed!"));
    }
    break;
    }