lynclync-2010rundll32uccapi

UCC API for Lync


I need software that will allow me to change the call forwarding in Lync's voip. No such software (other than Microsoft's own client) exists, so I need to write it myself. I have Visual Studio 2010, but it's unclear just which SDKs need to be installed... I seem to be in some dependency hell where when I reach the end of it all it's looking for "VS 2010 Express Edition" and I can't install.

Where do I need to start?

Also, I've been poking around in UccApi.dll a bit. Is there a single function there that sets up call forwarding? Would it be possible to just rundll32 this with a few parameters and sidestep the need to kludge together a crappy console app?


Solution

  • There's a great article discussing the differences between the different SDKs over on the CodeLync blog.

    I'm a bit unsure exactly what you're trying to do though. Selectively forward particular calls from one number to another? All calls from one number to another?

    If it's selective forwarding based on something that you want to control locally on the client (like, client doesn't answer within 5 rings, or clicks decline, or is inactive, or something) then you can do this with the Lync SDK.

    If it's more complicated, you might want to consider using a UCMA SDK application: where you run a service which will answer that number, and then decide where to transfer it to. That way you aren't dependent on it running on any particular client, it will run on a server somewhere. This is a good approach for call centre applications, where you want to maybe round-robin calls to available operators etc.

    Hope this helps.

    Edit following comment:

    Following on from your comment, it sounds like a UCMA application would be the way to go. With a UCMA app, you can give your application a specific SIP address and subscribe to any incoming calls to that SIP address. To manage the fact that the destination keeps changing, I would have something in the database that allows you to see what the destination should be, and then look that up on an incoming call, and perform a back-to-back transfer to the destination. (this also means that you can manage changing the destination in some other process, wherever it makes most sense, and also means you aren't hard-coding the destination addresses into the applications).

    As with most things, there are different ways to do this. For instance, you could (I think) use SIP message filtering to transfer the call as it comes in, but I think this would be a less visible solution.