microsoftgraph / msgraph-sdk-powershell

Powershell SDK for Microsoft Graph
https://www.powershellgallery.com/packages/Microsoft.Graph
Other
712 stars 172 forks source link

Bug in REST/GRAPH API PowerShell module - Microsoft.Graph.CloudCommunications #1885

Closed karti32 closed 1 year ago

karti32 commented 1 year ago

If we run the below command as per the article - https://learn.microsoft.com/en-us/graph/api/callrecords-callrecord-get?view=graph-rest-1.0&tabs=http

Get-MgCommunicationCallRecord -CallRecordId -ExpandProperty "sessions(`$expand=segments)". It doesn't list the media stream (Under Segments) details as per the response shared in the article.

I have followed the Powershell method & Invoke-restmethod shared i nthe rticle via Powershell and both share the same outcome. I have also opened a MS ticket with the frontline #35310632 for the same and seems like a bug on the powershell side of things/Graph API restrictions which may need Engineering team to look at.

Interestingly if i use the same API via Postman it just works fine for me.

Permissions shouldn't be an issue here as we can obtain the media Streams fine in the Postman outcome. Kindly let us know i you have encountered any of these issues.

peombwa commented 1 year ago

Thanks for following up on this.

Can you share a sanitized -Debug output of the API response when using Get-MgCommunicationCallRecord -CallRecordId -ExpandProperty "sessions(`$expand=segments)" -Debug?

The debug output will contain the permissions used when making requests and the response body from the service. This should help isolate the root cause of the issue. See https://learn.microsoft.com/en-us/powershell/microsoftgraph/troubleshooting#using--debug for more details.

ghost commented 1 year ago

This issue has been automatically marked as stale because it has been marked as requiring author feedback but has not had any activity for 4 days. It will be closed if no further activity occurs within 3 days of this comment.

karti32 commented 1 year ago

Sure let me try to obtain the details.

karti32 commented 1 year ago

Sure I will share the details

Get Outlook for Androidhttps://aka.ms/AAb9ysg


From: Peter Ombwa @.> Sent: Friday, March 24, 2023 12:10:24 AM To: microsoftgraph/msgraph-sdk-powershell @.> Cc: karti32 @.>; Author @.> Subject: Re: [microsoftgraph/msgraph-sdk-powershell] Bug in REST/GRAPH API PowerShell module - Microsoft.Graph.CloudCommunications (Issue #1885)

Thanks for following up on this.

Can you share a sanitized -Debug output of the API response when using Get-MgCommunicationCallRecord -CallRecordId -ExpandProperty "sessions(`$expand=segments)" -Debug?

The debug output will contain the permissions used when making requests and the response body from the service. This should help isolate the root cause of the issue. See https://learn.microsoft.com/en-us/powershell/microsoftgraph/troubleshooting#using--debug for more details.

— Reply to this email directly, view it on GitHubhttps://github.com/microsoftgraph/msgraph-sdk-powershell/issues/1885#issuecomment-1481714238, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ATFDYZFEMUYL2GEFADLSWLTW5SKJRANCNFSM6AAAAAAWA7JRSM. You are receiving this because you authored the thread.Message ID: @.***>

karti32 commented 1 year ago

I ran as per the suggestion and found the below details to be observed under debug section but not visible without the debug option.

PS C:\Users\nadarkarthik.ganesan> Get-MgCommunicationCallRecord -CallRecordId [redacted] -ExpandProperty "sessions(`$expand=segments)" -Debug DEBUG: [CmdletBeginProcessing]: - Get-MgCommunicationCallRecord begin processing with parameterSet 'Get1'. DEBUG: [Authentication]: - AuthType: 'UserProvidedAccessToken', AuthProviderType: 'UserProvidedToken', ContextScope: 'Process', AppName: 'MS Teams New'. DEBUG: [Authentication]: - Scopes: [CallRecords.Read.All, CallRecord-PstnCalls.Read.All, User.Read.All]. DEBUG: ============================ HTTP REQUEST ============================

HTTP Method: GET

Absolute Uri: https://graph.microsoft.com/v1.0/communications/callRecords/[redacted]?Expand=sessions(%24expand%3Dsegments)

Headers:

Body:

DEBUG: ============================ HTTP RESPONSE ============================

Status Code: OK

Headers: Transfer-Encoding : chunked Vary : Accept-Encoding Strict-Transport-Security : max-age=31536000 request-id : [redacted] client-request-id : [redacted] x-ms-ags-diagnostic : {"ServerInfo":{"DataCenter":"South India","Slice":"E","Ring":"2","ScaleUnit":"001","RoleInstance":"MA1PEPF0000146C"}} scenario-id : [redacted] OData-Version : 4.0 Date : Mon, 03 Apr 2023 11:35:26 GMT

Body: { "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#communications/callRecords(sessions(segments()))/$entity", "id": "[redacted]", "version": 1, "type": "peerToPeer", "modalities": [ "audio", "videoBasedScreenSharing" ], "lastModifiedDateTime": "2023-03-20T12:11:55.4169934Z", "startDateTime": "2023-03-20T10:45:38.6620353Z", "endDateTime": "2023-03-20T11:59:32.7216723Z", "joinWebUrl": null, "organizer": { "acsUser": null, "spoolUser": null, "phone": null, "guest": null, "encrypted": null, "onPremises": null, "acsApplicationInstance": null, "spoolApplicationInstance": null, "applicationInstance": null, "application": null, "device": null, "user": { "id": "e5679c08-f9a3-41d4-8924-e932ef000309", "displayName": "[redacted]", "tenantId": "[redacted]" } }, "participants": [ { "acsUser": null, "spoolUser": null, "phone": null, "guest": null, "encrypted": null, "onPremises": null, "acsApplicationInstance": null, "spoolApplicationInstance": null, "applicationInstance": null, "application": null, "device": null, "user": { "id": "[redacted]", "displayName": "[redacted]", "tenantId": "[redacted]" } }, { "acsUser": null, "spoolUser": null, "phone": null, "guest": null, "encrypted": null, "onPremises": null, "acsApplicationInstance": null, "spoolApplicationInstance": null, "applicationInstance": null, "application": null, "device": null, "user": { "id": "[redacted]", "displayName": "[redacted]", "tenantId": "[redacted]" } } ], "sessions@odata.context": "https://graph.microsoft.com/v1.0/$metadata#communications/callRecords('[redacted]')/sessions(segments())", "sessions": [ { "id": "[redacted]", "modalities": [ "audio", "videoBasedScreenSharing" ], "startDateTime": "2023-03-20T10:45:38.6620353Z", "endDateTime": "2023-03-20T11:59:32.7216723Z", "failureInfo": null, "caller": { "@odata.type": "#microsoft.graph.callRecords.participantEndpoint", "feedback": null, "userAgent": { "@odata.type": "#microsoft.graph.callRecords.clientUserAgent", "headerValue": "SkypeSpaces/1415/1.0.0.2023031528/os=windows; osVer=10; deviceType=computer; browser=edgeChromium; browserVer=111.0/TsCallingVersion=2023.05.01.8/Ovb=9ac734e0726953e135d66adaff010487ea7301b2", "applicationVersion": null, "platform": "web", "productFamily": "teams", "communicationServiceId": null, "azureADAppId": null }, "identity": { "acsUser": null, "spoolUser": null, "phone": null, "guest": null, "encrypted": null, "onPremises": null, "acsApplicationInstance": null, "spoolApplicationInstance": null, "applicationInstance": null, "application": null, "device": null, "user": { "id": "[redacted]", "displayName": "[redacted]", "tenantId": "[redacted]" } } }, "callee": { "@odata.type": "#microsoft.graph.callRecords.participantEndpoint", "feedback": null, "userAgent": { "@odata.type": "#microsoft.graph.callRecords.clientUserAgent", "headerValue": null, "applicationVersion": null, "platform": "unknown", "productFamily": "teams", "communicationServiceId": null, "azureADAppId": null }, "identity": { "acsUser": null, "spoolUser": null, "phone": null, "guest": null, "encrypted": null, "onPremises": null, "acsApplicationInstance": null, "spoolApplicationInstance": null, "applicationInstance": null, "application": null, "device": null, "user": { "id": "[redacted]", "displayName": "[redacted]", "tenantId": "[redacted]" } } }, "segments@odata.context": "https://graph.microsoft.com/v1.0/$metadata#communications/callRecords('[redacted]')/sessions('[redacted]')/segments", "segments": [ { "id": "[redacted]", "startDateTime": "2023-03-20T10:45:38.6620353Z", "endDateTime": "2023-03-20T11:59:32.7216723Z", "failureInfo": null, "caller": { "@odata.type": "#microsoft.graph.callRecords.participantEndpoint", "feedback": null, "userAgent": { "@odata.type": "#microsoft.graph.callRecords.clientUserAgent", "headerValue": "SkypeSpaces/1415/1.0.0.2023031528/os=windows; osVer=10; deviceType=computer; browser=edgeChromium; browserVer=111.0/TsCallingVersion=2023.05.01.8/Ovb=9ac734e0726953e135d66adaff010487ea7301b2", "applicationVersion": null, "platform": "web", "productFamily": "teams", "communicationServiceId": null, "azureADAppId": null }, "identity": { "acsUser": null, "spoolUser": null, "phone": null, "guest": null, "encrypted": null, "onPremises": null, "acsApplicationInstance": null, "spoolApplicationInstance": null, "applicationInstance": null, "application": null, "device": null, "user": { "id": "[redacted]", "displayName": "[redacted]", "tenantId": "[redacted]" } } }, "callee": { "@odata.type": "#microsoft.graph.callRecords.participantEndpoint", "feedback": null, "userAgent": { "@odata.type": "#microsoft.graph.callRecords.clientUserAgent", "headerValue": null, "applicationVersion": null, "platform": "unknown", "productFamily": "teams", "communicationServiceId": null, "azureADAppId": null }, "identity": { "acsUser": null, "spoolUser": null, "phone": null, "guest": null, "encrypted": null, "onPremises": null, "acsApplicationInstance": null, "spoolApplicationInstance": null, "applicationInstance": null, "application": null, "device": null, "user": { "id": "[redacted]", "displayName": "[redacted]", "tenantId": "[redacted]" } } }, "media": [ { "label": "main-audio", "callerNetwork": { "ipAddress": "[redacted]", "subnet": null, "linkSpeed": null, "connectionType": "unknown", "port": 51973, "reflexiveIPAddress": "[redacted]", "relayIPAddress": null, "relayPort": null, "macAddress": null, "wifiMicrosoftDriver": null, "wifiMicrosoftDriverVersion": null, "wifiVendorDriver": null, "wifiVendorDriverVersion": null, "wifiChannel": null, "wifiBand": "unknown", "basicServiceSetIdentifier": null, "wifiRadioType": "unknown", "wifiSignalStrength": null, "wifiBatteryCharge": null, "dnsSuffix": null, "sentQualityEventRatio": null, "receivedQualityEventRatio": null, "delayEventRatio": null, "bandwidthLowEventRatio": null, "networkTransportProtocol": "unknown", "traceRouteHops": [] }, "calleeNetwork": { "ipAddress": "[redacted]", "subnet": "", "linkSpeed": 135000000, "connectionType": "wifi", "port": null, "reflexiveIPAddress": "[redacted]", "relayIPAddress": "", "relayPort": null, "macAddress": "", "wifiMicrosoftDriver": "", "wifiMicrosoftDriverVersion": "", "wifiVendorDriver": "", "wifiVendorDriverVersion": "", "wifiChannel": null, "wifiBand": "unknown", "basicServiceSetIdentifier": "", "wifiRadioType": "unknown", "wifiSignalStrength": 95, "wifiBatteryCharge": 100, "dnsSuffix": "", "sentQualityEventRatio": 0, "receivedQualityEventRatio": 0.01, "delayEventRatio": null, "bandwidthLowEventRatio": null, "networkTransportProtocol": "udp", "traceRouteHops": [] }, "callerDevice": { "captureDeviceName": null, "captureDeviceDriver": null, "renderDeviceName": null, "renderDeviceDriver": null, "sentSignalLevel": null, "receivedSignalLevel": null, "sentNoiseLevel": null, "receivedNoiseLevel": null, "initialSignalLevelRootMeanSquare": null, "cpuInsufficentEventRatio": null, "renderNotFunctioningEventRatio": null, "captureNotFunctioningEventRatio": null, "deviceGlitchEventRatio": null, "lowSpeechToNoiseEventRatio": null, "lowSpeechLevelEventRatio": null, "deviceClippingEventRatio": null, "howlingEventCount": null, "renderZeroVolumeEventRatio": null, "renderMuteEventRatio": null, "micGlitchRate": null, "speakerGlitchRate": null }, "calleeDevice": { "captureDeviceName": "", "captureDeviceDriver": "", "renderDeviceName": "", "renderDeviceDriver": "", "sentSignalLevel": null, "receivedSignalLevel": -27, "sentNoiseLevel": null, "receivedNoiseLevel": -68, "initialSignalLevelRootMeanSquare": null, "cpuInsufficentEventRatio": 0, "renderNotFunctioningEventRatio": 0, "captureNotFunctioningEventRatio": 0, "deviceGlitchEventRatio": 0, "lowSpeechToNoiseEventRatio": 0, "lowSpeechLevelEventRatio": 0, "deviceClippingEventRatio": 0, "howlingEventCount": 0, "renderZeroVolumeEventRatio": 0, "renderMuteEventRatio": 0, "micGlitchRate": null, "speakerGlitchRate": null }, "streams": [ { "streamId": "4140616793", "startDateTime": null, "endDateTime": null, "streamDirection": "callerToCallee", "averageAudioDegradation": null, "averageJitter": "PT0.005S", "maxJitter": "PT0.024S", "averagePacketLossRate": 0.011418, "maxPacketLossRate": 0.965385, "averageRatioOfConcealedSamples": 0.011471, "maxRatioOfConcealedSamples": 0.503497, "averageRoundTripTime": "PT0.096S", "maxRoundTripTime": "PT0.237S", "packetUtilization": 166919, "averageBandwidthEstimate": null, "wasMediaBypassed": null, "postForwardErrorCorrectionPacketLossRate": null, "averageVideoFrameLossPercentage": null, "averageReceivedFrameRate": null, "lowFrameRateRatio": null, "averageVideoPacketLossRate": null, "averageVideoFrameRate": null, "lowVideoProcessingCapabilityRatio": null, "averageAudioNetworkJitter": "PT0.014S", "maxAudioNetworkJitter": "PT0.263S", "audioCodec": "opus", "videoCodec": "unknown" }, { "streamId": "20126", "startDateTime": null, "endDateTime": null, "streamDirection": "calleeToCaller", "averageAudioDegradation": null, "averageJitter": "PT0.004S", "maxJitter": "PT0.019S", "averagePacketLossRate": 0.000484, "maxPacketLossRate": 0.065574, "averageRatioOfConcealedSamples": null, "maxRatioOfConcealedSamples": null, "averageRoundTripTime": "PT0.102S", "maxRoundTripTime": "PT0.237S", "packetUtilization": 146960, "averageBandwidthEstimate": null, "wasMediaBypassed": null, "postForwardErrorCorrectionPacketLossRate": null, "averageVideoFrameLossPercentage": null, "averageReceivedFrameRate": null, "lowFrameRateRatio": null, "averageVideoPacketLossRate": null, "averageVideoFrameRate": null, "lowVideoProcessingCapabilityRatio": null, "averageAudioNetworkJitter": null, "maxAudioNetworkJitter": null, "audioCodec": "opus", "videoCodec": "unknown" } ] }, { "label": "applicationsharing-video", "callerNetwork": { "ipAddress": "[redacted]", "subnet": null, "linkSpeed": null, "connectionType": "unknown", "port": 51973, "reflexiveIPAddress": "[redacted]", "relayIPAddress": null, "relayPort": null, "macAddress": null, "wifiMicrosoftDriver": null, "wifiMicrosoftDriverVersion": null, "wifiVendorDriver": null, "wifiVendorDriverVersion": null, "wifiChannel": null, "wifiBand": "unknown", "basicServiceSetIdentifier": null, "wifiRadioType": "unknown", "wifiSignalStrength": null, "wifiBatteryCharge": null, "dnsSuffix": null, "sentQualityEventRatio": null, "receivedQualityEventRatio": null, "delayEventRatio": null, "bandwidthLowEventRatio": null, "networkTransportProtocol": "unknown", "traceRouteHops": [] }, "calleeNetwork": { "ipAddress": "[redacted]", "subnet": "", "linkSpeed": 135000000, "connectionType": "wifi", "port": null, "reflexiveIPAddress": "[redacted]", "relayIPAddress": "", "relayPort": null, "macAddress": "", "wifiMicrosoftDriver": "", "wifiMicrosoftDriverVersion": "", "wifiVendorDriver": "", "wifiVendorDriverVersion": "", "wifiChannel": null, "wifiBand": "unknown", "basicServiceSetIdentifier": "", "wifiRadioType": "unknown", "wifiSignalStrength": 99, "wifiBatteryCharge": 100, "dnsSuffix": "", "sentQualityEventRatio": null, "receivedQualityEventRatio": 0, "delayEventRatio": null, "bandwidthLowEventRatio": 0, "networkTransportProtocol": "udp", "traceRouteHops": [] }, "callerDevice": { "captureDeviceName": null, "captureDeviceDriver": null, "renderDeviceName": null, "renderDeviceDriver": null, "sentSignalLevel": null, "receivedSignalLevel": null, "sentNoiseLevel": null, "receivedNoiseLevel": null, "initialSignalLevelRootMeanSquare": null, "cpuInsufficentEventRatio": null, "renderNotFunctioningEventRatio": null, "captureNotFunctioningEventRatio": null, "deviceGlitchEventRatio": null, "lowSpeechToNoiseEventRatio": null, "lowSpeechLevelEventRatio": null, "deviceClippingEventRatio": null, "howlingEventCount": null, "renderZeroVolumeEventRatio": null, "renderMuteEventRatio": null, "micGlitchRate": null, "speakerGlitchRate": null }, "calleeDevice": { "captureDeviceName": "", "captureDeviceDriver": "", "renderDeviceName": "", "renderDeviceDriver": "", "sentSignalLevel": null, "receivedSignalLevel": null, "sentNoiseLevel": null, "receivedNoiseLevel": null, "initialSignalLevelRootMeanSquare": null, "cpuInsufficentEventRatio": null, "renderNotFunctioningEventRatio": null, "captureNotFunctioningEventRatio": null, "deviceGlitchEventRatio": null, "lowSpeechToNoiseEventRatio": null, "lowSpeechLevelEventRatio": null, "deviceClippingEventRatio": null, "howlingEventCount": null, "renderZeroVolumeEventRatio": null, "renderMuteEventRatio": null, "micGlitchRate": null, "speakerGlitchRate": null }, "streams": [ { "streamId": "1582311400", "startDateTime": null, "endDateTime": null, "streamDirection": "callerToCallee", "averageAudioDegradation": null, "averageJitter": "PT0.001S", "maxJitter": "PT0.012S", "averagePacketLossRate": 0.027126, "maxPacketLossRate": 0.942158, "averageRatioOfConcealedSamples": null, "maxRatioOfConcealedSamples": null, "averageRoundTripTime": "PT0.109S", "maxRoundTripTime": null, "packetUtilization": 201323, "averageBandwidthEstimate": null, "wasMediaBypassed": null, "postForwardErrorCorrectionPacketLossRate": 0.027328, "averageVideoFrameLossPercentage": 0.453306, "averageReceivedFrameRate": null, "lowFrameRateRatio": 0.07309487, "averageVideoPacketLossRate": null, "averageVideoFrameRate": 9.096585, "lowVideoProcessingCapabilityRatio": null, "averageAudioNetworkJitter": null, "maxAudioNetworkJitter": null, "audioCodec": "unknown", "videoCodec": "h264" }, { "streamId": "20227", "startDateTime": null, "endDateTime": null, "streamDirection": "calleeToCaller", "averageAudioDegradation": null, "averageJitter": null, "maxJitter": null, "averagePacketLossRate": null, "maxPacketLossRate": null, "averageRatioOfConcealedSamples": null, "maxRatioOfConcealedSamples": null, "averageRoundTripTime": null, "maxRoundTripTime": null, "packetUtilization": 0, "averageBandwidthEstimate": null, "wasMediaBypassed": null, "postForwardErrorCorrectionPacketLossRate": null, "averageVideoFrameLossPercentage": null, "averageReceivedFrameRate": null, "lowFrameRateRatio": null, "averageVideoPacketLossRate": null, "averageVideoFrameRate": null, "lowVideoProcessingCapabilityRatio": null, "averageAudioNetworkJitter": null, "maxAudioNetworkJitter": null, "audioCodec": "unknown", "videoCodec": "unknown" } ] } ] } ] } ] }

DEBUG: [CmdletEndProcessing]: - Get-MgCommunicationCallRecord end processing. Id EndDateTime JoinWebUrl LastModifiedDateTime Modalities StartDateTime Type Version


[redacted] 20-03-2023 11.59.32 AM 20-03-2023 12.11.55 PM {audio, videoBasedScreenSharing} 20-03-2023 10.45.38 AM peerToPeer 1

karti32 commented 1 year ago

@peombwa : Please let me know if you need anything else.

SeniorConsulting commented 1 year ago

Hey Karti32. I'm not the person you're hoping to look into this, but I just wanted to say that I recommend you scrub some of the data out of your debug post. There are tenant IDs, company names, people's names, IP addresses and other things in there. If you want to indicate that they showed values, you could say something like redacted or [redacted]

karti32 commented 1 year ago

Hey Karti32. I'm not the person you're hoping to look into this, but I just wanted to say that I recommend you scrub some of the data out of your debug post. There are tenant IDs, company names, people's names, IP addresses and other things in there. If you want to indicate that they showed values, you could say something like redacted or [redacted]

Thank you @SeniorConsulting , I am new to this Github community. I have redacted to all PII data.

peombwa commented 1 year ago

@karti32, as shown in the -Debug logs, segments are returned by the service as expect, and are accessible in the response object under $ResponseObject.Sessions.Segments:

image
$ResponseObject = Get-MgCommunicationCallRecord -CallRecordId "Id" -ExpandProperty "sessions(`$expand=segments)"
$ResponseObject.sessions.segments | Select-Object * # What's the output of this ?
karti32 commented 1 year ago

image

This is the outcome i receive. I see the media parameter but it doesn't have any stats.

ghost commented 1 year ago

This issue has been automatically marked as stale because it has been marked as requiring author feedback but has not had any activity for 4 days. It will be closed if no further activity occurs within 3 days of this comment.