一、介绍
在SIP协议应用中,有一个常用的功能叫通话转接,用于将接通后的通话转给第三方接听处理。
二、原理及流程
转接是通过SIP协议的一个扩展请求方法REFER实现的。呼叫转接由RFC5589(Session Initiation Protocol (SIP) Call Control - Transfer)定义,而REFER方法则由RFC3515(The Session Initiation Protocol (SIP) Refer Method)定义。转接分为出席转接、半出席转接和盲转接三种,简称出席转、半出席转和盲转。
基本的成功转接(出席转接)流程如下:
上图来源为RFC5589
2.1 出席转接(attended transfer)
出席转接也称为咨询转,流程如下:
- 用户A呼叫用户B
- 用户B接听,与A进行通话
- 用户B通过按钮触发转接流程,将用户A保持住,此时用户A听到呼叫保持提示音(可能是一段音乐), 用户B听到拨号音,开始呼叫用户C
- 用户C振铃并接听,用户B和C开始通话
- 用户B点击转接(refer),用户A和用户C开始通话,而用户B被服务器挂断
2.2 半出席转接(Semi-Attended Transfer)
- 用户A呼叫用户B
- 用户B接听,与A进行通话
- 用户B通过按钮触发转接流程,将用户A保持住,此时用户A听到呼叫保持提示音(可能是一段音乐), 用户B听到拨号音,开始呼叫用户C
- 用户C振铃,用户B听见回铃音
- 用户B点击转接(refer)
- 用户A听见回铃音
- 用户C应答后,用户A和用户C开始通话
2.3 盲转接(blind transfer)
- 用户A呼叫用户B
- 用户B接听,与A进行通话
- 用户B通过按钮触发转接流程,将用户A保持住,此时用户A听到呼叫保持提示音(可能是一段音乐), 用户B输入用户C后转接(REFER),用户B挂机
- 用户C振铃
- 用户C应答后,用户A和用户C开始通话
三、实例解析
3.1 出席转接
说明:在第三方接通后,开始REFER转接
3.2 半出席转接
说明:在第三方振铃时,开始REFER转接
3.3 盲转
在呼叫第三方前,开始REFER转接
四、关键说明
- 转接是在双方通话接通后的行为,由REFER方法实现,主被叫双方都可以发起转接;而转移一般依靠302信令实现,只有被叫在收到来电后未接通前才能完成
- 在转接前,一般会将对方保持住,在保持过程中,一般由服务器给对方播放转接提示音
- 出席转的重要意义在于在转接第三方前,可以打通电话询问一下对方是否方便接听要转接的电话,因此也称为咨询转。常见于老板和秘书之间,这样秘书可以帮老板过滤掉不重要的电话
- 半出席转的意义在于,听见对方回铃音可以确认第三方号码正常,避免第三方号码占线而导致转接失败
- 盲转直接转给第三方,不关心成功与否
- REFER转接过程中伴有NOTIFY转接状态通知,转接发起方可以通过该消息确认是否转接成功或者恢复转接前通话
- 转接过程中,会给被转接方播放一段友好提示音,如”正在转接中,请稍后“,还会涉及到保持(hold)和解保持操作
- 转接可能会失败,是否恢复之前的通话取决于转接类型以及软件的具体实现