示例#1
0
 public override async Task HandleMessageAsync(
     DeviceTelemetryMessage requestBody,
     RequestDetails requestDetails,
     RequestMessageHeaders headers,
     IExtensionGatewayClient client,
     ILogger log)
 {
     await client.PutDeviceTelemetryAsync(requestDetails.DeviceName, requestBody);
 }
示例#2
0
 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);
        }
示例#4
0
        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);
        }