Skip to content

Commit 8eea7f1

Browse files
feat: add source model information on relationship's event
1 parent a04927a commit 8eea7f1

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

adt-event-endpoint-function/AdtEventEndpoint.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
using System;
2+
using System.Net.Http;
3+
using Azure.Core.Pipeline;
4+
using Azure.DigitalTwins.Core;
5+
using Azure.Identity;
16
using Azure.Messaging;
27
using System.Threading.Tasks;
38
using Microsoft.AspNetCore.Http;
@@ -9,6 +14,8 @@
914
using Newtonsoft.Json.Linq;
1015
using Microsoft.Azure.WebJobs.Extensions.SignalRService;
1116

17+
18+
1219
namespace AdtEventEndpoint
1320
{
1421
public static class AdtEventEndpoint
@@ -42,6 +49,18 @@ public static Task Observe(
4249
eventToClients.Add("id", eventGridEvent.Subject);
4350
eventToClients.Add("eventType", eventGridEvent.Type);
4451
eventToClients.Add("eventDateTime", eventGridEvent.Time.ToString());
52+
53+
// When the event involve the creation or the deletion of a reletionship then get the source's model.
54+
if(eventGridEvent.Type.StartsWith("Microsoft.DigitalTwins.Relationship")) {
55+
DigitalTwinsClient client = new DigitalTwinsClient(
56+
new Uri(Environment.GetEnvironmentVariable("ADT_SERVICE_URL")),
57+
new DefaultAzureCredential(),
58+
new DigitalTwinsClientOptions{ Transport = new HttpClientTransport(new HttpClient()) });
59+
60+
string sourceId = eventToClients["data"]["$sourceId"].ToString();
61+
BasicDigitalTwin sourceDigitalTwin = client.GetDigitalTwin<BasicDigitalTwin>(sourceId).Value;
62+
eventToClients["data"]["$sourceModel"] = sourceDigitalTwin.Metadata.ModelId;
63+
}
4564

4665
log.LogInformation($"New event:\n {eventToClients.ToString()}");
4766

adt-event-endpoint-function/digitaltwins-event-endpoint.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
<RootNamespace>digitaltwins_event_endpoint</RootNamespace>
66
</PropertyGroup>
77
<ItemGroup>
8+
<PackageReference Include="Azure.DigitalTwins.Core" Version="1.4.0" />
9+
<PackageReference Include="Azure.Identity" Version="1.8.2" />
810
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.EventGrid" Version="3.2.1" />
911
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.SignalRService" Version="1.9.0" />
1012
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.1.3" />

0 commit comments

Comments
 (0)