3

I want to get attendance reports for historic online meetings in MS Teams (e.g. of the last day) that where created via UI (not via API). I have a client (service) with the required permissions to do the Graph API calls. The client runs in application context not in context of an user.

My first idea was to get a list of online meetings by using this request:

GET /v1.0/communications/onlineMeetings/

But it's not a valid request without the $filter parameter.

Other ways (e.g. via a calendar of an user) didn't work too. It seams that there is no way to access meetings that where created by UI. Am I right?

Is there another way to find all online meeting ids? Or just to directly access the attendance reports?

Thank you for your help.

budoka
  • 31
  • 2
  • I'm struggling with the same problem. It seems that a date range is also inadmissible as a filter. Using any of [videoTeleconferenceId, meeting ID, joinWebURL, or joinMeetingId] seems to work. The joinWebURL exists in any Calendar event with an associated OnlineMeeting, so presumably one solution is to search for all calendar events with – Dan Locks Jul 12 '23 at 23:03

1 Answers1

0

I'm struggling with a similar problem. I did not find a way to get meetingIDs directly. However there appear to be 4 unique properties for the onlineMeeting object. They are the ones listed in https://learn.microsoft.com/en-us/graph/api/onlinemeeting-get[GET onlineMeeting documentation]1. The filters are listed as examples, but AFAICT are a definitive list:

  • videoTeleconferenceId
  • meeting ID
  • joinWebURL
  • joinMeetingId

Add the error message I get from the delegated endpoint:

"message": "Filter expression expected - /onlineMeetings?$filter={ParameterName} eq '{id}'.",

in particular eq '{id}' suggests the API endpoint can only return a single record.

So the question becomes how to get one of those 4 unique identifiers. When I use outlook to a create an event with an online meeting, the graphAPI returns an event with {"onlineMeeting": {"joinWebURL": "https://teams.microsoft.com/..."}} embedded. Other methods of creating calendar events which include a link to an online meeting likely also populate this field.

One solution is to search for all events with joinWebURL set, then loop through each event with a separate call to https://graph.microsoft.com/v1.0/me /onlineMeeting$filter=joinWebURL eq <joinWebURL>.

This is super inefficient, and I would not want to do this with a large number of events. I may not have a choice.

I hoped to use the graphAPI's $expand query string ($expand=onlineMeeting), but that returns an error that the property is not navigable, meaning it does not designate a relationship for the data. This is disappointing hole in the graphAPI's implementation, IMO.

CAVEAT: I personally have only been able to get results from /onlineMeeting using the delegated API endpoint. The application endpoint always returns "unknown error". Hopefully this can be r

Dan Locks
  • 547
  • 4
  • 5