|
| 1 | +using System; |
| 2 | +using System.Net.Http; |
| 3 | +using Azure.Core.Pipeline; |
| 4 | +using Azure.DigitalTwins.Core; |
| 5 | +using Azure.Identity; |
1 | 6 | using Azure.Messaging; |
2 | 7 | using System.Threading.Tasks; |
3 | 8 | using Microsoft.AspNetCore.Http; |
|
9 | 14 | using Newtonsoft.Json.Linq; |
10 | 15 | using Microsoft.Azure.WebJobs.Extensions.SignalRService; |
11 | 16 |
|
| 17 | + |
| 18 | + |
12 | 19 | namespace AdtEventEndpoint |
13 | 20 | { |
14 | 21 | public static class AdtEventEndpoint |
@@ -42,6 +49,18 @@ public static Task Observe( |
42 | 49 | eventToClients.Add("id", eventGridEvent.Subject); |
43 | 50 | eventToClients.Add("eventType", eventGridEvent.Type); |
44 | 51 | 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 | + } |
45 | 64 |
|
46 | 65 | log.LogInformation($"New event:\n {eventToClients.ToString()}"); |
47 | 66 |
|
|
0 commit comments