- 呼叫保持流程
通话主动Hold的一方,发INVITE消息,媒体流从sendrecv变为sendonly,对方返回200 ok,媒体流从sendrecv变为recvonly,双方ACK后,进入呼叫保持状态,没有通话的RTP包。
大致流程如下
UE A发送INVITE(Sendonly)到网络
网络发送INVITE(Sendonly)到UE B
UE发送200 OK(recvonly)到网络
网络发送200 OK(recvonly)到UE A
UE A发送ACK到网络
网络发送ACK到UE B
- 呼叫激活流程
从上述呼叫保持流程转到呼叫激活流程,激活端发INVITE消息,媒体流从Sendonly变为sendrecv,对方返回200 OK,媒体流从recvlony变为sendrecv,双方ACK后,恢复通话RTP包。
大致流程如下
UE A发送INVITE(sendrecv)到网络
网络发送INVITE(sendrecv)到UE B
UE发送200 OK(sendrecv)到网络
网络发送200 OK(sendrecv)到UE A
UE A发送ACK到网络
网络发送ACK到UE B
- 遇忙呼叫转移
被叫端busy并且设置了呼叫转移,网络会给主叫端返回181 call被转移的信息。
大致流程如下
UE A发送INVITE呼叫UE B
UE B返回486 busy到网络
网络返回181呼叫转移信息给UE A
网络发送INVITE呼叫到转移的UE C
UE C返回200 OK到网络
网络发送200 OK到UE A
UE A发送ACK到UE C
- 会议通话流程
根据运营商需求有两种方式:
可以直接发送REFER到会议电话中心,将UE D添加到会议电话并且UE D跟UE A保持通话状态,不需要Hold UE D;
也可以先Hold UE D,再发送REFER到会议电话中心,将UE D加入会议电话。
可参考前面文章
大致流程如下
UE A跟UE B通话
UE A跟UE C通话,Hold住跟UE B的通话
UE A Hold住跟UE C的通话
UE A发起INVITE到网络会议中心
网络返回200 OK(INVITE)到UE A
UE A发送ACK到网络
UE A发送refer(UE B)
UE B 返回202 Accepted到UE A
UE B发送NOTIFY(100 Trying)到UE A
UE A返回200 OK(NOTIFY)到UE B
再添加UE C到会议电话跟UE B相同的流程。
会议通话过程中再添加通话
UE A、B和C在进行会议通话
UE A Hold会议通话,呼叫UE D
UE A添加UE D到会议通话