Docs
Resources
Tools
News
to top

RCS

多方通话

创建多方通话

int dwConfId = MtcConf.Mtc_ConfCreate();//获取多方通话的会议ID
int dwCookie = 100;
int dwPartpLstId = MtcPartp.Mtc_PartpLstCreate(MtcPartpConstants.EN_MTC_PARTP_LST_URI_LST);
MtcPartp.Mtc_PartpLstAddPartp(dwPartpLstId, "", MtcUri.Mtc_UriFormatX("+8616000000336", false));
MtcPartp.Mtc_PartpLstAddPartp(dwPartpLstId, "", MtcUri.Mtc_UriFormatX("+8616000000337", false));  
MtcConf.Mtc_ConfIvtUserLst(dwConfId, dwCookie, dwPartpLstId);//邀请多个人的方法

注:

  1. dwConfId是多方通话创建成功的会议Id号,dwCookie是UI界面设置的参数(开发者可自行设置)。客户端可以在以后通过调用 Mtc_ConfGetCookie 取出当初设置的 Cookie 值,进而匹配到自己的界面资源。
  2. dwConfId如果为大于0的值,接口调用成功,等待发送接口回调。
  3. 消息发送结果回调包括:
    • 消息请求已经下发,等待服务器响应:
      public void mtcConfCbOutgoing(int dwConfId) {
      //记录通话开始时间
      //数据插入calls表,返回表id
      //数据插入到multiparty_call_members和multipary_calls表中
      }
    • 发送方连接到服务器:
      public void mtcConfCbConned(int dwConfId) {
      //界面中发送方的状态显示为“已连接”,开始计时
      //打开音频
      }

同意加入多方通话

MtcConf.Mtc_ConfAcpt(dwConfId, dwCookie);

注:

  1. dwConfId是多方通话创建成功的会议Id号,dwCookie是UI界面设置的参数(开发者可自行设置)。客户端可以在以后通过调用 Mtc_ConfGetCookie 取出当初设置的 Cookie 值,进而匹配到自己的界面资源。
  2. dwConfId如果为大于0的值,接口调用成功,等待发送接口回调。
  3. 消息发送结果回调包括:
  • 被邀请方加入到多方通话,本方收到回调:
    public void mtcConfCbConned(int dwConfId) {
    //界面中发送方的状态栏开始计时
    //打开音频
    //更新calls表中的数据
    }

拒绝加入多方通话

MtcConf.Mtc_ConfTerm(dwConfId, MtcCallConstants.EN_MTC_CALL_TERM_REASON_NORMAL);

注:

  1. dwConfId是多方通话创建成功的会议Id号
  2. dwConfId如果为大于0的值,接口调用成功,等待发送接口回调。
  3. 消息发送结果回调包括:
  • 断开与服务器的连接:
    public void mtcConfCbDisced(int dwConfId) {
    //更新calls表中的数据
    }

终止多方通话

MtcConf.Mtc_ConfTerm(dwConfId, MtcCallConstants.EN_MTC_CALL_TERM_REASON_NORMAL);

注:

  1. dwConfId是多方通话创建成功的会议Id号
  2. dwConfId如果为大于0的值,接口调用成功,等待发送接口回调。
  3. 消息发送结果回调包括:
  • 断开与服务器的连接:
    public void mtcConfCbDisced(int dwConfId) {
    //更新calls表中的数据
    //更新multiparty_call_members表中的数据
    }

被动终止多方通话

发起方执行方法: MtcConf.Mtc_ConfTerm(dwConfId, MtcCallConstants.EN_MTC_CALL_TERM_REASON_NORMAL);

注:

  1. dwConfId是多方通话创建成功的会议Id号
  2. dwConfId如果为大于0的值,接口调用成功,等待发送接口回调。
  3. 消息发送结果回调包括:
  • 被邀请方断开与服务器的连接:
    public void mtcConfCbDisced(int dwConfId) {
    //更新calls表中的数据
    }

多方通话中拉人

String pcUri = MtcUri.Mtc_UriFormatX("+8616000000336", false);
MtcConf.Mtc_ConfIvtUser(dwConfId, pcUri);

注:

  1. dwConfId是多方通话创建成功的会议Id号
  2. dwConfId如果为大于0的值,接口调用成功,等待发送接口回调。
  3. 消息发送结果回调包括:
  • 收到其他成员状态变化的回调:
    public void mtcConfCbPtptUpdt(int dwConfId, int dwStatCode, String uri) {
    //dwConfId是多方通话创建成功的会议Id号
    //dwStatCode状态码枚举(MtcConfConstants类中定义)
      public final static int EN_MTC_CONF_PARTP_STATE_PENDING = 0; /**<@brief Conference participant pending. */
      public final static int EN_MTC_CONF_PARTP_STATE_DIALINGIN = EN_MTC_CONF_PARTP_STATE_PENDING + 1; /**<@brief Conference participant dialing in. */
      public final static int EN_MTC_CONF_PARTP_STATE_DIALINGOUT = EN_MTC_CONF_PARTP_STATE_DIALINGIN + 1; /**<@brief Conference participant dialing out. */
      public final static int EN_MTC_CONF_PARTP_STATE_ALERTING = EN_MTC_CONF_PARTP_STATE_DIALINGOUT + 1; /**<@brief Conference participant alerting. */
      public final static int EN_MTC_CONF_PARTP_STATE_CONNED = EN_MTC_CONF_PARTP_STATE_ALERTING + 1; /**<@brief Conference participant connected. */
      public final static int EN_MTC_CONF_PARTP_STATE_ONHOLD = EN_MTC_CONF_PARTP_STATE_CONNED + 1; /**<@brief Conference participant onhold. */
      public final static int EN_MTC_CONF_PARTP_STATE_DISCING = EN_MTC_CONF_PARTP_STATE_ONHOLD + 1; /**<@brief Conference participant disconnecting. */
      public final static int EN_MTC_CONF_PARTP_STATE_DISCED = EN_MTC_CONF_PARTP_STATE_DISCING + 1; /**<@brief Conference participant disconnected. */
    //uri是对应参与人的uri地址
    }
  • 被邀请方收到回调:
    public void mtcConfCbIncoming(int dwConfId) {
    //解决被邀请方长时间不接听的一些问题
    MtcConf.Mtc_ConfAlert(dwConfId, dwCookie);
    //获取本人号码的方法
    MtcCliDb.Mtc_CliDbGetUserName();
    //获取chairman的方法:
    MtcString ppcDispName = new MtcString();
    MtcString ppcUri = new MtcString();
    MtcConf.Mtc_ConfGetInitiatorUri(dwConfId, ppcDispName, ppcUri);
    String chairmanNum = MtcUri.Mtc_UriGetUserPart(ppcUri.getValue());
    //数据插入到calls表和multipary_calls表中
    }

多方通话中踢人

String pcUri = MtcUri.Mtc_UriFormatX("+8616000000336", false);
MtcConf.Mtc_ConfKickUser(dwConfId, pcUri);

注:

  1. dwConfId是多方通话创建成功的会议Id号
  2. dwConfId如果为大于0的值,接口调用成功,等待发送接口回调。
  3. 消息发送结果回调包括:
  • 服务器接受踢人操作回调:
    public void mtcConfCbKickAcpt(int dwConfId, String uri) {
    }
  • 发起方收到成员状态变化的回调:
    public void mtcConfCbPtptUpdt(int dwConfId, int dwStatCode, String uri) {
    //dwConfId是多方通话创建成功的会议Id号
    //dwStatCode状态码枚举(MtcConfConstants类中定义)
      public final static int EN_MTC_CONF_PARTP_STATE_PENDING = 0; /**<@brief Conference participant pending. */
      public final static int EN_MTC_CONF_PARTP_STATE_DIALINGIN = EN_MTC_CONF_PARTP_STATE_PENDING + 1; /**<@brief Conference participant dialing in. */
      public final static int EN_MTC_CONF_PARTP_STATE_DIALINGOUT = EN_MTC_CONF_PARTP_STATE_DIALINGIN + 1; /**<@brief Conference participant dialing out. */
      public final static int EN_MTC_CONF_PARTP_STATE_ALERTING = EN_MTC_CONF_PARTP_STATE_DIALINGOUT + 1; /**<@brief Conference participant alerting. */
      public final static int EN_MTC_CONF_PARTP_STATE_CONNED = EN_MTC_CONF_PARTP_STATE_ALERTING + 1; /**<@brief Conference participant connected. */
      public final static int EN_MTC_CONF_PARTP_STATE_ONHOLD = EN_MTC_CONF_PARTP_STATE_CONNED + 1; /**<@brief Conference participant onhold. */
      public final static int EN_MTC_CONF_PARTP_STATE_DISCING = EN_MTC_CONF_PARTP_STATE_ONHOLD + 1; /**<@brief Conference participant disconnecting. */
      public final static int EN_MTC_CONF_PARTP_STATE_DISCED = EN_MTC_CONF_PARTP_STATE_DISCING + 1; /**<@brief Conference participant disconnected. */
    //uri是对应参与人的uri地址
    }
  • 被邀请方收到回调:
    public void mtcConfCbDisced(int dwConfId) {
    //之前与服务器断开连接相同操作
    }

多方通话中取消操作

MtcConf.Mtc_ConfTerm(dwConfId, MtcCallConstants.EN_MTC_CALL_TERM_REASON_NORMAL);

注:

  1. dwConfId是多方通话创建成功的会议 Id 号
  2. dwConfId如果为大于0的值,接口调用成功,等待发送接口回调。
  3. 消息发送结果回调包括:
  • 断开与服务器的连接:
    public void mtcConfCbDisced(int dwConfId) {
    //更新calls表中的数据
    }

多方通话中异常出错处理

注:

  1. 当多方通话处理中异常出错时,消息结果回调包括:
  • 多方通话异常错误回调:
    public void mtcConfCbError(int dwConfId, int dwStatCode) {
    //使用终止多方通话接口
    MtcConf.Mtc_ConfTerm(dwConfId, MtcCallConstants.EN_MTC_CALL_TERM_REASON_NORMAL);
    }

多方通话订阅和通知

SDK 向服务器发送 SIP SUBSCRIBE 订阅会议。

注:

  1. 界面会收到的结果回调包括:
  • 发起方收到成员状态变化的回调:
    public void mtcConfCbPtptUpdt(int dwConfId, int dwStatCode, String uri) {
    //dwConfId是多方通话创建成功的会议Id号
    //dwStatCode状态码枚举(MtcConfConstants类中定义)
      public final static int EN_MTC_CONF_PARTP_STATE_PENDING = 0; /**<@brief Conference participant pending. */
      public final static int EN_MTC_CONF_PARTP_STATE_DIALINGIN = EN_MTC_CONF_PARTP_STATE_PENDING + 1; /**<@brief Conference participant dialing in. */
      public final static int EN_MTC_CONF_PARTP_STATE_DIALINGOUT = EN_MTC_CONF_PARTP_STATE_DIALINGIN + 1; /**<@brief Conference participant dialing out. */
      public final static int EN_MTC_CONF_PARTP_STATE_ALERTING = EN_MTC_CONF_PARTP_STATE_DIALINGOUT + 1; /**<@brief Conference participant alerting. */
      public final static int EN_MTC_CONF_PARTP_STATE_CONNED = EN_MTC_CONF_PARTP_STATE_ALERTING + 1; /**<@brief Conference participant connected. */
      public final static int EN_MTC_CONF_PARTP_STATE_ONHOLD = EN_MTC_CONF_PARTP_STATE_CONNED + 1; /**<@brief Conference participant onhold. */
      public final static int EN_MTC_CONF_PARTP_STATE_DISCING = EN_MTC_CONF_PARTP_STATE_ONHOLD + 1; /**<@brief Conference participant disconnecting. */
      public final static int EN_MTC_CONF_PARTP_STATE_DISCED = EN_MTC_CONF_PARTP_STATE_DISCING + 1; /**<@brief Conference participant disconnected. */
    //uri是对应参与人的uri地址
    }
Juphoon © 2015 中文(简体)
关于我们 JusTalk 开发人员 招聘 隐私政策