microsoftgraph / microsoftgraph/microsoft-graph-comms-samples

Question: How to retrieve the details of the meeting from which a call is originated?

Open
#462 7 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
No language data
Stars
253
Forks
275
Avg merge
1d 5h
Merged PRs (30d)
1

Description

Here's the scenario providing the context for the question.

User A (Jason Carter) creates a Teams meeting and adds user B (Admin) as a participant. As you see in the following screen shot, the meeting subject/title is "Test Meeting between Jason and Admin", and the meeting description reads "Hey, this meeting is to test sample bot. I hope you can help!".

image

When the meeting completes with the two participants joining the call, the sample bot (https://github.com/microsoftgraph/microsoft-graph-comms-samples/tree/master/Samples/V1.0Samples/LocalMediaSamples/PolicyRecordingBot) is supplied with the following notification payload (showing only the relevant part here for space reason) containing some information about the meeting context.

{ "@odata.type": "#microsoft.graph.commsNotifications", "value": [ { "@odata.type": "#microsoft.graph.commsNotification", "changeType": "deleted", "resourceUrl": "/communications/calls/8f1f6300-a17c-4c2b-8fdd-bec8b165fe65", "resource": "/app/calls/8f1f6300-a17c-4c2b-8fdd-bec8b165fe65", "resourceData": { "@odata.type": "#microsoft.graph.call", "state": "terminated", "resultInfo": { "@odata.type": "#microsoft.graph.resultInfo", "code": 200, "subcode": 0, "message": "Recorder call leg has been terminated because the participant call leg has ended.. DiagCode: 0#10550" }, "chatInfo": { "@odata.type": "#microsoft.graph.chatInfo", "threadId": "19:meeting_M2RjN2RjMGQtZTNmMC00ZWJmLWFjNWUtM2U5YzBjODk4ZDA5@thread.v2", "messageId": "0" }, "meetingInfo": { "@odata.type": "#microsoft.graph.tokenMeetingInfo", "token": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ik4xb25SeFM4Smk0MlVfbndJOWRaYmRrZTVpayIsInR5cCI6IkpXVCIsIng1dCI6Ik4xb25SeFM4Smk0MlVfbndJOWRaYmRrZTVpayJ9.eyJhcHBJZCI6IjZlYmQzZDc5LTFkMjctNDQyMC1hZWJhLTVlN2Y0ZTZkMWU0MyIsImNvbnZlcnNhdGlvbkNvbnRyb2xsZXIiOiJodHRwczovL2FwaS5mbGlnaHRwcm94eS50ZWFtcy5taWNyb3NvZnQuY29tL2FwaS92Mi9lcC9jb252LXVzd2UtMDguY29udi5za3lwZS5jb20vY29udi9FSEtTcVV2ZVRVS1JIQ2JPR0ZBYmx3P2k9MTA3JmU9NjM3NTc3NDIwNjMyNjI0MzkyIiwiYWN0aXZpdHlJZCI6ImQxMWQ4YTU3LTFiYTgtNDg2YS05NzgxLWU1YTE5NzgwNDFiYSIsImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vaWRlbnRpdHkvY2xhaW1zL3RlbmFudGlkIjoiMDMyMDNhMTgtMjAwMS00YTRiLThkODEtZWZhYjljMGY5NzY3IiwibmJmIjoxNjIzMDcwOTQ4LCJleHAiOjE2MjMxNTczNDgsImlzcyI6Imh0dHBzOi8vYXBpLmJvdGZyYW1ld29yay5jb20iLCJhdWQiOiJodHRwczovL2FwaS5ib3RmcmFtZXdvcmsuY29tIn0.ImSKPNeDcN18A4WMgFIJJpbY873bgpKCUhTs3c9yn5ZLkVeOsyo_pe5kFm5-GjPWNzc3uN-qGslS__NvUzK0NxgHrtSzNEu9w0W6Js_AmgszYByen8eoxN571lC5ZbNeIJVDF8yS87bIH6MczX2I5_P-aghomFYRD2LGdjTI4rS-m6sn26uj5nY3UROMZdwW9XGvxr-zhmTnc2XUbeYEtcEkkf92sCDcyQjbm1lNZAqEushHCTo5D3nqFzBxRp9qH9A9QQ5nHpROS9YY01ghbaCzgpDjFc6XVVfatwW5My2Uw9rJzexszKcv1KT6EM83ekR3A5ftNHqdeiIDpgcT1g", "organizerInfo": { "@odata.type": "#microsoft.graph.organizerInfo", "identity": { "@odata.type": "#microsoft.graph.identitySet", "user": { "@odata.type": "#microsoft.graph.identity", "id": "7231fff4-bd85-403a-b293-aae48ffa2717", "tenantId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "identityProvider": "AAD" } }, "region": "amer" } },

As you see above, the "organizerInfo" component only contains information (ID) about the person who organized/created the meeting. The "chatInfo" component contains threadId, which is also shared across all chat messages produced from the same meeting. If I base64 decode the middle part of the threadId value (M2RjN2RjMGQtZTNmMC00ZWJmLWFjNWUtM2U5YzBjODk4ZDA5), I get 3dc7dc0d-e3f0-4ebf-ac5e-3e9c0c898d09, which must be a UUID representing some resource. However, I have not been able to determine exactly what type of resource this value represents.

My goal is to be able to find/retrieve some essential information about the meeting from which this call originated, specifically, the meeting subject/title and the meeting description, at the least. So, the question is how do I achieve that? What information from the above payload (or other data available to the bot) can I use to retrieve the meeting details, and what API/SDK to use to achieve it?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the PolicyRecordingBot sample and its handling of the communications notification payload, focusing on chatInfo, meetingInfo, and the decoded threadId. Trace the available Microsoft Graph communications APIs or SDK entry points for meeting metadata, and establish whether the subject and description can be retrieved from this call context; done means documenting a supported retrieval path or its limitation.

Written by the indexing model from the issue text.

Assessment

Domain
api, backend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.