1

I have a program written in Java that uses the Exchange Web Services (EWS) API to create appointments on users' calendars via impersonation. Now I want to create Lync meetings instead.

I thought I could just set the IsOnlineMeeting property to true and be done with it, but apparently this property is useless.

The next idea I had was to use the UCMA, but it seems like you can't call UCMA from Java.

I am looking into using UCWA, but it sounds like it doesn't support impersonation.

JasonMArcher
  • 14,195
  • 22
  • 56
  • 52
Samuel Edwin Ward
  • 6,526
  • 3
  • 34
  • 62
  • Was this problem solved? I have the exact same problem. – shwetaOnStack Mar 05 '16 at 06:31
  • @shwetaOnStack, we ended up creating a small .NET program using UCMA and calling it as a web service. It turned out we were able to get by without impersonation. Sorry this is probably not what you were hoping for. – Samuel Edwin Ward Mar 07 '16 at 17:44
  • Thanks for your reply. It turns out we don't need impersonation. What we need is schedule a meeting on behalf of an anonymous user. So we will use a service account to do that and will be UCWA for scheduling meetings – shwetaOnStack Mar 08 '16 at 05:40
  • @shwetaOnStack, I believe that will work. You probably need to make sure to call it in such a way that you get a new meeting URL for each meeting rather than reusing the same one; that's the only gotcha I can think of right now. – Samuel Edwin Ward Mar 09 '16 at 01:37

4 Answers4

3

Each user has a unique Lync meeting URL. Since UCWA doesn't support impersonation, your application will need to somehow get the user's credentials to sign in and get an OAuth token. Once you have that, you can call Lync to get the JoinUrl (same link as Richard). Once you have that JoinUrl, you can place that in the body of an appointment you make with EWS.

Michael Mainer
  • 3,387
  • 1
  • 13
  • 32
2

There is a Lync (UCWA) API to do this at http://msdn.microsoft.com/en-us/library/office/dn356790(v=office.15).aspx

This API does not support impersonation, so if you want to create a Lync meeting on behalf of another user, your application will need to somehow get the user's credentials to sign in and get an OAuth token. Once you have a token, you can call the API to get a JoinUrl.

If desired you can then place the JoinUrl for the meeting in the body of a calendar appointment you make with the EWS API.

Richard Neish
  • 8,414
  • 4
  • 39
  • 69
  • That looks promising, but is there a way with this API to create the meeting on behalf of a user whose password I don't have? – Samuel Edwin Ward Mar 26 '14 at 14:17
  • Impersonation is how you'd be able to create the meeting on behalf of the user, without signing in as the user. From [Exchange Impersonation vs. Delegate Access](http://blogs.msdn.com/b/exchangedev/archive/2009/06/15/exchange-impersonation-vs-delegate-access.aspx): An administrator is able to configure impersonation on behalf of a service account, and grant that service account impersonation rights over many mailboxes. Individual users cannot manage who does or does not have impersonation rights over their mailboxes. – Mimi Gentz Mar 26 '14 at 15:54
  • 1
    @MimiGentz, I was told I can't do impersonation with UCWA, and I think this is a UCWA API. Am I missing something? – Samuel Edwin Ward Mar 26 '14 at 19:22
0

You could call an external program using Runtime.exec().

Charlie
  • 8,530
  • 2
  • 55
  • 53
0

i've an experimental java api which can communicate with Lync 2013 UCWA. Here is the github page

mtorak
  • 21
  • 5