Skip to content

Commit b042fd1

Browse files
feat: add the model of the digital twin in lifecycle events
1 parent ed2f2f8 commit b042fd1

1 file changed

Lines changed: 12 additions & 1 deletion

File tree

adt-event-endpoint-function/AdtEventEndpoint.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,13 @@ namespace AdtEventEndpoint
2020
{
2121
public static class AdtEventEndpoint
2222
{
23+
/// <summary> Azure Digital Twin's relationships events type </summary>
24+
private static readonly string relationshipEventType = "Microsoft.DigitalTwins.Relationship";
25+
/// <summary> Azure Digital Twin's create Digital Twin event type </summary>
26+
private static readonly string createDigitalTwinEventType = "Microsoft.DigitalTwins.Twin.Create";
27+
/// <summary> Azure Digital Twin's delete Digital Twin event type </summary>
28+
private static readonly string deleteDigitalTwinEventType = "Microsoft.DigitalTwins.Twin.Delete";
29+
2330
/// <summary>A HTTP trigger function. It is used by client to be able to connect to SignalR Service.
2431
/// It uses the SignalRConnectionInfo input binding
2532
/// to generate and return valid connection information.</summary>
@@ -51,7 +58,7 @@ public static Task Observe(
5158
eventToClients.Add("eventDateTime", eventGridEvent.Time.ToString());
5259

5360
// 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")) {
61+
if(eventGridEvent.Type.StartsWith(relationshipEventType)) {
5562
DigitalTwinsClient client = new DigitalTwinsClient(
5663
new Uri(Environment.GetEnvironmentVariable("ADT_SERVICE_URL")),
5764
new DefaultAzureCredential(),
@@ -60,6 +67,10 @@ public static Task Observe(
6067
string sourceId = eventToClients["data"]["$sourceId"].ToString();
6168
BasicDigitalTwin sourceDigitalTwin = client.GetDigitalTwin<BasicDigitalTwin>(sourceId).Value;
6269
eventToClients["data"]["$sourceModel"] = sourceDigitalTwin.Metadata.ModelId;
70+
} else if (eventGridEvent.Type.StartsWith(createDigitalTwinEventType) || eventGridEvent.Type.StartsWith(deleteDigitalTwinEventType)) {
71+
// When the event involves the creation or the deletion of a Digital Twin then include the model
72+
// of the Digital Twin at the root level of the event itself.
73+
eventToClients.Add("model", eventToClients["data"]["$metadata"]["$model"]);
6374
}
6475

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

0 commit comments

Comments
 (0)