third party call control using ocs2007 RRS feed

  • Question

  • Hi ,

            We would like to implement third party call control application in OCS which would do the following.


             - accept/answer the incoming calls

             - make another call to another user

             - conference both the calls.



               I achieved part of this by using UCMA api, like,

                - create a server application by registering an end point

                - accept the incoming session

                - participate in the call

                - make another call to another by using other session

                - now I could see both calls are alive


              but now I am not sure, how to do implement other services like, conferencing, transfer, hold/unhold etc.

              I am really not sure which API can solve my purpose, like

              OCS server api - only for server apps like archiving, filtering etc

              RTC client api - for first party call control to implement client operations


             - Correct me if I misunderstood


              so here I couldn't make out which one suites my requirement (third party call control - receive calls, make calls, conference/transfer/hold/unhold them etc)


             As UCMA provides high scalability and performance, that is definetly going to suite me, if I can use some API along with UCMA to provide above mentioned services.


              Any help would be greatly appreciated.


    - Seshu Kumar.

    Thursday, July 5, 2007 2:17 PM


All replies

  • As noted in some of your other posts, Keith lists some more info that might help you in this thread:



    Thursday, August 2, 2007 6:05 PM

    HI Seshu,

     Can you tell me that UCMA support the third party call control?


    You said u achieved  using UCMA api, like,

                - create a server application by registering an end point

                - accept the incoming session

                - participate in the call

                - make another call to another by using other session

                - now I could see both calls are alive


    So can we call this as Third Party Call Control API. Plz do reply. its very urgent.

    Monday, February 11, 2008 2:20 PM
  • Hi,

    Please refer to the BackToBackUserAgent class in UCMA 2.0 SDK Automatic Call Distributor sample. You can use the sample as basis to achieve 3rd party call control with external customers. Note that this method will not work with Office communicator but will enable your company to improve your extranet and customer relationship by adding Web Click To call capabilities.

    All you have to do is create a Web server using WCF and create a DTHML control or even SL (XAML) control.

    For each web click to call request received from the Web, your web server will establish an  AudioVideoCall with Mediation server by supplying the number of the cell phone supplied by the end-user initiating the click to call. The recommended way is to use (the following SIP URI format: sip:+1425333xxxx@microsoft.com;user=phone;ms-skip-rnl where +1425333xxxx is the phone number that the end-user supplied to make the click to call).

    It is also recommended for scalability purpose and  avoid expensive ICE connectivity checks to create  your own custom MediaProvider and start the call with is3rdpartycallcontroller to true (refer to callEstablishOptions). Your media provider will be responsible for sending back a black-hole answer in the ACK essentially disable the SDP media=audio item by supplying a random port but adding the c= line in this SDP media item). Mediation Server understands this semantic.

    Immediately after the AudioVideoCAll is established with mediation server. Initiate a "self transfer": this is a supervised transfer that you can invoke in the following way: avcall.BeginTransfer(avcall, OnTransferCompleted...); Note that the avcall instance in parameter is the same as the one for which the transfer operation is called.

    This operation will trigger MediationServer to make a call that will replaced the previously established call. Upon receiving this incoming call, construct a BackToBackUserAgent object with a destination AudioVideoCall that points towards the agent SIP URI or the ACD queue SIP URI that corresponds to the Web click to call request.

    Note that you are also able to supply contextual data about the caller or the request in the M/MIME body of the target AudioVideoCall in the BackToBackUserAgent. M/MIME bodies can be supplied in AudioVideoCall.BeginEstablish() CallEstablishOption.mimeparts property.

    Hope it helps

    Stephane Taine

    Sunday, April 19, 2009 3:18 AM
  • Hi Stephane,
    you answer is very helpful.Do you have working sample?
    Sunday, November 29, 2009 7:24 AM