【 tulaoshi.com - Linux 】
IETF里有关于sip终端控制的呼叫转移说明文档,已经出到第5稿(draft-ietf-sipping-cc-transfer-05)了。相信现在大部分的sip终端应该都是按照该文档的流程来做的。只是如果把它实现到ipbx的应用里去的时候,接线员作转接时要区分basic transfer和attended transfer,未免有些不符合习惯。
考虑可以通过引入服务器,按照basic transfer的流程,稍作修改就能统一basic transfer和attended transfer的操作。
流程描述如下:
Transferor FeatureServer Transferee Transfer | | | Target | INVITE F1 | | Call-ID:1 |<------------------------------------------------| | | 200 OK F2 | | | Call-ID:1 |------------------------------------------------>| | | ACK | | | Call-ID:1 |<------------------------------------------------| | | INVITE (hold) | | | Call-ID:1 |------------------------------------------------>| | | 200 OK | | | Call-ID:1 |<------------------------------------------------| | | ACK | | | Call-ID:1 |------------------------------------------------>| | | REFER F3 (Target-Dialog:1) | | Call-ID:1 |-------------------> | | | | 202 Accepted | | | Call-ID:1 |<------------------- | | | | NOTIFY (100 Trying) F4 | | Call-ID:1 |<-------------------| | | | 200 OK | | | Call-ID:1 |------------------->| | | | INVITE F5 | | Call-ID:2 | |------------------------------------------------->| | | 180 ALERTING/ 200 OK | | Call-ID:2 | |<--------------------------------------------------| | NOTIFY (180 ALERTING)/ INVITE F6 | | Call-ID:1 |<-------------------| | | | 200 OK | | | Call-ID:1 |------------------->| | | | BYE | | | Call-ID:1 |------------------->| | | | 200 OK | | | Call-ID:1 |<-------------------| | | | | INVITE | | Call-ID:1 | |--------------------------->| | | | 200 OK | | Call-ID:1 | |<---------------------------| | | | INVITE | | Call-ID:2 | |-------------------------------------------------->| | | | 200 OK | Call-ID:2 | |<--------------------------------------------------|
当Transferor收到NOTIFY 180 ALERTING的时候,可以选择挂机(basic transfer)或者等待Transfer Target摘机后通话(attended transfer)。
如果Transfer Target无人应答,首先是应用Transfer Target的无人应答策略,其次是应用FeatureServer的无人应答策略。