Skip to content

Commit 1103c67

Browse files
authored
Version 1.2 (#63)
* Update Microsoft.NET.Sdk.Functions from 4.3.0 to 4.6.0 * Update Microsoft.Azure.Cosmos from 3.38.1 to 3.46.0 * Update Microsoft.Azure.WebJobs.Extensions.EventHubs from 6.0.2 to 6.3.5 * Update Microsoft.Azure.WebJobs.Extensions.Storage.Queues from 5.2.1 to 5.3.3 * Update Microsoft.Azure.WebJobs.Extensions.Storage.Blobs from 5.2.2 to 5.3.3 * Update Microsoft.Graph from 5.41.0 to 5.65.0 and add sync deserialization methods Updated Directory.Packages.props to upgrade Microsoft.Graph from 5.41.0 to 5.59.0. Added synchronous methods DeserializeObject<T> and DeserializeCollection<T> in IParsableExtensions.cs. Modified async methods to use GetRootParseNodeAsync for root parse node retrieval. * Update Microsoft.Identity.Web from 2.16.1 to 3.5.0 and enhance credential handling Updated Microsoft.Identity.Web package from 2.16.1 to 3.5.0 in Directory.Packages.props. Added Microsoft.Identity.Client namespace in ServiceCollectionExtensions.cs. Modified ClientAssertionCredential instantiation to use async lambdas for signed assertions from ManagedIdentity, FilePath, and Vault. Updated ClientCertificateCredential to include clientCertificateCredentialOptions in Select method. * Update Microsoft.Identity.Web.GraphServiceClient from 2.16.1 to 3.5.0 * Force .NET 6.0 SDK for build This adds `global.json` to the solution to force Azure Deployment to use the .NET 6 SDK for build/deploy. Other changes made to align with these requirements (syntax, etc) * Add equality methods and refactor JSON processing Updated `JsonPathExtensions.cs` to include `Equals` and `GetHashCode` methods for selector classes, enhancing custom equality checks. Overrode `GetHashCode` in `ObjectPropertySelector` to use `PropertyName` hash code. Improved `GetNewRow` method in `JsonFlattener.cs` for better documentation and functionality, setting new row columns to parent values or null if missing. Refactored `ProcessNode` method in `JsonFlattener.cs` for streamlined JSON node processing, using `yield break` for early exits and simplifying logic. The method now yields rows directly, improving memory efficiency and readability. * Add new properties to call record interfaces and classes Added properties to `IKustoCallRecord`, `KustoCallRecord`, and `CosmosCallRecord` to capture details about the organizer, caller, and callee, including `Id`, `UserPrincipalName`, `DisplayName`, `TenantId`, and `IdType`. Updated JSON mapping and deserialization logic in `IKustoCallRecordHelpers.cs` to handle these new properties. Ensured correct property setting in `CosmosCallRecord`. * Add and reorder columns for Organizer, Callee, and Caller Enhanced Configure.kql and CreateTable.kql by adding new columns for Organizer, Callee, and Caller entities, including IDs, UserPrincipalNames, DisplayNames, TenantIds, and IdTypes. Reordered columns to ensure consistency and logical grouping. * Refactor dictionary population for readability and efficiency The code has been refactored to improve readability and efficiency. Specifically: - The `expanded` dictionary is now populated with tokens directly from the `jObject.SelectTokens(kvp.Value).ToList()` method call. - Introduced an intermediate variable `tokens` to store the result of `jObject.SelectTokens(kvp.Value).ToList()`, which is then assigned to `expanded[kvp.Key]`. - Updated the loop to iterate over the `tokens` variable instead of `expanded[kvp.Key]`. These changes streamline the process of populating the `expanded` dictionary and iterating over its values, making the code more readable and potentially more efficient by avoiding redundant dictionary lookups. * Update app version to 1.2.0
1 parent 3677053 commit 1103c67

14 files changed

Lines changed: 304 additions & 132 deletions

Directory.Packages.props

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
44
</PropertyGroup>
55
<ItemGroup>
6-
<PackageVersion Include="Microsoft.Azure.Cosmos" Version="3.38.1" />
7-
<PackageVersion Include="Microsoft.Azure.WebJobs.Extensions.EventHubs" Version="6.0.2" />
8-
<PackageVersion Include="Microsoft.Azure.WebJobs.Extensions.Storage.Blobs" Version="5.2.2" />
9-
<PackageVersion Include="Microsoft.Azure.WebJobs.Extensions.Storage.Queues" Version="5.2.1" />
10-
<PackageVersion Include="Microsoft.Graph" Version="5.41.0" />
11-
<PackageVersion Include="Microsoft.Identity.Web" Version="2.16.1" />
12-
<PackageVersion Include="Microsoft.Identity.Web.GraphServiceClient" Version="2.16.1" />
6+
<PackageVersion Include="Microsoft.Azure.Cosmos" Version="3.46.0" />
7+
<PackageVersion Include="Microsoft.Azure.WebJobs.Extensions.EventHubs" Version="6.3.5" />
8+
<PackageVersion Include="Microsoft.Azure.WebJobs.Extensions.Storage.Blobs" Version="5.3.3" />
9+
<PackageVersion Include="Microsoft.Azure.WebJobs.Extensions.Storage.Queues" Version="5.3.3" />
10+
<PackageVersion Include="Microsoft.Graph" Version="5.65.0" />
11+
<PackageVersion Include="Microsoft.Identity.Web" Version="3.5.0" />
12+
<PackageVersion Include="Microsoft.Identity.Web.GraphServiceClient" Version="3.5.0" />
1313
<PackageVersion Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
14-
<PackageVersion Include="Microsoft.NET.Sdk.Functions" Version="4.3.0" />
14+
<PackageVersion Include="Microsoft.NET.Sdk.Functions" Version="4.6.0" />
1515
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.6.0" />
1616
</ItemGroup>
17-
</Project>
17+
</Project>

deploy/bicep/kustoScripts/Configure.kql

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,11 @@
123123
{"column":"Organizer_SpoolApplicationInstanceDisplayName","datatype":"string","path":"$.Organizer_SpoolApplicationInstanceDisplayName"},
124124
{"column":"Organizer_SpoolApplicationInstanceId","datatype":"guid","path":"$.Organizer_SpoolApplicationInstanceId"},
125125
{"column":"Organizer_SpoolApplicationInstanceTenantId","datatype":"guid","path":"$.Organizer_SpoolApplicationInstanceTenantId"},
126+
{"column":"Organizer_Id","datatype":"string","path":"$.Organizer_Id"},
127+
{"column":"Organizer_UserPrincipalName","datatype":"string","path":"$.Organizer_UserPrincipalName"},
128+
{"column":"Organizer_DisplayName","datatype":"string","path":"$.Organizer_DisplayName"},
129+
{"column":"Organizer_TenantId","datatype":"guid","path":"$.Organizer_TenantId"},
130+
{"column":"Organizer_IdType","datatype":"string","path":"$.Organizer_IdType"},
126131
{"column":"Callee_UserDisplayName","datatype":"string","path":"$.Callee_UserDisplayName"},
127132
{"column":"Callee_UserId","datatype":"guid","path":"$.Callee_UserId"},
128133
{"column":"Callee_UserTenantId","datatype":"guid","path":"$.Callee_UserTenantId"},
@@ -153,6 +158,11 @@
153158
{"column":"Callee_SpoolApplicationInstanceDisplayName","datatype":"string","path":"$.Callee_SpoolApplicationInstanceDisplayName"},
154159
{"column":"Callee_SpoolApplicationInstanceId","datatype":"guid","path":"$.Callee_SpoolApplicationInstanceId"},
155160
{"column":"Callee_SpoolApplicationInstanceTenantId","datatype":"guid","path":"$.Callee_SpoolApplicationInstanceTenantId"},
161+
{"column":"Callee_Id","datatype":"string","path":"$.Callee_Id"},
162+
{"column":"Callee_UserPrincipalName","datatype":"string","path":"$.Callee_UserPrincipalName"},
163+
{"column":"Callee_DisplayName","datatype":"string","path":"$.Callee_DisplayName"},
164+
{"column":"Callee_TenantId","datatype":"guid","path":"$.Callee_TenantId"},
165+
{"column":"Callee_IdType","datatype":"string","path":"$.Callee_IdType"},
156166
{"column":"Callee_EndpointType","datatype":"string","path":"$.Callee_EndpointType"},
157167
{"column":"Callee_ProductFamily","datatype":"string","path":"$.Callee_ProductFamily"},
158168
{"column":"Callee_Platform","datatype":"string","path":"$.Callee_Platform"},
@@ -241,6 +251,11 @@
241251
{"column":"Caller_SpoolApplicationInstanceDisplayName","datatype":"string","path":"$.Caller_SpoolApplicationInstanceDisplayName"},
242252
{"column":"Caller_SpoolApplicationInstanceId","datatype":"guid","path":"$.Caller_SpoolApplicationInstanceId"},
243253
{"column":"Caller_SpoolApplicationInstanceTenantId","datatype":"guid","path":"$.Caller_SpoolApplicationInstanceTenantId"},
254+
{"column":"Caller_Id","datatype":"string","path":"$.Caller_Id"},
255+
{"column":"Caller_UserPrincipalName","datatype":"string","path":"$.Caller_UserPrincipalName"},
256+
{"column":"Caller_DisplayName","datatype":"string","path":"$.Caller_DisplayName"},
257+
{"column":"Caller_TenantId","datatype":"guid","path":"$.Caller_TenantId"},
258+
{"column":"Caller_IdType","datatype":"string","path":"$.Caller_IdType"},
244259
{"column":"Caller_EndpointType","datatype":"string","path":"$.Caller_EndpointType"},
245260
{"column":"Caller_ProductFamily","datatype":"string","path":"$.Caller_ProductFamily"},
246261
{"column":"Caller_Platform","datatype":"string","path":"$.Caller_Platform"},

deploy/bicep/kustoScripts/CreateTable.kql

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -13,37 +13,38 @@
1313
LowFrameRateRatio: real, AverageVideoPacketLossRate: real, AverageVideoFrameLossPercentage: real,
1414
Organizer_UserDisplayName: string, Organizer_UserId: guid, Organizer_UserTenantId: guid,
1515
Organizer_ApplicationInstanceDisplayName: string, Organizer_ApplicationInstanceId: guid,
16-
Organizer_ApplicationInstanceTenantId: guid, Organizer_GuestDisplayName: string,
17-
Organizer_GuestId: guid, Organizer_GuestTenantId: guid, Organizer_PhoneDisplayName: string,
18-
Organizer_PhoneId: string, Organizer_PhoneTenantId: guid, Organizer_OnPremisesDisplayName: string,
19-
Organizer_OnPremisesId: guid, Organizer_OnPremisesTenantId: guid,
20-
Organizer_EncryptedDisplayName: string, Organizer_EncryptedId: guid,
16+
Organizer_ApplicationInstanceTenantId: guid, Organizer_GuestDisplayName: string, Organizer_GuestId: guid,
17+
Organizer_GuestTenantId: guid, Organizer_PhoneDisplayName: string, Organizer_PhoneId: string,
18+
Organizer_PhoneTenantId: guid, Organizer_OnPremisesDisplayName: string, Organizer_OnPremisesId: guid,
19+
Organizer_OnPremisesTenantId: guid, Organizer_EncryptedDisplayName: string, Organizer_EncryptedId: guid,
2120
Organizer_EncryptedTenantId: guid, Organizer_AcsUserDisplayName: string, Organizer_AcsUserId: guid,
2221
Organizer_AcsUserTenantId: guid, Organizer_SpoolUserDisplayName: string, Organizer_SpoolUserId: guid,
2322
Organizer_SpoolUserTenantId: guid, Organizer_AcsApplicationInstanceDisplayName: string,
2423
Organizer_AcsApplicationInstanceId: guid, Organizer_AcsApplicationInstanceTenantId: guid,
2524
Organizer_SpoolApplicationInstanceDisplayName: string, Organizer_SpoolApplicationInstanceId: guid,
26-
Organizer_SpoolApplicationInstanceTenantId: guid, Callee_UserDisplayName: string, Callee_UserId: guid,
27-
Callee_UserTenantId: guid, Callee_ApplicationInstanceDisplayName: string,
28-
Callee_ApplicationInstanceId: guid, Callee_ApplicationInstanceTenantId: guid,
29-
Callee_GuestDisplayName: string, Callee_GuestId: guid, Callee_GuestTenantId: guid,
30-
Callee_PhoneDisplayName: string, Callee_PhoneId: string, Callee_PhoneTenantId: guid,
31-
Callee_OnPremisesDisplayName: string, Callee_OnPremisesId: guid, Callee_OnPremisesTenantId: guid,
32-
Callee_EncryptedDisplayName: string, Callee_EncryptedId: guid, Callee_EncryptedTenantId: guid,
33-
Callee_AcsUserDisplayName: string, Callee_AcsUserId: guid, Callee_AcsUserTenantId: guid,
34-
Callee_SpoolUserDisplayName: string, Callee_SpoolUserId: guid, Callee_SpoolUserTenantId: guid,
35-
Callee_AcsApplicationInstanceDisplayName: string, Callee_AcsApplicationInstanceId: guid,
36-
Callee_AcsApplicationInstanceTenantId: guid, Callee_SpoolApplicationInstanceDisplayName: string,
37-
Callee_SpoolApplicationInstanceId: guid, Callee_SpoolApplicationInstanceTenantId: guid,
38-
Callee_EndpointType: string, Callee_ProductFamily: string, Callee_Platform: string,
39-
Callee_UserAgentHeaderValue: string, Callee_ServiceRole: string, Callee_ApplicationVersion: string,
40-
Callee_AzureAdAppId: guid, Callee_CommunicationServiceId: guid, Callee_ConnectionType: string,
41-
Callee_ReflexiveIPAddress: string, Callee_Subnet: string, Callee_IpAddress: string,
42-
Callee_MacAddress: string, Callee_LinkSpeed: long, Callee_NetworkTransportProtocol: string,
43-
Callee_Port: int, Callee_RelayIPAddress: string, Callee_RelayPort: int, Callee_DnsSuffix: string,
44-
Callee_TraceRouteHops: string, Callee_BSSID: string, Callee_WifiRadioType: string,
45-
Callee_WifiBand: string, Callee_WifiChannel: int, Callee_WifiSignalStrength: int,
46-
Callee_WifiBatteryCharge: int, Callee_WifiMicrosoftDriver: string,
25+
Organizer_SpoolApplicationInstanceTenantId: guid, Organizer_Id: string,
26+
Organizer_UserPrincipalName: string, Organizer_DisplayName: string, Organizer_TenantId: guid,
27+
Organizer_IdType: string, Callee_UserDisplayName: string, Callee_UserId: guid, Callee_UserTenantId: guid,
28+
Callee_ApplicationInstanceDisplayName: string, Callee_ApplicationInstanceId: guid,
29+
Callee_ApplicationInstanceTenantId: guid, Callee_GuestDisplayName: string, Callee_GuestId: guid,
30+
Callee_GuestTenantId: guid, Callee_PhoneDisplayName: string, Callee_PhoneId: string,
31+
Callee_PhoneTenantId: guid, Callee_OnPremisesDisplayName: string, Callee_OnPremisesId: guid,
32+
Callee_OnPremisesTenantId: guid, Callee_EncryptedDisplayName: string, Callee_EncryptedId: guid,
33+
Callee_EncryptedTenantId: guid, Callee_AcsUserDisplayName: string, Callee_AcsUserId: guid,
34+
Callee_AcsUserTenantId: guid, Callee_SpoolUserDisplayName: string, Callee_SpoolUserId: guid,
35+
Callee_SpoolUserTenantId: guid, Callee_AcsApplicationInstanceDisplayName: string,
36+
Callee_AcsApplicationInstanceId: guid, Callee_AcsApplicationInstanceTenantId: guid,
37+
Callee_SpoolApplicationInstanceDisplayName: string, Callee_SpoolApplicationInstanceId: guid,
38+
Callee_SpoolApplicationInstanceTenantId: guid, Callee_Id: string, Callee_UserPrincipalName: string,
39+
Callee_DisplayName: string, Callee_TenantId: guid, Callee_IdType: string, Callee_EndpointType: string,
40+
Callee_ProductFamily: string, Callee_Platform: string, Callee_UserAgentHeaderValue: string,
41+
Callee_ServiceRole: string, Callee_ApplicationVersion: string, Callee_AzureAdAppId: guid,
42+
Callee_CommunicationServiceId: guid, Callee_ConnectionType: string, Callee_ReflexiveIPAddress: string,
43+
Callee_Subnet: string, Callee_IpAddress: string, Callee_MacAddress: string, Callee_LinkSpeed: long,
44+
Callee_NetworkTransportProtocol: string, Callee_Port: int, Callee_RelayIPAddress: string,
45+
Callee_RelayPort: int, Callee_DnsSuffix: string, Callee_TraceRouteHops: string, Callee_BSSID: string,
46+
Callee_WifiRadioType: string, Callee_WifiBand: string, Callee_WifiChannel: int,
47+
Callee_WifiSignalStrength: int, Callee_WifiBatteryCharge: int, Callee_WifiMicrosoftDriver: string,
4748
Callee_WifiMicrosoftDriverVersion: string, Callee_WifiVendorDriver: string,
4849
Callee_WifiVendorDriverVersion: string, Callee_CaptureDeviceName: string,
4950
Callee_CaptureDeviceDriver: string, Callee_RenderDeviceName: string, Callee_RenderDeviceDriver: string,
@@ -68,11 +69,12 @@
6869
Caller_SpoolUserTenantId: guid, Caller_AcsApplicationInstanceDisplayName: string,
6970
Caller_AcsApplicationInstanceId: guid, Caller_AcsApplicationInstanceTenantId: guid,
7071
Caller_SpoolApplicationInstanceDisplayName: string, Caller_SpoolApplicationInstanceId: guid,
71-
Caller_SpoolApplicationInstanceTenantId: guid, Caller_EndpointType: string, Caller_ProductFamily: string,
72-
Caller_Platform: string, Caller_UserAgentHeaderValue: string, Caller_ServiceRole: string,
73-
Caller_ApplicationVersion: string, Caller_AzureAdAppId: guid, Caller_CommunicationServiceId: guid,
74-
Caller_ConnectionType: string, Caller_ReflexiveIPAddress: string, Caller_Subnet: string,
75-
Caller_IpAddress: string, Caller_MacAddress: string, Caller_LinkSpeed: long,
72+
Caller_SpoolApplicationInstanceTenantId: guid, Caller_Id: string, Caller_UserPrincipalName: string,
73+
Caller_DisplayName: string, Caller_TenantId: guid, Caller_IdType: string, Caller_EndpointType: string,
74+
Caller_ProductFamily: string, Caller_Platform: string, Caller_UserAgentHeaderValue: string,
75+
Caller_ServiceRole: string, Caller_ApplicationVersion: string, Caller_AzureAdAppId: guid,
76+
Caller_CommunicationServiceId: guid, Caller_ConnectionType: string, Caller_ReflexiveIPAddress: string,
77+
Caller_Subnet: string, Caller_IpAddress: string, Caller_MacAddress: string, Caller_LinkSpeed: long,
7678
Caller_NetworkTransportProtocol: string, Caller_Port: int, Caller_RelayIPAddress: string,
7779
Caller_RelayPort: int, Caller_DnsSuffix: string, Caller_TraceRouteHops: string, Caller_BSSID: string,
7880
Caller_WifiRadioType: string, Caller_WifiBand: string, Caller_WifiChannel: int,
@@ -81,7 +83,7 @@
8183
Caller_WifiVendorDriverVersion: string, Caller_CaptureDeviceName: string,
8284
Caller_CaptureDeviceDriver: string, Caller_RenderDeviceName: string, Caller_RenderDeviceDriver: string,
8385
Caller_SentSignalLevel: real, Caller_SentNoiseLevel: real, Caller_MicGlitchRate: real,
84-
Caller_ReceivedSignalLevel: real, Caller_ReceivedNoiseLevel: real, Caller_SpeakerGlitchRate: real,
86+
Caller_ReceivedSignalLevel: real, Caller_ReceivedNoiseLevel: real, Caller_SpeakerGlitchRate: real,
8587
Caller_HowlingEventCount: int, Caller_InitialSignalLevelRootMeanSquare: real,
8688
Caller_DeviceGlitchEventRatio: real, Caller_DeviceClippingEventRatio: real,
8789
Caller_LowSpeechToNoiseEventRatio: real, Caller_CaptureNotFunctioningEventRatio: real,

global.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"sdk": {
3+
"version": "6.0.424",
4+
"rollForward": "latestFeature"
5+
}
6+
}

src/Flattener/CallRecordInsights.Flattener.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net6.0;net7.0</TargetFrameworks>
4+
<TargetFramework>net6.0</TargetFramework>
55
<LangVersion>latest</LangVersion>
66
<Nullable>enable</Nullable>
77
</PropertyGroup>

0 commit comments

Comments
 (0)