Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Programmatically Schedule/Create Skype for Business Meeting

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:

  • Lync 2013 SDK
  • UCMA 4.0 SDK
  • Skype Web SDK

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?

like image 661
user2337991 Avatar asked Jun 03 '15 19:06

user2337991


1 Answers

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.

like image 126
Richard Taylor - Microsoft Avatar answered Sep 20 '22 13:09

Richard Taylor - Microsoft