暖暖视频免费观**,国产免费美女被艹视频,毛片一级毛片,不卡三级

智慧服務,成就美好體驗 項目咨詢

主頁 > 服務與支持 > 開發(fā)平臺 > 客戶端SDK參考 > Windows Native SDK > 會議 會議管理

入門使用

會議管理

更新時間:2019-11-20

創(chuàng)建預約會議

描述

用戶創(chuàng)建預約會議。

前提條件

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

業(yè)務流程

圖1 預約會議流程 
  1. UI調(diào)用tsdk_book_conference()預約會議,會議參數(shù)結(jié)構為TSDK_S_BOOK_CONF_INFO,SDK發(fā)送預約會議請求至會議服務器。
    說明: 
    1. 在預約會議時,會議方數(shù)(size)、會議類型(conf_type)、媒體類型(conf_media_type)和與會者信息(attendee_num&attendee_list)必選,其他參數(shù)可選。
    2. 按具體需求填寫會議方數(shù),當實際與會者數(shù)目多于設置的方數(shù)時,服務會自動擴大會議方數(shù),當填寫方數(shù)小于3時,服務器默認會議方數(shù)為3。
    3. 預約會議,會議類型應選TSDK_E_CONF_RESERVED。
    4. 服務器默認時間為UTC時間,在預約時需將預約時間轉(zhuǎn)換為UTC時間。
    代碼示例:
    //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在收到服務器返回的會議預約結(jié)果響應后,向UI上報預約會議結(jié)果通知TSDK_E_CONF_EVT_BOOK_CONF_RESULT,對應的結(jié)果數(shù)據(jù)結(jié)構為TSDK_S_CONF_BASE_INFO。
    說明: 

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

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

注意事項

無。

創(chuàng)建即時會議

描述

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

說明: 

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

前提條件:

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

業(yè)務流程

圖2 創(chuàng)建立即會議流程 
  1. UI調(diào)用tsdk_book_conference()創(chuàng)建立即會議,會議參數(shù)結(jié)構為TSDK_S_BOOK_CONF_INFO;SDK發(fā)送創(chuàng)建會議請求至會議服務器。
    說明: 

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

    1. 預約會議,會議類型應選TSDK_E_CONF_INSTANT。
    2. 會議開始時間不用指定。
    3. 服務器默認時間為UTC時間,在預約時需將預約時間轉(zhuǎn)換為UTC時間。
    代碼示例:
    //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在收到服務器返回的立即會議創(chuàng)建響應后,向UI上報會議創(chuàng)建結(jié)果通知TSDK_E_CONF_EVT_BOOK_CONF_RESULT,對應的結(jié)果數(shù)據(jù)結(jié)構為TSDK_S_CONF_BASE_INFO,UI應提示創(chuàng)建會議成功。
    代碼示例:
    //c code
    case TSDK_E_CONF_EVT_BOOK_CONF_RESULT:
    {
         LOG_D_CALL_INFO("book conf result");
         break;
    }
    
     
  3. SDK在收到服務器返回的加入會議響應后,向UI上報加入會議結(jié)果通知TSDK_E_CONF_EVT_JOIN_CONF_RESULT,對應的結(jié)果數(shù)據(jù)結(jié)構為TSDK_S_JOIN_CONF_IND_INFO,并返回conf handle,后續(xù)會控時使用,此時, UI可跳轉(zhuǎn)至會議界面。
    說明: 
    1. 在加入會議時,會請求會議權限,若請求失敗,則會向UI上報會議權限請求失敗通知TSDK_E_CONF_EVT_REQUEST_CONF_RIGHT_FAILED,UI提示申請會控權限失敗,若請求成功,則不上報。
    2. 若應用程序是以多流的方式(SVC)成功加入會議,則此結(jié)果通知中會攜帶SVC信息,包含 is_svc_conf (是否多流會議)、svc_label_count(可使用的多流Label數(shù)) 和 svc_label (多流Label 表),應用程序應保存多流“Label”信息,用于后繼流程中“綁定SVC視頻窗口”、"選看SVC與會者"和“設置SVC窗口和與會者關系”等操作。
    代碼示例:
    //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收到會議狀態(tài)更新通知,向UI上報會議信息及狀態(tài)更新事件TSDK_E_CONF_EVT_INFO_AND_STATUS_UPDATE,UI刷新會議成員列表和會議信息。

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

  5. 若會議包含數(shù)據(jù)會議能力,SDK會向UI上報獲取數(shù)據(jù)會議參數(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. 此時UI可選擇自動加入或用戶選擇加入數(shù)據(jù)會議,調(diào)用加入數(shù)據(jù)會議接口tsdk_join_data_conference(),SDK發(fā)送創(chuàng)建會議請求至會議服務器。
    代碼示例:
    //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在收服務器加入數(shù)據(jù)會議響應后,向UI上報數(shù)據(jù)會議加入結(jié)果通知TSDK_E_CONF_EVT_JOIN_DATA_CONF_RESULT,若成功,則UI刷新界面,提示加入數(shù)據(jù)會議成功,若失敗,則提示加入數(shù)據(jù)會議失敗。
    說明: 

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

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

注意事項

無。

查詢會議列表

描述

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

前提條件:

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

業(yè)務流程

圖3 查詢會議列表流程 
  1. UI調(diào)用tsdk_query_conference_list()查詢會議列表,查詢會議列表的請求信息結(jié)構為TSDK_S_QUERY_CONF_LIST_REQ。
    說明: 

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

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

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

    4、返回來的時間為UTC時間,UI進行頁面呈現(xiàn)之前需要將UTC時間轉(zhuǎn)換為本地時間。

    代碼示例:
    //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在收到服務器返回的查詢會議列表響應后,向UI上報查詢會議列表結(jié)果通知TSDK_E_CONF_EVT_QUERY_CONF_LIST_RESULT,對應的結(jié)果數(shù)據(jù)結(jié)構為TSDK_S_CONF_LIST_INFO。
    說明: 

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

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

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

注意事項

無。

查詢會議詳情

描述

用戶查詢指定會議的詳細信息。

前提條件:

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

業(yè)務流程

圖4 查詢會議詳情流程 
  1. UI調(diào)用tsdk_query_conference_detail()查詢會議詳情,請求信息結(jié)構為TSDK_S_QUERY_CONF_DETAIL_REQ。
    說明: 

    請求消息結(jié)構TSDK_S_QUERY_CONF_DETAIL_REQ中,

    • conf_id:需要查詢的會議ID,通過查詢列表或其他方式獲??;
    • page_index:請求與會者列表頁索引,取值從1開始,建議與應用程序與會者列表的頁簽對應;
    • page_size:與會者列表每頁的與會者個數(shù),建議與應用程序與會者列表個數(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在收到服務器返回的查詢會議詳情響應后,向UI上報查詢結(jié)果事件TSDK_E_CONF_EVT_QUERY_CONF_DETAIL_RESULT,對應的結(jié)果數(shù)據(jù)結(jié)構為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;
    }
    
     

注意事項

無。