Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Overview

The SipXcallController is a restful 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 defualt is INVITE the default is REFER

action=[call|transfer] the default action is call

target=<targetUser> the target user for the call transfer. If an ongoing call exists, the call is transferred to the targetUser. This is meaningful only if the call was previously started using INVITE.

timeout=<seconds> - the time for which the calling party is alerted before pickup. If the callng party does not pickup in that time period, the call is aborted.

agent=<agentUser> the user name of the agent that is placing the third party call. This defaults to the callingUser

subject=<subject> Subject of the call. Determines what goes into the SIP subject header of the initial call setup INVITE.

isForwardingAllowed=[true|false] default is false whether or not forwarding is allowed for the initial INVITE

resultCacheTime=<seconds> The amount of time for which to keep the call progress cache record in memory.

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

...

Code Block
curl  -k -X POST -u user3:123  https://sipxtest.sipxtest.net:6666/callcontroller/user1/user2?agent=user3\&amp;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

...

Code Block
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.

...