On Mon, 2009-08-17 at 14:58 -0400, M. Ranganathan wrote:
> After the scrum this morning and further discussions with Robert, I am
> revising some things with the call controller ( already):
> 
> 1. http PUT will create the call. The URL format will be
> https://domain:6666/callcontroller/method/agent/caller/callee?pin=xxxx
> 
> (The CallController,  like any good superbeast, will run on port 6666
> and I am not giving up that port - sorry Woof! )
> 
> 2. http GET will query about the call setup status. The URL format will be
> 
> https://domain:6666/callcontroller/caller/callee?pin=xxxx
> 
> The status will only be returned for the call setup. This is a "fire
> and forget" type of call controller. It uses REFER.  The status will
> be kept around only for the call setup time. i.e. it will disappear
> when the Dialog that created the status is terminated.

We need some way to distinguish several calls from the same caller to
the same callee.  This sounds sort of academic, but SIP went through
some evolution before people realized that it must handle multiple calls
between two endpoints in a fully generalized way.  Just think about two
users requesting a call between the same two endpoints...

Fortunately, this is straightforward to do in REST:  We set up a URL
that denotes the collection of calls between caller and callee:
http://host-port/.../caller/callee (omitting a number of elements that
serve orthogonal purposes).  We create a call by "POST
http://host-port/.../caller/callee";, which returns information about the
call, including the URI of the call, let's say
http://host-port/.../caller/callee/xyzzy or
http://host-port/.../xyzzy1234pqrs.  Then we can retrieve the status of
the call by "GET http://host-port/.../caller/callee/xyzzy";.  This is
fully RESTful by the authority of
http://en.wikipedia.org/wiki/Representational_State_Transfer.

Ranga tells us that Zimbra does not support POST, which is kinda strange
if it wants to support REST.  But checking back with Wikipedia gives a
solution:  A member resource can be created by doing a PUT to an
invented member resource URI:  "PUT
http://host-port/.../caller/callee/xyzzy";.  Then the server uses the
first parts of the path to create the call, and uses the last part of
the path as the name of the new call.  Of course, this requires that the
clients can generate non-colliding names, but random strings with
sufficient entropy will suffice.

Dale


_______________________________________________
sipx-dev mailing list [email protected]
List Archive: http://list.sipfoundry.org/archive/sipx-dev
Unsubscribe: http://list.sipfoundry.org/mailman/listinfo/sipx-dev
sipXecs IP PBX -- http://www.sipfoundry.org/

Reply via email to