Programmatically Schedule/Create Skype for Business Meeting

user2337991 picture user2337991 · Jun 3, 2015 · Viewed 7.9k times · Source

I am working on a C#/console application that will schedule Skype for Business meetings and have not been able to find a clear answer on what is possible and what is the correct approach / sdk to use for doing so.

The application needs to:

  1. Create an lync / skype for business meeting at a future date with a single presenter who can bypass the lobby
  2. Retrieve the URL for joining that meeting for use in an email invitation to the other participants (outside the organization)

This would be running against on office 365 instance of Skype for Business. I have found a dizzying amount of information regarding the subject here in various SDKs that may / may not apply:

All seem to indicate they are not compatible with office 365 though, has anyone built a similar application or dealt with this before that could provide some advice?

Answer

Richard Taylor - Microsoft picture Richard Taylor - Microsoft · May 13, 2016

You can create a meeting using the Skype for Business User API (UCWA), which is now available for Skype for Business Online (Office 365).

Specifically, you need to make a POST request to the "myOnlineMeetings" resource:

POST https://lyncweb.contoso.com/ucwa/oauth/v1/applications/103...740/onlineMeetings/myOnlineMeetings HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer cwt=AAEB...buHc
[...]

{
  "attendanceAnnouncementsStatus":"Disabled",
  "description":"hey guys let's do a musical!",
  "subject":"holiday party",
  "attendees":["sip:[email protected]","sip:[email protected]"],
  "leaders":[]
}

In the response, you'll get a "joinURL" that you can give to participants:

HTTP/1.1 200 OK
[...]

{
  "accessLevel":"SameEnterprise",
  "entryExitAnnouncement":"Disabled",
  "attendees":["sip:[email protected]","sip:[email protected]"],
  "automaticLeaderAssignment":"Disabled",
  "description":"hey guys let's do a musical!",
  "expirationTime":"\/Date(136...000)\/",
  "leaders":[],
  "onlineMeetingId":"DED...367",
  "onlineMeetingUri":"sip:[email protected];gruu;opaque=app:conf:focus:id:DED...367",
  "onlineMeetingRel":"myOnlineMeetings",
  "organizerUri":"sip:[email protected]",
  "phoneUserAdmission":"Disabled",
  "lobbyBypassForPhoneUsers":"Disabled",
  "subject":"holiday party",
  "joinUrl":"https://meet.contoso.com/dana/DED...367","56de...4c83":"please pass this in a PUT request",
  "_links":{
    "self":{"href":"/ucwa/oauth/v1/applications/103...740/onlineMeetings/myOnlineMeetings/DEDX9367"},
    "onlineMeetingExtensions":{"href":"/ucwa/oauth/v1/applications/103...740/onlineMeetings/myOnlineMeetings/DED...367/extensions"}
  },
  "rel":"myOnlineMeeting",
  "etag":"891...351"
}

Note that the meeting doesn't have a scheduled time associated with it. It can be used at any time. You can of course place the URL in a calendar appointment (e.g. Outlook does this) but Skype for Business doesn't know about it.

Full details about the "myOnlineMeetings" request are here.