分类: LINUX
2005-09-09 14:31:28
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的无人应答策略。