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

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

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

入門使用

會(huì)議管理

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

創(chuàng)建預(yù)約會(huì)議

描述

用戶創(chuàng)建預(yù)約會(huì)議。

前提條件

  1. 鑒權(quán)登錄成功。
  2. 會(huì)議環(huán)境參數(shù)已設(shè)置。

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

圖1 預(yù)約會(huì)議流程 
  1. UI調(diào)用tsdk_book_conference()預(yù)約會(huì)議,會(huì)議參數(shù)結(jié)構(gòu)為TSDK_S_BOOK_CONF_INFO,SDK發(fā)送預(yù)約會(huì)議請(qǐng)求至?xí)h服務(wù)器。
    說(shuō)明: 
    1. 在預(yù)約會(huì)議時(shí),會(huì)議方數(shù)(size)、會(huì)議類型(conf_type)、媒體類型(conf_media_type)和與會(huì)者信息(attendee_num&attendee_list)必選,其他參數(shù)可選。
    2. 按具體需求填寫會(huì)議方數(shù),當(dāng)實(shí)際與會(huì)者數(shù)目多于設(shè)置的方數(shù)時(shí),服務(wù)會(huì)自動(dòng)擴(kuò)大會(huì)議方數(shù),當(dāng)填寫方數(shù)小于3時(shí),服務(wù)器默認(rèn)會(huì)議方數(shù)為3。
    3. 預(yù)約會(huì)議,會(huì)議類型應(yīng)選TSDK_E_CONF_RESERVED。
    4. 服務(wù)器默認(rèn)時(shí)間為UTC時(shí)間,在預(yù)約時(shí)需將預(yù)約時(shí)間轉(zhuǎn)換為UTC時(shí)間。
    代碼示例:
    //c code
    TSDK_RESULT ret;
    ret = tsdk_book_conference(bookConfInfo);
    if (TSDK_SUCCESS != ret)
    {
        LOG_D_CALL_ERROR("book conf failed. result=%#x", ret);
        return -1;
    }
    return TSDK_SUCCESS;
    
     
  2. SDK在收到服務(wù)器返回的會(huì)議預(yù)約結(jié)果響應(yīng)后,向UI上報(bào)預(yù)約會(huì)議結(jié)果通知TSDK_E_CONF_EVT_BOOK_CONF_RESULT,對(duì)應(yīng)的結(jié)果數(shù)據(jù)結(jié)構(gòu)為TSDK_S_CONF_BASE_INFO。
    說(shuō)明: 

    如果會(huì)議成功預(yù)約,其他用戶可以通過(guò)“查詢會(huì)議列表”或其他第三方方式獲取該會(huì)議的信息:

    代碼示例:
    //c code
    case TSDK_E_CONF_EVT_BOOK_CONF_RESULT:
    {
         LOG_D_CALL_INFO("book conf result");
         break;
    }
    
     

注意事項(xiàng)

無(wú)。

創(chuàng)建即時(shí)會(huì)議

描述

用戶創(chuàng)建立即會(huì)議。

說(shuō)明: 

立即會(huì)議創(chuàng)建成功后,用戶的SIP號(hào)碼自動(dòng)入會(huì),用戶作為會(huì)議主席召集其他與會(huì)者加入會(huì)議。

前提條件:

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

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

圖2 創(chuàng)建立即會(huì)議流程 
  1. UI調(diào)用tsdk_book_conference()創(chuàng)建立即會(huì)議,會(huì)議參數(shù)結(jié)構(gòu)為TSDK_S_BOOK_CONF_INFO;SDK發(fā)送創(chuàng)建會(huì)議請(qǐng)求至?xí)h服務(wù)器。
    說(shuō)明: 

    在創(chuàng)建即時(shí)會(huì)議時(shí),會(huì)議方數(shù)(size)、會(huì)議類型(conf_type),媒體類型(conf_media_type)和與會(huì)者信息(attendee_num&attendee_list)必選,其他參數(shù)可選;

    1. 預(yù)約會(huì)議,會(huì)議類型應(yīng)選TSDK_E_CONF_INSTANT。
    2. 會(huì)議開始時(shí)間不用指定。
    3. 服務(wù)器默認(rèn)時(shí)間為UTC時(shí)間,在預(yù)約時(shí)需將預(yù)約時(shí)間轉(zhuǎn)換為UTC時(shí)間。
    代碼示例:
    //c code
    TSDK_RESULT ret;
    ret = tsdk_book_conference(bookConfInfo);
    if (TSDK_SUCCESS != ret)
    {
        LOG_D_CALL_ERROR("book conf failed. result=%#x", ret);
        return -1;
    }
    return TSDK_SUCCESS;
    
     
  2. SDK在收到服務(wù)器返回的立即會(huì)議創(chuàng)建響應(yīng)后,向UI上報(bào)會(huì)議創(chuàng)建結(jié)果通知TSDK_E_CONF_EVT_BOOK_CONF_RESULT,對(duì)應(yīng)的結(jié)果數(shù)據(jù)結(jié)構(gòu)為TSDK_S_CONF_BASE_INFO,UI應(yīng)提示創(chuàng)建會(huì)議成功。
    代碼示例:
    //c code
    case TSDK_E_CONF_EVT_BOOK_CONF_RESULT:
    {
         LOG_D_CALL_INFO("book conf result");
         break;
    }
    
     
  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界面。
    說(shuō)明: 
    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_INF
             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ì)議狀態(tài)更新通知,向UI上報(bào)會(huì)議信息及狀態(tài)更新事件TSDK_E_CONF_EVT_INFO_AND_STATUS_UPDATE,UI刷新會(huì)議成員列表和會(huì)議信息。

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

  5. 若會(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;
    }
    
     
  6. 此時(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;
    
     
  7. 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ì)議失敗。
    說(shuō)明: 

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

    代碼示例:
    //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;
    
     

注意事項(xiàng)

無(wú)。

查詢會(huì)議列表

描述

用戶查詢自己“創(chuàng)建”的和“待參加”的預(yù)約會(huì)議信息。

前提條件:

  1. 鑒權(quán)登錄成功;
  2. 會(huì)議環(huán)境參數(shù)已設(shè)置。

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

圖3 查詢會(huì)議列表流程 
  1. UI調(diào)用tsdk_query_conference_list()查詢會(huì)議列表,查詢會(huì)議列表的請(qǐng)求信息結(jié)構(gòu)為TSDK_S_QUERY_CONF_LIST_REQ。
    說(shuō)明: 

    1、會(huì)議權(quán)限(conf_right)用于指定要查詢的會(huì)議權(quán)限類型,包含查詢創(chuàng)建的會(huì)議、待參加的會(huì)議或創(chuàng)建和待參加的會(huì)議,可選填;

    2、請(qǐng)求會(huì)議列表頁(yè)索引(page_index),取值從1開始,建議與應(yīng)用程序與會(huì)議列表的頁(yè)簽對(duì)應(yīng),必須要有明確值;

    3、會(huì)議列表每頁(yè)的會(huì)議個(gè)數(shù)(page_size),建議與應(yīng)用程序會(huì)議列表個(gè)數(shù)相同,必須要有明確值。

    4、返回來(lái)的時(shí)間為UTC時(shí)間,UI進(jìn)行頁(yè)面呈現(xiàn)之前需要將UTC時(shí)間轉(zhuǎn)換為本地時(shí)間。

    代碼示例:
    //c code
    TSDK_RESULT ret;
    ret = tsdk_query_conference_list(arg);
    if (TSDK_SUCCESS != ret)
    {
        LOG_D_CALL_ERROR("get conf list failed. result=%#x", ret);
        return -1;
    }
    return TSDK_SUCCESS;
    
     
  2. SDK在收到服務(wù)器返回的查詢會(huì)議列表響應(yīng)后,向UI上報(bào)查詢會(huì)議列表結(jié)果通知TSDK_E_CONF_EVT_QUERY_CONF_LIST_RESULT,對(duì)應(yīng)的結(jié)果數(shù)據(jù)結(jié)構(gòu)為TSDK_S_CONF_LIST_INFO。
    說(shuō)明: 

    1、查詢會(huì)議列表只返回會(huì)議的概要信息,如需查詢會(huì)議詳情(包括與會(huì)者信息),需要“查詢會(huì)議詳情”;

    2、會(huì)議的主席密碼需要“查詢會(huì)議詳情”獲取。

    代碼示例:
    //c code
    case TSDK_E_CONF_EVT_QUERY_CONF_LIST_RESULT:
    {
         if (TSDK_SUCCESS == param1)
         {
             CHECK_POINTER(data);
             TSDK_S_CONF_LIST_INFO* pResult = (TSDK_S_CONF_LIST_INFO*)data;
             TSDK_UINT32 currentConfNum = pResult->current_count;
             if (currentConfNum > 0)
             {
                 TSDK_S_CONF_BASE_INFO* notifyInfo = new TSDK_S_CONF_BASE_INFO[currentConfNum];
                 memset(notifyInfo, 0, sizeof(TSDK_S_CONF_BASE_INFO)*currentConfNum);
                 for (unsigned int i = 0; i < currentConfNum; i++)
                 {
                      notifyInfo[i].size = pResult->conf_info_list[i].size;
                      strncpy_s(notifyInfo[i].conf_id, TSDK_D_MAX_CONF_ID_LEN + 1, pResult->conf_info_list[i].conf_id, _TRUNCATE);
                      strncpy_s(notifyInfo[i].subject, TSDK_D_MAX_SUBJECT_LEN + 1, pResult->conf_info_list[i].subject, _TRUNCATE);
                      strncpy_s(notifyInfo[i].access_number, TSDK_D_MAX_NUMBER_LEN + 1, pResult->conf_info_list[i].access_number, _TRUNCATE);
                      strncpy_s(notifyInfo[i].chairman_pwd, TSDK_D_MAX_CONF_PASSWORD_LEN + 1, pResult->conf_info_list[i].chairman_pwd, _TRUNCATE);
                      strncpy_s(notifyInfo[i].guest_pwd, TSDK_D_MAX_CONF_PASSWORD_LEN + 1, pResult->conf_info_list[i].guest_pwd, _TRUNCATE);
                      strncpy_s(notifyInfo[i].start_time, TSDK_D_MAX_TIME_FORMATE_LEN + 1, pResult->conf_info_list[i].start_time, _TRUNCATE);
                      strncpy_s(notifyInfo[i].end_time, TSDK_D_MAX_TIME_FORMATE_LEN + 1, pResult->conf_info_list[i].end_time, _TRUNCATE);
                      notifyInfo[i].conf_media_type = pResult->conf_info_list[i].conf_media_type;
                      notifyInfo[i].conf_state = (TSDK_E_CONF_STATE)pResult->conf_info_list[i].conf_state;
                      strncpy_s(notifyInfo[i].scheduser_account, TSDK_D_MAX_ACCOUNT_LEN + 1, pResult->conf_info_list[i].scheduser_account, _TRUNCATE);
                      strncpy_s(notifyInfo[i].scheduser_name, TSDK_D_MAX_DISPLAY_NAME_LEN + 1, pResult->conf_info_list[i].scheduser_name, _TRUNCATE);
                 }
                      CDemoMeetingDlg* mettingDlg = maindlg->GetDemoMeetingDlg();
                      CHECK_POINTER(mettingDlg);
                      ::PostMessage(mettingDlg->GetSafeHwnd(), WM_CONF_CTRL_GET_CONF_LIST_RESULT, (WPARAM)notifyInfo, (LPARAM)currentConfNum);
              }
          }
          else
          {
                maindlg->MessageBox(_T("get conf list failed!"));
          }
          break;
    }
    
     

注意事項(xiàng)

無(wú)。

查詢會(huì)議詳情

描述

用戶查詢指定會(huì)議的詳細(xì)信息。

前提條件:

  1. 鑒權(quán)登錄成功;
  2. 會(huì)議環(huán)境參數(shù)已設(shè)置。

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

圖4 查詢會(huì)議詳情流程 
  1. UI調(diào)用tsdk_query_conference_detail()查詢會(huì)議詳情,請(qǐng)求信息結(jié)構(gòu)為TSDK_S_QUERY_CONF_DETAIL_REQ。
    說(shuō)明: 

    請(qǐng)求消息結(jié)構(gòu)TSDK_S_QUERY_CONF_DETAIL_REQ中,

    • conf_id:需要查詢的會(huì)議ID,通過(guò)查詢列表或其他方式獲?。?/li>
    • page_index:請(qǐng)求與會(huì)者列表頁(yè)索引,取值從1開始,建議與應(yīng)用程序與會(huì)者列表的頁(yè)簽對(duì)應(yīng);
    • page_size:與會(huì)者列表每頁(yè)的與會(huì)者個(gè)數(shù),建議與應(yīng)用程序與會(huì)者列表個(gè)數(shù)相同。
    代碼示例:
    //c code
    TSDK_RESULT ret;
    ret = tsdk_query_conference_detail(arg);
    if (TSDK_SUCCESS != ret)
    {
        LOG_D_CALL_ERROR("query conference detail failed. result=%#x", ret);
        return -1;
    }
    return TSDK_SUCCESS;
    
     
  2. SDK在收到服務(wù)器返回的查詢會(huì)議詳情響應(yīng)后,向UI上報(bào)查詢結(jié)果事件TSDK_E_CONF_EVT_QUERY_CONF_DETAIL_RESULT,對(duì)應(yīng)的結(jié)果數(shù)據(jù)結(jié)構(gòu)為TSDK_S_CONF_DETAIL_INFO。
    代碼示例:
    //c code
    case TSDK_E_CONF_EVT_QUERY_CONF_DETAIL_RESULT:
    {
         if (TSDK_SUCCESS == param1)
         {
             CHECK_POINTER(data);
             TSDK_S_CONF_DETAIL_INFO* pResult = (TSDK_S_CONF_DETAIL_INFO*)data;
             TSDK_S_CONF_DETAIL_INFO* notifyInfo = new TSDK_S_CONF_DETAIL_INFO;
             memset(notifyInfo, 0, sizeof(TSDK_S_CONF_DETAIL_INFO));
             memcpy_s(notifyInfo, sizeof(TSDK_S_CONF_DETAIL_INFO), pResult, sizeof(TSDK_S_CONF_DETAIL_INFO));
             CDemoMeetingDlg* mettingDlg = maindlg->GetDemoMeetingDlg();
             CHECK_POINTER(mettingDlg);
             ::PostMessage(mettingDlg->GetSafeHwnd(), WM_CONF_CTRL_GET_CONF_INFO_RESULT, (WPARAM)notifyInfo, NULL);
          }
          else
          {
              maindlg->MessageBox(_T("get conf detail failed!"));
          }
          break;
    }
    
     

注意事項(xiàng)

無(wú)。