Jesper Fabricius
2013-09-02 14:45:52 UTC
Hello,
I’m developing a TAPI application that must work like a simplified PABX itself: Besides the simple things of accepting/answering/dropping inbound calls and making outbound calls, it may put calls on hold and transfer calls.
However the later procedure of transferring calls leads me to the pesky challenge, since I’m not able to fulfill a basic requirement of the application: It must be possible to transfer back a transferred call!
When the incoming call is transferred to another phone (using lineBlindTransfer) TAPI loses any control with the call.
Following TB20 log shows what happens with my call handle when the transfer is completed (i.e.; the second phone picks up the call):
10:48.52.923 : Calling lineOpen
10:48.52.933 : lineOpen returned SUCCESS
10:49.34.743 : received LINE_CALLSTATE
device=x10266
cbInst=x0
param1=x2, OFFERING
param2=x0,
param3=x4, OWNER
lineGetCallInfo returned x0, hLine=x10299
10:49.40.692 : Calling lineAnswer
10:49.40.732 : lineAnswer returned x10255
10:49.40.732 : received LINE_REPLY
device=x0
cbInst=x0
param1=x10255,
param2=x0,
param3=x0,
10:49.42.284 : received LINE_CALLSTATE
device=x10266
cbInst=x0
param1=x100, CONNECTED
param2=x0,
param3=x0,
10:49.54.161 : Calling lineHold
10:49.54.171 : lineHold returned x10244
10:49.54.181 : received LINE_REPLY
device=x0
cbInst=x0
param1=x10244,
param2=x0,
param3=x0,
10:49.54.922 : received LINE_CALLSTATE
device=x10266
cbInst=x0
param1=x400, ONHOLD
param2=x0,
param3=x0,
10:50.14.551 : Calling lineBlindTransfer
10:50.14.561 : lineBlindTransfer returned x10222
10:50.14.561 : received LINE_REPLY
device=x0
cbInst=x0
param1=x10222,
param2=x0,
param3=x0,
10:50.21.861 : received LINE_CALLSTATE
device=x10266
cbInst=x0
param1=x4000, DISCONNECTED
param2=x1, NORMAL
param3=x0,
10:50.22.362 : received LINE_CALLSTATE
device=x10266
cbInst=x0
param1=x1, IDLE
param2=x0,
param3=x0,
10:50.22.362 : lineGetCallStatus returned SUCCESS
Used PABX: 3CX Phone System
Used TSP: Global IP Tel
So my question is: Is it EVER possible to keep the control of the call handle even after a transfer is completed, so it is possible to transfer it back?
Or should I rather use monitored transfer (lineSetupTransfer / lineDial / lineCompleteTransfer) instead? (Unfortunately my TSP does not support this)
I’m developing a TAPI application that must work like a simplified PABX itself: Besides the simple things of accepting/answering/dropping inbound calls and making outbound calls, it may put calls on hold and transfer calls.
However the later procedure of transferring calls leads me to the pesky challenge, since I’m not able to fulfill a basic requirement of the application: It must be possible to transfer back a transferred call!
When the incoming call is transferred to another phone (using lineBlindTransfer) TAPI loses any control with the call.
Following TB20 log shows what happens with my call handle when the transfer is completed (i.e.; the second phone picks up the call):
10:48.52.923 : Calling lineOpen
10:48.52.933 : lineOpen returned SUCCESS
10:49.34.743 : received LINE_CALLSTATE
device=x10266
cbInst=x0
param1=x2, OFFERING
param2=x0,
param3=x4, OWNER
lineGetCallInfo returned x0, hLine=x10299
10:49.40.692 : Calling lineAnswer
10:49.40.732 : lineAnswer returned x10255
10:49.40.732 : received LINE_REPLY
device=x0
cbInst=x0
param1=x10255,
param2=x0,
param3=x0,
10:49.42.284 : received LINE_CALLSTATE
device=x10266
cbInst=x0
param1=x100, CONNECTED
param2=x0,
param3=x0,
10:49.54.161 : Calling lineHold
10:49.54.171 : lineHold returned x10244
10:49.54.181 : received LINE_REPLY
device=x0
cbInst=x0
param1=x10244,
param2=x0,
param3=x0,
10:49.54.922 : received LINE_CALLSTATE
device=x10266
cbInst=x0
param1=x400, ONHOLD
param2=x0,
param3=x0,
10:50.14.551 : Calling lineBlindTransfer
10:50.14.561 : lineBlindTransfer returned x10222
10:50.14.561 : received LINE_REPLY
device=x0
cbInst=x0
param1=x10222,
param2=x0,
param3=x0,
10:50.21.861 : received LINE_CALLSTATE
device=x10266
cbInst=x0
param1=x4000, DISCONNECTED
param2=x1, NORMAL
param3=x0,
10:50.22.362 : received LINE_CALLSTATE
device=x10266
cbInst=x0
param1=x1, IDLE
param2=x0,
param3=x0,
10:50.22.362 : lineGetCallStatus returned SUCCESS
Used PABX: 3CX Phone System
Used TSP: Global IP Tel
So my question is: Is it EVER possible to keep the control of the call handle even after a transfer is completed, so it is possible to transfer it back?
Or should I rather use monitored transfer (lineSetupTransfer / lineDial / lineCompleteTransfer) instead? (Unfortunately my TSP does not support this)