多方通话
创建多方通话
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);//邀请多个人的方法
注:
- dwConfId是多方通话创建成功的会议Id号,dwCookie是UI界面设置的参数(开发者可自行设置)。客户端可以在以后通过调用 Mtc_ConfGetCookie 取出当初设置的 Cookie 值,进而匹配到自己的界面资源。
- dwConfId如果为大于0的值,接口调用成功,等待发送接口回调。
- 消息发送结果回调包括:
- 消息请求已经下发,等待服务器响应:
public void mtcConfCbOutgoing(int dwConfId) { //记录通话开始时间 //数据插入calls表,返回表id //数据插入到multiparty_call_members和multipary_calls表中 }
- 发送方连接到服务器:
public void mtcConfCbConned(int dwConfId) { //界面中发送方的状态显示为“已连接”,开始计时 //打开音频 }
- 消息请求已经下发,等待服务器响应:
同意加入多方通话
MtcConf.Mtc_ConfAcpt(dwConfId, dwCookie);
注:
- dwConfId是多方通话创建成功的会议Id号,dwCookie是UI界面设置的参数(开发者可自行设置)。客户端可以在以后通过调用 Mtc_ConfGetCookie 取出当初设置的 Cookie 值,进而匹配到自己的界面资源。
- dwConfId如果为大于0的值,接口调用成功,等待发送接口回调。
- 消息发送结果回调包括:
- 被邀请方加入到多方通话,本方收到回调:
public void mtcConfCbConned(int dwConfId) { //界面中发送方的状态栏开始计时 //打开音频 //更新calls表中的数据 }
拒绝加入多方通话
MtcConf.Mtc_ConfTerm(dwConfId, MtcCallConstants.EN_MTC_CALL_TERM_REASON_NORMAL);
注:
- dwConfId是多方通话创建成功的会议Id号
- dwConfId如果为大于0的值,接口调用成功,等待发送接口回调。
- 消息发送结果回调包括:
- 断开与服务器的连接:
public void mtcConfCbDisced(int dwConfId) { //更新calls表中的数据 }
终止多方通话
MtcConf.Mtc_ConfTerm(dwConfId, MtcCallConstants.EN_MTC_CALL_TERM_REASON_NORMAL);
注:
- dwConfId是多方通话创建成功的会议Id号
- dwConfId如果为大于0的值,接口调用成功,等待发送接口回调。
- 消息发送结果回调包括:
- 断开与服务器的连接:
public void mtcConfCbDisced(int dwConfId) { //更新calls表中的数据 //更新multiparty_call_members表中的数据 }
被动终止多方通话
发起方执行方法: MtcConf.Mtc_ConfTerm(dwConfId, MtcCallConstants.EN_MTC_CALL_TERM_REASON_NORMAL);
注:
- dwConfId是多方通话创建成功的会议Id号
- dwConfId如果为大于0的值,接口调用成功,等待发送接口回调。
- 消息发送结果回调包括:
- 被邀请方断开与服务器的连接:
public void mtcConfCbDisced(int dwConfId) { //更新calls表中的数据 }
多方通话中拉人
String pcUri = MtcUri.Mtc_UriFormatX("+8616000000336", false); MtcConf.Mtc_ConfIvtUser(dwConfId, pcUri);
注:
- dwConfId是多方通话创建成功的会议Id号
- dwConfId如果为大于0的值,接口调用成功,等待发送接口回调。
- 消息发送结果回调包括:
- 收到其他成员状态变化的回调:
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);
注:
- dwConfId是多方通话创建成功的会议Id号
- dwConfId如果为大于0的值,接口调用成功,等待发送接口回调。
- 消息发送结果回调包括:
- 服务器接受踢人操作回调:
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);
注:
- dwConfId是多方通话创建成功的会议 Id 号
- dwConfId如果为大于0的值,接口调用成功,等待发送接口回调。
- 消息发送结果回调包括:
- 断开与服务器的连接:
public void mtcConfCbDisced(int dwConfId) { //更新calls表中的数据 }
多方通话中异常出错处理
注:
- 当多方通话处理中异常出错时,消息结果回调包括:
- 多方通话异常错误回调:
public void mtcConfCbError(int dwConfId, int dwStatCode) { //使用终止多方通话接口 MtcConf.Mtc_ConfTerm(dwConfId, MtcCallConstants.EN_MTC_CALL_TERM_REASON_NORMAL); }
多方通话订阅和通知
SDK 向服务器发送 SIP SUBSCRIBE 订阅会议。
注:
- 界面会收到的结果回调包括:
- 发起方收到成员状态变化的回调:
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地址 }