skypeucmatrusted-application

Getting the status of all calls in UCMA - Skype


I am new to the Lync development world. I had a simple requirement to get the status of all the Lync calls posted to my API, which are ongoing on the Lync Server. In short, I need event hooks for the calls.

I see that UCMA is typically used to route the calls after IVR, so I assume that getting just the status of all the calls should not be a problem but could not find any documentation around it. I also looked into Trusted Application API, but could not find any service that would give me hooks for the status of all the calls.

If these status can be sent from Skype client, that would be fine as well but I don't need to use the Client SDK in my code, i just want some event hooks for the calls.

Please let me know if this is possible.


Solution

  • First we need to define what these things are:

    UCMA: Sip Endpoint Library for Lync. i.e. It allows you to provide a "Endpoint" where calls can end up. For a specific endpoint you will get sip call events like incoming call, call answered (at your endpoint only), etc.

    Lync Client: Remote control Library for the Lync Client. i.e. it is used to control a running Lync Client.

    So if you want track calls between being handled by a UCMA endpoint, then you need to handle the calls and track them then yes, handle the call using the normal call handling and track them.

    If you want to track calls that are processed only a specific Lync client then you use the Lync Client API to track them. It's easy to hook into the conversation manager and get events on when calls come and go.

    If you want to track all live calls for a specific Lync user (or users) is when it gets real hard fast. You need to write a Lync Server SDK application that runs as a SIP Proxy on all the FrontEnd servers the user is homed to. Your understanding of SIP needs to be very good in order to do this. Also it's not portable to Office365. You can do "simple" tracking but you will get lots of situations where there are calls for a user that you either misunderstand (direct DDI calls for example) or calls to a user that isn't the actual user (conference calls owned by the user for example).

    Also to track live calls I believe you can also use the Skype SDN (Software Defined Networking) API. I've never used this API so I don't know how involved it is.

    If you just want to know the list of calls for Lync User and they don't need to be "live" then you can use the Call detail recording (CDR) database to track calls after they happen.

    Those are all the options that I know of in Lync/Skype for Business.