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

智慧服務(wù),成就美好體驗 項目咨詢

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

入門使用

會議接入

更新時間:2019-11-20

會議列表一鍵入會

描述

用戶在移動客戶端通過會議列表一鍵入會的方式加入會議。

前提條件

  • 鑒權(quán)登錄成功。
  • SIP號碼已成功注冊。
  • 會議環(huán)境參數(shù)已設(shè)置。

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

圖1 會議列表一鍵入會流程 
  1. UI調(diào)用TsdkConferenceManager對象中的joinConference()方法主動加入會議。SDK發(fā)送加入會議請求至服務(wù)器。

     

    說明: 

    在加入會議時,需要傳入的參數(shù)為:是否接入視頻會議以及入會參數(shù)。

    • 入會參數(shù)中confPassword、confId以及accessNumber必選。
    • 入會號碼(joinNumber)如果不填,則使用自己軟終端號碼入會。
    • 會議對應(yīng)的呼叫ID(接口會同步返回呼叫ID,需要記錄下),在使用SIP終端號碼入會時有效。
    代碼示例:
    //Java code
    public int joinConf(TsdkConfJoinParam confJoinParam, boolean isVideo, String joinNumber)
    {
        Log.i(TAG,  "join conf.");
        int result = TsdkManager.getInstance().getConferenceManager().joinConference(confJoinParam, isVideo, joinNumber);
        if (result != 0)
        {
            Log.e(TAG, "joinConf result ->" + result);
            currentConference = null;
            return result;
        }
        return 0;
    }
    
     

     

  2. SDK在收到服務(wù)器返回的加入會議響應(yīng)后,通過TsdkNotify對象中的onEvtJoinConfResult()方法向UI上報會議加入結(jié)果事件。并返回會議對象TsdkConference,后續(xù)會控時使用,此時, UI可跳轉(zhuǎn)至?xí)h界面。

     

    說明: 
    1. 在加入會議時,會請求會議權(quán)限,若請求失敗,則通過TsdkNotify對象中的onEvtRequestConfRightFailed()方法向UI上報會議權(quán)限請求失敗通知,UI提示申請會控權(quán)限失敗,若請求成功,則不上報。
    2. 若應(yīng)用程序是以多流的方式(SVC)成功加入會議,則此結(jié)果通知中會攜帶SVC信息,包含 isSvcConf (是否多流會議)、svcLabelCount(可使用的多流Label數(shù)) 和 svcLabel (多流Label 表),應(yīng)用程序應(yīng)保存多流“Label”信息,用于后繼流程中“綁定SVC視頻窗口”、"選看SVC與會者"和“設(shè)置SVC窗口和與會者關(guān)系”等操作。
    代碼示例:
    //Java code
    public void handleJoinConfResult(TsdkConference tsdkConference, TsdkCommonResult commonResult, TsdkJoinConfIndInfo tsdkJoinConfIndInfo
        Log.i(TAG, "handleJoinConfResult");
        if ((tsdkConference == null) || (commonResult == null)) {
            return;
        }
        int result = commonResult.getResult();
        if (result == 0)
        {
            this.currentConference = tsdkConference;
            this.memberList = null;
            this.self = null;
            TsdkCall tsdkCall = tsdkConference.getCall();
            if (null != tsdkCall) {
                Session newSession = CallMgr.getInstance().getCallSessionByCallID(tsdkCall.getCallInfo().getCallId());
                if (null == newSession) {
                    newSession = new Session(tsdkCall);
                    CallMgr.getInstance().putCallSessionToMap(newSession);
                }
                if (tsdkCall.getCallInfo().getIsVideoCall() == 1) {
                    VideoMgr.getInstance().initVideoWindow(tsdkCall.getCallInfo().getCallId());
                }
            }
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.JOIN_CONF_SUCCESS, tsdkConference.getHandle() + "");
        }
        else
        {
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.JOIN_CONF_FAILED, result);
        }
    }
    
     

     

  3. SDK收到會議狀態(tài)刷新通知,通過TsdkNotify對象中的onEvtInfoAndStatusUpdate()方法向UI上報會議信息及狀態(tài)更新事件,UI刷新會議狀態(tài)和成員列表。

     

    說明: 

    詳細(xì)流程參見會議信息及會議狀態(tài)更新描述。

     

  4. 若會議包含數(shù)據(jù)會議能力,SDK通過TsdkNotify對象中的onEvtGetDataconfParamResult()方法向UI上報獲取數(shù)據(jù)會議參數(shù)結(jié)果。

     

    代碼示例:
    //Java code
    public void  handleGetDataConfParamsResult(TsdkConference tsdkConference, TsdkCommonResult commonResult){
        Log.i(TAG, "handleJoinConfResult");
        if ((tsdkConference == null) || (commonResult == null)) {
            return;
        }
        int result = commonResult.getResult();
        mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.GET_DATA_CONF_PARAM_RESULT, result);
    }
    
     

     

  5. 此時UI可選擇自動加入或用戶選擇加入數(shù)據(jù)會議,調(diào)用TsdkConference對象中的joinDataConference()方法加入數(shù)據(jù)會議。

     

    代碼示例:
    //Java code
    public int joinDataConf()
    {
        if (null == currentConference)
        {
            Log.e(TAG,  "join data conf failed, currentConference is null ");
            return -1;
        }
    
        int result =  currentConference.joinDataConference();
    
        return result;
    }
    
     

     

  6. SDK在收服務(wù)器加入數(shù)據(jù)會議響應(yīng)后,通過TsdkNotify對象中的onEvtJoinDataConfResult()方法向UI上報數(shù)據(jù)會議加入結(jié)果事件。若成功,則UI刷新界面,提示加入數(shù)據(jù)會議成功,若失敗,則提示加入數(shù)據(jù)會議失敗。

     

    說明: 

    在加入數(shù)據(jù)會議后,通過TsdkNotify對象中的onEvtInfoAndStatusUpdate()方法向UI上報會議信息及狀態(tài)更新事件,UI刷新會議狀態(tài)和成員列表。

    代碼示例:
    //Java code
    public void  handleJoinDataConfResult(TsdkConference tsdkConference, TsdkCommonResult commonResult){
        Log.i(TAG, "handleJoinDataConfResult");
        if ((tsdkConference == null) || (commonResult == null)) {
            return;
        }
        int result = commonResult.getResult();
        mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.JOIN_DATA_CONF_RESULT, result);
    }
    
     

     

注意事項

無。

會議接入碼入會

描述

用戶由第三方途徑獲取會議信息,通過輸入會議號和接入碼的方式加入會議。

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

前提條件

參見會議列表一鍵入會。

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

參見會議列表一鍵入會。

注意事項

無。

統(tǒng)一會議接入號入會

描述

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

前提條件

  • 鑒權(quán)登錄成功。
  • SIP號碼已成功注冊。
  • 會議環(huán)境參數(shù)已設(shè)置。

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

圖2 統(tǒng)一會議接入號入會流程

  1. UI調(diào)用TsdkCallManager對象中的startCall()方法來發(fā)起一個呼叫請求,被叫號碼為“統(tǒng)一會議接入號”。

     

    代碼示例:
    // Java code
    TsdkCall call = TsdkManager.getInstance().getCallManager().startCall(toNumber, isVideoCall);
    
     

     

  2. 若呼叫建立成功,SDK通過TsdkNotify對象中的onEvtCallConnected()方法向UI上報呼叫建立事件,與普通音視頻呼叫相同。

     

    代碼示例:
    //Java code
    public void onEvtCallConnected(TsdkCall call){
        Log.i(TAG, "onCallConnected");
        if (null == call)
        {
            Log.e(TAG, "call obj is null");
            return;
        }
    
        CallInfo callInfo = getCallInfo(call);
        Session callSession = getCallSessionByCallID(call.getCallInfo().getCallId());
        if (callSession == null)
        {
            Log.e(TAG, "call session obj is null");
            return;
        }
    
        if (callInfo.isVideoCall())
        {
            callSession.setCallStatus(CallConstant.CallStatus.VIDEO_CALLING);
        }
        else
        {
            callSession.setCallStatus(CallConstant.CallStatus.AUDIO_CALLING);
        }
    
        mCallNotification.onCallEventNotify(CallConstant.CallEvent.CALL_CONNECTED, callInfo);
    }
    
     

     

  3. 用戶根據(jù)服務(wù)器的語言提示,在二次撥號界面輸入會議接入碼和密碼(密碼必須以“#”號結(jié)尾),UI調(diào)用TsdkCall對象中的sendDtmf()方法在通話中發(fā)送DTMF信號完成會議接入碼和密碼發(fā)送,SDK完成入會交互處理。

     

    代碼示例:
    //Java code
    public boolean reDial(int code)
    {
        TsdkDtmfTone tsdkDtmfTone = TsdkDtmfTone.enumOf(code);
        LogUtil.d(TAG, "Dtmf Tone :" + tsdkDtmfTone.getIndex());
        int result = tsdkCall.sendDtmf(tsdkDtmfTone);
        if (result != 0)
        {
            LogUtil.e(TAG, "sendDTMF return failed, result = " + result);
            return false;
        }
        return true;
    }
    
     

     

  4. SDK在收到服務(wù)器返回的加入會議響應(yīng)后,通過TsdkNotify對象中的onEvtJoinConfResult()方法向UI上報會議加入結(jié)果事件。并返回會議對象TsdkConference,后續(xù)會控時使用,此時, UI可跳轉(zhuǎn)至?xí)h界面。

     

    說明: 
    1. 在加入會議時,會請求會議權(quán)限,若請求失敗,則通過TsdkNotify對象中的onEvtRequestConfRightFailed()方法向UI上報會議權(quán)限請求失敗通知,UI提示申請會控權(quán)限失敗,若請求成功,則不上報。
    2. 若應(yīng)用程序是以多流的方式(SVC)成功加入會議,則此結(jié)果通知中會攜帶SVC信息,包含 isSvcConf (是否多流會議)、svcLabelCount(可使用的多流Label數(shù)) 和 svcLabel (多流Label 表),應(yīng)用程序應(yīng)保存多流“Label”信息,用于后繼流程中“綁定SVC視頻窗口”、"選看SVC與會者"和“設(shè)置SVC窗口和與會者關(guān)系”等操作。
    代碼示例:
    //Java code
    public void handleJoinConfResult(TsdkConference tsdkConference, TsdkCommonResult commonResult, TsdkJoinConfIndInfo tsdkJoinConfIndInfo
        Log.i(TAG, "handleJoinConfResult");
        if ((tsdkConference == null) || (commonResult == null)) {
            return;
        }
        int result = commonResult.getResult();
        if (result == 0)
        {
            this.currentConference = tsdkConference;
            this.memberList = null;
            this.self = null;
            TsdkCall tsdkCall = tsdkConference.getCall();
            if (null != tsdkCall) {
                Session newSession = CallMgr.getInstance().getCallSessionByCallID(tsdkCall.getCallInfo().getCallId());
                if (null == newSession) {
                    newSession = new Session(tsdkCall);
                    CallMgr.getInstance().putCallSessionToMap(newSession);
                }
                if (tsdkCall.getCallInfo().getIsVideoCall() == 1) {
                    VideoMgr.getInstance().initVideoWindow(tsdkCall.getCallInfo().getCallId());
                }
            }
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.JOIN_CONF_SUCCESS, tsdkConference.getHandle() + "");
        }
        else
        {
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.JOIN_CONF_FAILED, result);
        }
    }
    
     

     

  5. SDK收到會議狀態(tài)刷新通知,通過TsdkNotify對象中的onEvtInfoAndStatusUpdate()方法向UI上報會議信息及狀態(tài)更新事件,UI刷新會議狀態(tài)和成員列表。

     

    說明: 

    詳細(xì)流程參見會議信息及會議狀態(tài)更新描述。

     

  6. 若會議包含數(shù)據(jù)會議能力,SDK通過TsdkNotify對象中的onEvtGetDataconfParamResult()方法向UI上報獲取數(shù)據(jù)會議參數(shù)結(jié)果。

     

    代碼示例:
    //Java code
    public void  handleGetDataConfParamsResult(TsdkConference tsdkConference, TsdkCommonResult commonResult){
        Log.i(TAG, "handleJoinConfResult");
        if ((tsdkConference == null) || (commonResult == null)) {
            return;
        }
        int result = commonResult.getResult();
        mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.GET_DATA_CONF_PARAM_RESULT, result);
    }
    
     

     

  7. 此時UI可選擇自動加入或用戶選擇加入數(shù)據(jù)會議,調(diào)用TsdkConference對象中的joinDataConference()方法加入數(shù)據(jù)會議。

     

    代碼示例:
    //Java code
    public int joinDataConf()
    {
        if (null == currentConference)
        {
            Log.e(TAG,  "join data conf failed, currentConference is null ");
            return -1;
        }
    
        int result =  currentConference.joinDataConference();
    
        return result;
    }
    
     

     

  8. SDK在收服務(wù)器加入數(shù)據(jù)會議響應(yīng)后,通過TsdkNotify對象中的onEvtJoinDataConfResult()方法向UI上報數(shù)據(jù)會議加入結(jié)果事件。若成功,則UI刷新界面,提示加入數(shù)據(jù)會議成功,若失敗,則提示加入數(shù)據(jù)會議失敗。

     

    說明: 

    在加入數(shù)據(jù)會議后,通過TsdkNotify對象中的onEvtInfoAndStatusUpdate()方法向UI上報會議信息及狀態(tài)更新事件,UI刷新會議狀態(tài)和成員列表。

    代碼示例:
    //Java code
    public void  handleJoinDataConfResult(TsdkConference tsdkConference, TsdkCommonResult commonResult){
        Log.i(TAG, "handleJoinDataConfResult");
        if ((tsdkConference == null) || (commonResult == null)) {
            return;
        }
        int result = commonResult.getResult();
        mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.JOIN_DATA_CONF_RESULT, result);
    }
    
     

     

注意事項

無。

被邀接入會議

描述

會議主席邀請新的與會者加入會議。

前提條件

與會者通過主席身份加入會議,或已申請獲取為主席。

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

圖3 被邀接入會議流程 
  1. 被邀與會者側(cè)SDK收到會議來電請求,通過TsdkNotify對象中的onEvtConfIncomingInd()方法向UI上報會議來電事件,UI提示用戶會議來電。

     

    說明: 

    在會議來電通知攜帶的信息中,TsdkConference.callInfo中的對端號碼(getPeerNumber())一般默認(rèn)為會議服務(wù)的統(tǒng)一接入號碼,作為對用戶的提示意義不大,建議使用TsdkConference中的會議主題(getSubject())作為來電提示信息。

    代碼示例:
    //Java code
    public void handleConfIncomingInd(TsdkConference conference){
        if (null == conference)
        {
            return;
        }
        currentConference = conference;
        TsdkCall tsdkCall = conference.getCall();
        if (null != tsdkCall) {
            Session newSession = CallMgr.getInstance().getCallSessionByCallID(tsdkCall.getCallInfo().getCallId());
            if (null == newSession) {
                newSession = new Session(tsdkCall);
                CallMgr.getInstance().putCallSessionToMap(newSession);
            }
        }
        mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.CONF_INCOMING_TO_CALL_INCOMING, conference);
    }
    
     

     

  2. 被邀與會者側(cè)UI調(diào)用TsdkConference對象中的acceptConference()方法接聽會議來電。

     

    說明: 

    若用戶拒絕接聽會議來電,則通過調(diào)用TsdkConference對象中的rejectConference()方法拒接會議來電。

    代碼示例:
    //Java code
    public int acceptConf(boolean isVideo)
    {
        Log.i(TAG,  "accept conf.");
    
        if (null == currentConference)
        {
            Log.i(TAG,  "accept conf, currentConference is null ");
            return 0;
        }
    
        int result = currentConference.acceptConference(isVideo);
        if (result == 0) {
            Log.i(TAG,  "accept conf");
        }
    
        return result;
    }
    
     
    //Java code
    public int rejectConf()
    {
        Log.i(TAG,  "reject conf.");
    
        if (null == currentConference)
        {
            Log.i(TAG,  "reject conf, currentConference is null ");
            return 0;
        }
    
        int result = currentConference.rejectConference();
        if (result == 0) {
            currentConference = null;
        }
    
        return result;
    }
    
     

     

  3. SDK在收到服務(wù)器返回的加入會議響應(yīng)后,通過TsdkNotify對象中的onEvtJoinConfResult()方法向UI上報會議加入結(jié)果事件。并返回會議對象TsdkConference,后續(xù)會控時使用,此時, UI可跳轉(zhuǎn)至?xí)h界面。

     

    說明: 
    1. 在加入會議時,會請求會議權(quán)限,若請求失敗,則通過TsdkNotify對象中的onEvtRequestConfRightFailed()方法向UI上報會議權(quán)限請求失敗通知,UI提示申請會控權(quán)限失敗,若請求成功,則不上報。
    2. 若應(yīng)用程序是以多流的方式(SVC)成功加入會議,則此結(jié)果通知中會攜帶SVC信息,包含 isSvcConf (是否多流會議)、svcLabelCount(可使用的多流Label數(shù)) 和 svcLabel (多流Label 表),應(yīng)用程序應(yīng)保存多流“Label”信息,用于后繼流程中“綁定SVC視頻窗口”、"選看SVC與會者"和“設(shè)置SVC窗口和與會者關(guān)系”等操作。
    代碼示例:
    //Java code
    public void handleJoinConfResult(TsdkConference tsdkConference, TsdkCommonResult commonResult, TsdkJoinConfIndInfo tsdkJoinConfIndInfo
        Log.i(TAG, "handleJoinConfResult");
        if ((tsdkConference == null) || (commonResult == null)) {
            return;
        }
        int result = commonResult.getResult();
        if (result == 0)
        {
            this.currentConference = tsdkConference;
            this.memberList = null;
            this.self = null;
            TsdkCall tsdkCall = tsdkConference.getCall();
            if (null != tsdkCall) {
                Session newSession = CallMgr.getInstance().getCallSessionByCallID(tsdkCall.getCallInfo().getCallId());
                if (null == newSession) {
                    newSession = new Session(tsdkCall);
                    CallMgr.getInstance().putCallSessionToMap(newSession);
                }
                if (tsdkCall.getCallInfo().getIsVideoCall() == 1) {
                    VideoMgr.getInstance().initVideoWindow(tsdkCall.getCallInfo().getCallId());
                }
            }
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.JOIN_CONF_SUCCESS, tsdkConference.getHandle() + "");
        }
        else
        {
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.JOIN_CONF_FAILED, result);
        }
    }
    
     

     

  4. SDK收到會議狀態(tài)刷新通知,通過TsdkNotify對象中的onEvtInfoAndStatusUpdate()方法向UI上報會議信息及狀態(tài)更新事件,UI刷新會議狀態(tài)和成員列表。

     

    說明: 

    詳細(xì)流程參見會議信息及會議狀態(tài)更新描述。

     

注意事項

無。

匿名加入會議

描述

用戶在未注冊EC帳號時,通過匿名方式加入會議。

前提條件

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

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

圖4 匿名加入會議流程 
  1. UI調(diào)用TsdkConferenceManager對象中的joinConferenceByAnonymous()方法來匿名加入會議。

     

    說明: 

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

    代碼示例:
    //Java code
    //set local IP
    String localIpAddress = DeviceManager.getLocalIpAddress(false);
    TsdkLocalAddress localAddress = new TsdkLocalAddress(localIpAddress);
    TsdkManager.getInstance().setConfigParam(localAddress);
    
    TsdkConfAnonymousJoinParam anonymousParam = new TsdkConfAnonymousJoinParam();
    anonymousParam.setConfId(joinParam.getAnonymousConfId());
    anonymousParam.setConfPassword(joinParam.getConfPassword());
    anonymousParam.setDisplayName(joinParam.getDisplayName());
    anonymousParam.setServerAddr(joinParam.getServiceAddress());
    anonymousParam.setServerPort(Integer.valueOf(joinParam.getServicePort()));
    anonymousParam.setUserId(1);
    
    int result = TsdkManager.getInstance().getConferenceManager().joinConferenceByAnonymous(anonymousParam);
    
     

     

  2. SDK通過TsdkNotify對象中的onEvtGetTempUserResult()方法向UI上報臨時帳號獲取結(jié)果事件。

     

    說明: 

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

    代碼示例:
    //Java code
    public void handleGetTempUserResult(int userId, TsdkCommonResult result)
    {
        if(result == null){
            return;
        }
        mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.GET_TEMP_USER_RESULT, result);
    }
    
     

     

  3. SDK通過TsdkNotify對象中的onEvtJoinConfResult()方法向UI上報加入會議結(jié)果,后續(xù)和正常入會流程一樣。

     

    說明: 

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

    代碼示例:
    //Java code
    public void handleJoinConfResult(TsdkConference tsdkConference, TsdkCommonResult commonResult, TsdkJoinConfIndInfo tsdkJoinConfIndInfo
        Log.i(TAG, "handleJoinConfResult");
        if ((tsdkConference == null) || (commonResult == null)) {
            return;
        }
        int result = commonResult.getResult();
        if (result == 0)
        {
            this.currentConference = tsdkConference;
            this.memberList = null;
            this.self = null;
            TsdkCall tsdkCall = tsdkConference.getCall();
            if (null != tsdkCall) {
                Session newSession = CallMgr.getInstance().getCallSessionByCallID(tsdkCall.getCallInfo().getCallId());
                if (null == newSession) {
                    newSession = new Session(tsdkCall);
                    CallMgr.getInstance().putCallSessionToMap(newSession);
                }
                if (tsdkCall.getCallInfo().getIsVideoCall() == 1) {
                    VideoMgr.getInstance().initVideoWindow(tsdkCall.getCallInfo().getCallId());
                }
            }
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.JOIN_CONF_SUCCESS, tsdkConference.getHandle() + "");
        }
        else
        {
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.JOIN_CONF_FAILED, result);
        }
    }