Discussion:
Can the Call Control Web API be used to transfer calls? (sipXecs 4.6)
Alan Worstell
2012-11-29 22:43:05 UTC
Permalink
Hello,
I was able to use the Call Control Web API through the REST api to place
calls in sipXecs 4.6 (Thanks again, Mircea!) Now I am curious if the
same can be done to transfer existing calls? Say, User1 is on a call
with an outside person, I would send an API request to transfer User1's
call to User2's phone.
Is this possible?

Thanks,
--
Alan Worstell
A1 Networks - Systems Administrator
VTSP, dCAA, LPIC-1, Linux+, CLA, DCTS
(707)570-2021 x204
For support issues please email ***@a-1networks.com or call 707-703-1050
Trevor L Benson
2012-11-30 06:41:47 UTC
Permalink
Hi Alan,
We had an attempt to implement call transfering through callcontroller, but unfortunatelly this does not work properly. We will give another try post 4.6 to make this working properly
Here is how it should be done to accomplish a transfer (does not properly work)
1)user1 calls user2 through callcontroller using INVITE
callcontroller/user1/user2?sipMethod=INVITE (http://wiki.sipfoundry.org/pages/viewpage.action?pageId=4882956)
/callcontroller/user1/user2?target=user3&action=transfer&agent=user1
3)original call between user1 and user2 should automatically drop
1)user1 calls user 2 through callcontroller using REFER
/callcontroller/user1/user2
2)user1 places a call between user2 and user3
callcontroller/user2/user3?agent=user1&timeout=30&isForwardingAllowed=true
3)original call between user1 and user2 will be put on hold
Mircea,

Does the difference between having two calls between internal users directly between endpoints, and a call with one internal user connected via sipXbridge to an external number make any difference in the ability to transfer? For the specific scenario we are looking at it would be almost entirely calls between an internal user and an external number via the sipXbridge.


Thanks,
Trevor Benson
Trevor L Benson
2012-11-30 23:02:34 UTC
Permalink
Thanks,
Trevor Benson, Network Engineer
A1 Networks
Voice: 707-703-1041
Post by Trevor L Benson
Hi Alan,
We had an attempt to implement call transfering through callcontroller, but unfortunatelly this does not work properly. We will give another try post 4.6 to make this working properly
Here is how it should be done to accomplish a transfer (does not properly work)
1)user1 calls user2 through callcontroller using INVITE
callcontroller/user1/user2?sipMethod=INVITE (http://wiki.sipfoundry.org/pages/viewpage.action?pageId=4882956)
/callcontroller/user1/user2?target=user3&action=transfer&agent=user1
3)original call between user1 and user2 should automatically drop
1)user1 calls user 2 through callcontroller using REFER
/callcontroller/user1/user2
2)user1 places a call between user2 and user3
callcontroller/user2/user3?agent=user1&timeout=30&isForwardingAllowed=true
3)original call between user1 and user2 will be put on hold
Mircea,
Does the difference between having two calls between internal users directly between endpoints, and a call with one internal user connected via sipXbridge to an external number make any difference in the ability to transfer? For the specific scenario we are looking at it would be almost entirely calls between an internal user and an external number via the sipXbridge.
Forgot to ask if you were referring to sipX 4.4 in general does not support the RFC 3725 Call Flow IV from the wiki? Or was this comment specific to the sipX 4.6 release?

I kind of made the assumption that (in sipX 4.4) RFC 3725 could have been handled by the sipXbridge and that with an internal extension and external call on the bridge this would function normally by asking the sipXbridge to handle the "transfer" from one internal extension to another internal extension. It appears that if the call was through the sipXbridge this would be a logical point to handle the transfers from a callcontroller perspective as the sipXbridge provides the B2BUA required for Call Flow IV, it just happens to handle the media session in addition to the signaling. It would obviously have its limitations in any call that the sipXbridge was not handling signaling for would not allow transfer. I could see that an internal to internal call could fail transfers via callcontroller if the endpoints normally take over the signaling and media directly after talking to sipXproxy/registrar. So internal calls would be problematic between endpoints handling their own signaling and media without a separate callcontroller.

I still think this might provide most people with a viable solution if the limitations were outlined in the wiki as to what type of calls could or could not be transferred. Obviously if an entirely separate call controller is created and the URI Parameters provide a way to request the callcontroller stay in the path this would be a waste of effort.

Thoughts?

Thanks,
Trevor Benson
Mircea Carasel
2012-11-30 06:20:43 UTC
Permalink
On Fri, Nov 30, 2012 at 12:43 AM, Alan Worstell
Post by Alan Worstell
Hello,
I was able to use the Call Control Web API through the REST api to place
calls in sipXecs 4.6 (Thanks again, Mircea!) Now I am curious if the
same can be done to transfer existing calls? Say, User1 is on a call
with an outside person, I would send an API request to transfer User1's
call to User2's phone.
Is this possible?
Hi Alan,

We had an attempt to implement call transfering through callcontroller, but
unfortunatelly this does not work properly. We will give another try post
4.6 to make this working properly

Here is how it should be done to accomplish a transfer (does not properly
work)

1)user1 calls user2 through callcontroller using INVITE
callcontroller/user1/user2?sipMethod=INVITE (
http://wiki.sipfoundry.org/pages/viewpage.action?pageId=4882956)
2)user 1 would like to transfer the call to user3 so that user2 and user3
to start talking:
/callcontroller/user1/user2?target=user3&action=transfer&agent=user1
3)original call between user1 and user2 should automatically drop

However what you can do is to just place a call from user1 to user 3 and
the original call between user1 and user2 will be put on hold:
This does not respect SIP transfer specifications, but does work, and maybe
it is useful to you:
1)user1 calls user 2 through callcontroller using REFER
/callcontroller/user1/user2
2)user1 places a call between user2 and user3
callcontroller/user2/user3?agent=user1&timeout=30&isForwardingAllowed=true
3)original call between user1 and user2 will be put on hold

Hope this helps,
Mircea
Post by Alan Worstell
Thanks,
--
Alan Worstell
A1 Networks - Systems Administrator
VTSP, dCAA, LPIC-1, Linux+, CLA, DCTS
(707)570-2021 x204
_______________________________________________
sipx-users mailing list
List Archive: http://list.sipfoundry.org/archive/sipx-users/
Joegen Baclor
2012-12-03 13:17:49 UTC
Permalink
Post by Alan Worstell
Hello,
I was able to use the Call Control Web API through the REST api to place
calls in sipXecs 4.6 (Thanks again, Mircea!) Now I am curious if the
same can be done to transfer existing calls? Say, User1 is on a call
with an outside person, I would send an API request to transfer User1's
call to User2's phone.
Is this possible?
Thanks,
By existing call, you mean calls initiated by call controller or
existing call as in any call that is active in sipX? For call initiated
by call controller, you can simply send a REFER to whoever you want to
transfer between the legs you have control over. The limitation of
REFER in this case is once the transfer is initiated, the call
controller will lose a handle on the resulting call.
Alan Worstell
2012-12-04 16:24:28 UTC
Permalink
Post by Joegen Baclor
By existing call, you mean calls initiated by call controller or
existing call as in any call that is active in sipX? For call
initiated by call controller, you can simply send a REFER to whoever
you want to transfer between the legs you have control over. The
limitation of REFER in this case is once the transfer is initiated,
the call controller will lose a handle on the resulting call.
Hi Joegen,
I am referring to calls initiated via the Call Controller API through
the REST API. Is this actually possible? Mircea Carasel said on 11/29
that this function does not currently work.

Thanks,

Alan Worstell
A1 Networks - Systems Administrator
VTSP, dCAA, LPIC-1, Linux+, CLA, DCTS
(707)570-2021 x204
For support issues please email ***@a-1networks.com or call 707-703-1050
Joegen Baclor
2012-12-05 02:30:25 UTC
Permalink
Post by Alan Worstell
Post by Joegen Baclor
By existing call, you mean calls initiated by call controller or
existing call as in any call that is active in sipX? For call
initiated by call controller, you can simply send a REFER to whoever
you want to transfer between the legs you have control over. The
limitation of REFER in this case is once the transfer is initiated,
the call controller will lose a handle on the resulting call.
Hi Joegen,
I am referring to calls initiated via the Call Controller API through
the REST API. Is this actually possible? Mircea Carasel said on 11/29
that this function does not currently work.
Thanks,
Alan Worstell
A1 Networks - Systems Administrator
VTSP, dCAA, LPIC-1, Linux+, CLA, DCTS
(707)570-2021 x204
REFER will work with the current API. The limitation stands. Once you
do the transfer using rest, the call controller loses handle of the call
from that point on.

Loading...