IETF裡有關於sip終端控制的呼叫轉移說明文檔,已經出到第5稿(draft-ietf-sipping-clearcase/" target="_blank" >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的無人應答策略。