智慧服务,成就美好体验 项目咨询

主页 > 服务与支持 > 开发平台 > 客户端SDK参考 > Android Native SDK > 会议 渐进式会议

入门使用

渐进式会议

更新时间:2019-11-20

两方通话转会议

描述

用户在点对点通话过程中发起转会议,或邀请第三方(或更多)加入通话。

前提条件

  • 鉴权登录成功。
  • SIP号码已成功注册。
  • 会议环境参数已设置。
业务流程
图1 两方通话转会议流程 
  1. 会议发起方UI调用TsdkConferenceManager对象中的p2pTransferToConference()方法发起通话转会议,参数为TsdkBookConfInfo类和TsdkCall类。

     

    代码示例:
    //java code
    public int callTransferToConference(int call_id){
    
        Log.i(TAG, "callTransferToConference.");
    
        Session callSession = CallMgr.getInstance().getCallSessionByCallID(call_id);
        if (callSession == null)
        {
            Log.e(TAG, "call Session is null.");
            return -1;
        }
    
        TsdkCall tsdkCall =  callSession.getTsdkCall();
        if (tsdkCall == null)
        {
            Log.e(TAG, "call is invalid.");
            return -1;
        }
    
        TsdkBookConfInfo bookConfInfo = new TsdkBookConfInfo();
    
        bookConfInfo.setConfType(TsdkConfType.TSDK_E_CONF_INSTANT);
        bookConfInfo.setIsAutoProlong(1);
    
        bookConfInfo.setSubject(LoginMgr.getInstance().getAccount() + "'s Meeting");
        if (1 == tsdkCall.getCallInfo().getIsVideoCall()) {
            bookConfInfo.setConfMediaType(TSDK_E_CONF_MEDIA_VIDEO);
        }else {
            bookConfInfo.setConfMediaType(TSDK_E_CONF_MEDIA_VOICE);
        }
    
        bookConfInfo.setSize(2);
    
        List<TsdkAttendeeBaseInfo> attendeeList = new ArrayList<>();
        TsdkAttendeeBaseInfo confctrlAttendee = new TsdkAttendeeBaseInfo();
        //confctrlAttendee.setNumber(callInfo.getPeerNumber());
        confctrlAttendee.setRole(TsdkConfRole.TSDK_E_CONF_ROLE_ATTENDEE);
        attendeeList.add(confctrlAttendee);
    
        bookConfInfo.setAttendeeList(attendeeList);
        bookConfInfo.setAttendeeNum(attendeeList.size());
    
        //The other parameters are optional, using the default value
        //其他参数可选,使用默认值即可
        bookConfInfo.setLanguage(TsdkConfLanguage.TSDK_E_CONF_LANGUAGE_EN_US);
    
        int result = TsdkManager.getInstance().getConferenceManager().p2pTransferToConference(tsdkCall, bookConfInfo);
        if (result != 0) {
            Log.e(TAG, "call transfer to conference is return failed, result = " + result);
        }
        return result;
    }
    
     

     

  2. 发起方SDK在收到服务器返回的立即会议创建响应后,通过TsdkNotify对象中的onEvtBookConfResult()方法向向UI上报会议创建结果。
  3. 会议发起方SDK完成通话转会议处理,自动挂断原通话,通过TsdkNotify对象中的onEvtTransToConfResult()方法向UI上报通话转会议结果,携带原通话对象。

     

    说明: 

    若转会议失败,原通话仍存在,UI需要使用原通话对象恢复原通话界面;若转会议成功,原通话对象由SDK自动回收,此时返回的原通话对象可能为空。

     

  4. 通话双方SDK完成通话转会议处理,通过TsdkNotify对象中的onEvtJoinConfResult()方法加入会议结果,并返回会议对象TsdkConference,后续会控时使用。此时UI可跳转至会议界面。
  5. 所有与会者侧SDK收到会议状态刷新通知,通过TsdkNotify对象中的onEvtInfoAndStatusUpdate()方法向UI上报会议信息及会议状态刷新事件,UI刷新会议状态和成员列表。

注意事项

无。

升级会议

描述

  • “语音会议”升级至“语音+数据会议”。
  • “视频会议”升级至“视频+数据会议”。
  • 暂不支持“语音会议”升级至“语音+视频会议”。

前提条件

与会者通过主席身份加入会议,或已申请获取为主席。

业务流程

图2 升级会议流程 
  1. 会议发起方UI调用TsdkConference对象中的upgradeConference()方法升级为数据会议,参数为群组ID,SDK发送升级会议请求至服务器。

     

    代码示例:
    //Java code
    public int upgradeConf()
    {
        if (null == currentConference)
        {
            Log.e(TAG,  "upgrade conf failed, currentConference is null ");
            return -1;
        }
    
        int result =  currentConference.upgradeConference("");
        return result;
    }
    
     

     

  2. 发起方SDK在收到“升级为数据会议”请求的响应后, 通过TsdkNotify对象中的onEvtConfctrlOperationResult()方法向UI上报升级会议的会控操作结果。

     

    代码示例:
    //Java code
    public void handleConfctrlOperationResult(TsdkConference conference, TsdkConfOperationResult result)
    {
        Log.i(TAG, "handleConfctrlOperationResult");
        int ret = result.getReasonCode();
        if (null == conference || null == result)
        {
            return;
        }
        if (ret != 0)
        {
            Log.e(TAG, "conf ctrl operation failed: " + result.getDescription());
            return;
        }
        int confOperationType = result.getOperationType();
    }
    
     

     

  3. 会议发起方、接收方SDK收到会议成员列表刷新通知,通过TsdkNotify对象中的onEvtInfoAndStatusUpdate()方法向UI上报会议信息及状态刷新事件,UI刷新会议状态和成员列表。

     

    说明: 

    详细流程参见会议信息及会议状态更新描述。

     

  4. SDK自动获取数据会议入会参数,通过TsdkNotify对象中的onEvtGetDataconfParamResult()方法向UI上报数据会议入会参数获取结果,UI应调用TsdkConference对象中的joinDataConference()方法加入数据会议。

     

    代码示例:
    //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. SDK自动获取数据会议入会参数,通过TsdkNotify对象中的onEvtJoinDataConfResult()方法向UI上报加入数据会议结果,UI根据结果显示相应标识按钮。

     

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

     

注意事项

无。