Overview
The SipXcallController is a RESTful service for third party call control. It is bundled as a jar file and is loaded by the sipXrest container on initialization. It is invoked by HTTP Post to a specific URL.
The SipXcallController implements a third party call controller. The third party call controller works by either sending an INVITE to the calling party and subsequently sending that calling party a REFER to transfer the call to the called party (fire and forget) or by staying in the call path using the call flow 4 of RFC 3725.
The latter method allows subsequent control of the call such as being able to transfer the call after call setup.
The call controller tracks the state of the call in progress for a specified period of time after the call is placed and provides this status for quey by applications
Services
URI |
URL Pararameters (Optional) |
Methods |
Formats |
---|---|---|---|
callcontroller/{callingUser}/{calledUser} |
sipMethod=[REFER|INVITE] the default is REFER |
POST |
Initiates a call from the callingUser to the calledUser |
callcontroller/{callingUser}/{calledUser} |
All URL parameters are ignored |
GET |
Get the current call state for any ongoing call between callingUser and calledUser |
Syntax & Examples
There are two ways to initiate a call, either as calling party as below
curl -k -X POST -u {calling user}:{password} https://<host>:6666/callcontroller/{calling user}/{called user}?timeout=<seconds>
Or as an agent (third party)
curl -k -X POST -u (agent user name\}:\{agent password\} https://<host>:6666/callcontroller/<caller>/<callee>?agent=<agent user name\}\&timeout=<number of seconds>
The following example is to initiate a call between user1 and user2 as user1 who is the calling party.
curl -k -X POST -u user1:123 https://sipxtest.sipxtest.net:6666/callcontroller/user1/user2
An example to initiate a call between user1 and user2 as user3 who is a third party agent.
curl -k -X POST -u user3:123 https://sipxtest.sipxtest.net:6666/callcontroller/user1/user2?agent=user3\&timeout=30
Return result
On success, HTTP 200 OK returned. no message body.
On Failure, corresponding HTTP status code returned and more plain/text details contained in the message body, for example. "not valid user pin".
Query call setup progress
Syntax & Examples
Similar to "place a call", the query can be made either from calling party
curl -k -u \{calling user name\}:\{password\} https://<host>:6666/callcontroller/\{calling user name\}/\{user to be called\}?timeout=<number of seconds>
Or as an agent (third party)
curl -k -u (agent user name\}:\{agent password\} https://<host>:6666/callcontroller/<caller>/<callee>?agent=<agent user name\}\&timeout=<number of seconds>
- *- timeout is optional, by default is 30 seconds.*
Here is an example of how to query call setup progress for call between user1 and user2 as user1.
curl -k -u user1:\{password\} https://sipxtest.sipxtest.net:6666/callcontroller/user1/user2
Here is an example of how to query call setup progress for call between user1 and user2 via agent user3 from sipX trusted domain, no password required.
curl -k https://sipxtest.sipxtest.net:6666/callcontroller/user1/user2?agent=user3
Here is an example of how to query call setup progress for call between user1 and user2 via agent user3 from sipX's non-trusted domain.
curl -k -u user3:\{password\} -X GET https://sipxtest.sipxtest.net:6666/callcontroller/user1/user2?agent=user3
Return result from the query above
The result is XML based as the example below.
<?xml version="1.0" encoding="UTF-8"?> <status-lines xmlns="http://www.sipfoundry.org/sipX/schema/xml/call-status-00-00 "> <status> <timestamp>1259114103662</timestamp> <call-id>7959e447b88502416ee2477f3d36a480@12.23.34.45</call-id> <method>INVITE</method> <status-line>SIP/2.0 100 Trying</status-line> </status> <status> <timestamp>1259114103667</timestamp> <call-id>7959e447b88502416ee2477f3d36a480@12.23.34.45</call-id> <method>INVITE</method> <status-line>SIP/2.0 407 Proxy Authentication Required</status-line> </status> <status> <timestamp>1259114103678</timestamp> <call-id>7959e447b88502416ee2477f3d36a480@12.23.34.45</call-id> <method>INVITE</method> <status-line>SIP/2.0 100 Trying</status-line> </status> <status> <timestamp>1259114103841</timestamp> <call-id>7959e447b88502416ee2477f3d36a480@12.23.34.45</call-id> <method>INVITE</method> <status-line>SIP/2.0 180 Ringing</status-line> </status> </status-lines>