public override async Task HandleMessageAsync( DeviceTelemetryMessage requestBody, RequestDetails requestDetails, RequestMessageHeaders headers, IExtensionGatewayClient client, ILogger log) { await client.PutDeviceTelemetryAsync(requestDetails.DeviceName, requestBody); }
public override async Task HandleStatusAsync(CommandStatusResult statusResult, RequestDetails requestDetails, RequestMessageHeaders headers, IExtensionGatewayClient client, ILogger log) { if (client.CanSendUserNotification) { var notificationPayload = new { Command = statusResult.CommandName, VehicleId = statusResult.VehicleId, CorrelationId = statusResult.Payload.CorrelationId, Message = statusResult.Payload.Payload, Time = statusResult.Payload.Time }; await client.SendUserNotificationAsync(notificationPayload); } }
public override async Task HandleMessageAsync(DeviceTelemetryMessage requestBody, RequestDetails requestDetails, RequestMessageHeaders headers, IExtensionGatewayClient client, ILogger log) { //write telemetry to statestore await client.PutDeviceTelemetryAsync(requestDetails.DeviceName, requestBody); // Create a secret client using the DefaultAzureCredential DefaultAzureCredential cred = new DefaultAzureCredential(); DigitalTwinsClient dtcli = new DigitalTwinsClient(new Uri("https://mobility-vss.api.wus2.digitaltwins.azure.net"), cred); BasicRelationship rel = JsonSerializer.Deserialize <BasicRelationship>((string)requestBody.Payload); string relationshipId = Guid.NewGuid().ToString(); await dtcli.CreateRelationshipAsync(rel.SourceId, relationshipId, (string)requestBody.Payload); }
public async override Task <WebCommandResponsePayload> ExecuteCommandAsync(JToken requestBody, RequestDetails requestDetails, RequestMessageHeaders headers, IExtensionGatewayClient client, ILogger log) { try { GeoLocation location = await client.GetLastLocationAsync(); JToken resultObject = location == null ? WebCommandResponsePayload.EmptyPayload : JToken.FromObject(location); WebCommandResponsePayload result = new WebCommandResponsePayload(WebCommandStatus.Success, resultObject); return(result); } catch (Exception) { throw; } }
public override async Task <WebCommandResponsePayload> ExecuteCommandAsync(JToken requestBody, RequestDetails requestDetails, RequestMessageHeaders headers, IExtensionGatewayClient client, ILogger log) { // Defines the message to be sent to the device. // Note that you MUST update the "InsertDeviceNameFromProvisioningStepHere" string to represent the device that was provisioned during the Provisioning getting started sample. DeviceCommandMessage message = new DeviceCommandMessage("contosodevice01", "CreateTwin", requestBody); // Status related to the command will be sent to the SampleCommandStatusHandler class. CommandStatusDetails statusDetails = new CommandStatusDetails("SampleCommandStatusHandler", TimeSpan.FromMinutes(2), TimeSpan.FromSeconds(230)); await client.SendDeviceCommandAsync(message, statusDetails); // indicates back to the user that the device command was successfully enqueued (but may not have been processed yet by the vehicle!). return(new WebCommandResponsePayload(WebCommandStatus.Success, WebCommandResponsePayload.EmptyPayload)); }
public override async Task HandleMessageAsync(DeviceTelemetryMessage requestBody, RequestDetails requestDetails, RequestMessageHeaders headers, IExtensionGatewayClient client, ILogger log) { //write telemetry to statestore await client.PutDeviceTelemetryAsync(requestDetails.DeviceName, requestBody); // Create a secret client using the DefaultAzureCredential DefaultAzureCredential cred = new DefaultAzureCredential(); DigitalTwinsClient dtcli = new DigitalTwinsClient(new Uri("https://mobility-vss.api.wus2.digitaltwins.azure.net"), cred); DTUnit du = JsonSerializer.Deserialize <DTUnit>((string)requestBody.Payload); var updateOps = new UpdateOperationsUtility(); if (du.type == "boolean") { updateOps.AppendAddOp(du.path, bool.Parse(du.value)); } else if ((du.type == "date") || (du.type == "datetime") || (du.type == "time")) { updateOps.AppendAddOp(du.path, DateTime.Parse(du.value)); } else if (du.type == "double") { updateOps.AppendAddOp(du.path, double.Parse(du.value)); } else if (du.type == "float") { updateOps.AppendAddOp(du.path, float.Parse(du.value)); } else if (du.type == "integer") { updateOps.AppendAddOp(du.path, int.Parse(du.value)); } else if (du.type == "long") { updateOps.AppendAddOp(du.path, long.Parse(du.value)); } else { updateOps.AppendAddOp(du.path, du.value); } string patchPayload = updateOps.Serialize(); await dtcli.UpdateDigitalTwinAsync(du.dtID, patchPayload); // send stuff to the analytics pipeline var telemetryItem = new { VehicleId = requestDetails.VehicleId, TelemetryName = requestBody.TelemetryName, Time = requestBody.Time, Payload = patchPayload }; await client.SendToAnalyticsPipeline(telemetryItem); }