0

Is it possible to use UCMA, or any Lync API, to create a server application that can answer voice calls on behalf of a Lync client user (and that Lync client endpoint)?

My use case is to be able to have a server application that can act on behalf of a user that is using the vanilla Lync desktop client. The service would auto-answer calls to the Lync user as well as perform various call control operations (hold, mute, disconnect, transfer, etc.) on behalf of the user. The goal is to avoid any customizations on the desktop, if possible.

Thus far, I've gotten events for incoming calls, but when my service answers them, it appears that the service itself is taking ownership of the call, not the Lync client. Any ideas?

Tim
  • 236
  • 3
  • 11

2 Answers2

1

There is no way from a central server to remotely tell the Lync client to remotely answer a call.

You can use the 'Lync Client SDK' to extend the Lync Client running on the desktop to take commands from you own server and answer a call.

The problems now are:

  • Determining when there is a call to answer. You can use the UMCA application for example to know when to tell when there is an incoming call. Another way to go is use a Lync Server SDK script/application, but that may be harder then the UCMA application.

  • How to determine that call to answer. There can be multiple calls ringing on the Lync Client and the Lync Client SDK doesn't give you much in the way of IDing the call. If it's always comes from the same callerid then you should be fine.

Shane Powell
  • 13,698
  • 2
  • 49
  • 61
1

From your question I assume you have an UCMA application running and it is already intercepting calls to your user.

Now, Lync class are point to point, meaning there are only two endpoints in the call. In this case, since you answer the call with your UCMA application, the caller and your endpoint.

The service would auto-answer calls to the Lync user as well as perform various call control operations (hold, mute, disconnect, transfer, etc.) on behalf of the user.

The difficult part here is "Auto-Answer". All other actions can be done by not actually answering the call, but creating a back-to-back call (Example says UCMA3 but still valid even for Skype for Business).

You will position your application in the middle between the Caller and the original target, and you can then send control messages to hold, mute, transfer etc, seemingly on behalf of the other side. The audio will still go peer to peer.

However, your requirement to automatically answer the call means that your endpoint needs to answer, and then hope to get the original target user on the line. How to implement this depends on your exact needs. You could answer the call in UCMA, create a new call to the target and transfer the original call, or you could place all 3 endpoints in a conference and work from there.

Either way you do it, none of these solutions require a change on the client's machine.

w5l
  • 5,341
  • 1
  • 25
  • 43