On Wed, Aug 19, 2009 at 4:01 PM, Dale Worley<[email protected]> wrote:
> 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


I agree we need this level of distinction if we want to do INVITE
style of third part call control a-la RFC3275.

In this case, perhaps it would suffice to return error for the second
call attempt if there are two concurrent call attempts ( after all the
agent can try again and besides we have no long term state information
about the state of any call in progress -- all we have is the state of
the ongoing call setup attempt).


Ranga

>
>
>



-- 
M. Ranganathan
_______________________________________________
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