Ejemplo n.º 1
0
        public static void PushEventHubAnomalyRecords(RealTimeVehicleHealthAnomalyReport record)
        {
            //Get dataset id from a table name
            string datasetId = GetAllDatasets().Datasets(datasetName).First()["id"].ToString();

            record = CallMlApi(record);

            var records = new List <RealTimeVehicleHealthAnomalyReport> {
                record
            };

            HttpWebRequest request     = DatasetRequest(String.Format("{0}/{1}/tables/{2}/rows", datasetsUri, datasetId, AmlDatatable), "POST", AccessToken);
            var            requestData = new SendRequest
            {
                rows = records
            };

            PostRequest(request, JsonConvert.SerializeObject(requestData));
        }
Ejemplo n.º 2
0
        private static RealTimeVehicleHealthAnomalyReport CallMlApi(RealTimeVehicleHealthAnomalyReport record)
        {
            using (var client = new HttpClient())
            {
                var scoreRequest = new
                {
                    Inputs = new Dictionary <string, StringTable>()
                    {
                        {
                            "data",
                            new StringTable()
                            {
                                ColumnNames =
                                    new[]
                                {
                                    "vin", "model", "timestamp", "outsidetemperature", "enginetemperature", "speed",
                                    "fuel", "engineoil", "tirepressure", "odometer", "city",
                                    "accelerator_pedal_position", "parking_brake_status", "headlamp_status",
                                    "brake_pedal_status", "transmission_gear_position", "ignition_status",
                                    "windshield_wiper_status", "abs"
                                },
                                Values =
                                    new[, ]
                                {
                                    {
                                        record.vin, record.Model, record.timestamp, record.outsideTemperature.ToString(),
                                        record.engineTemperature.ToString(), record.speed.ToString(), record.fuel.ToString(), record.engineoil.ToString(),
                                        record.tirepressure.ToString(), record.odometer.ToString(), record.city,
                                        record.accelerator_pedal_position.ToString(),

                                        record.parking_brake_status.ToString().ToLower()
                                        .Replace("true", "1")
                                        .Replace("false", "0"),
                                        record.headlamp_status.ToString().ToLower().Replace("true", "1").Replace("false", "0"),
                                        record.brake_pedal_status.ToString().ToLower()
                                        .Replace("true", "1")
                                        .Replace("false", "0"),
                                        record.transmission_gear_position.ToLower(),
                                        record.ignition_status.ToString().ToLower().Replace("true", "1").Replace("false", "0"),
                                        record.windshield_wiper_status.ToString().ToLower()
                                        .Replace("true", "1")
                                        .Replace("false", "0"),
                                        record.abs.ToString().ToLower().Replace("true", "1").Replace("false", "0")
                                    },
                                }
                            }
                        },
                    },
                    GlobalParameters = new Dictionary <string, string>()
                    {
                    }
                };

                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", AMLKey);

                client.BaseAddress = new Uri(AMLUrl);

                HttpResponseMessage response = client.PostAsJsonAsync("", scoreRequest).Result;
                if (response.IsSuccessStatusCode)
                {
                    try
                    {
                        var    result         = response.Content.ReadAsStringAsync();
                        string responsefromml = result.Result;
                        var    obj            = JsonConvert.DeserializeObject <dynamic>(responsefromml);

                        string[] finalResult = obj.Results.data.value.Values.ToString().Split(',');

                        string maintenanceLabel = finalResult[19].Replace("\r", "").Replace("\n", "").Replace("\"", "");
                        maintenanceLabel        = maintenanceLabel.Trim();
                        record.MaintenanceLabel = Convert.ToInt32(maintenanceLabel);

                        string maintenanceProbability =
                            finalResult[20].Replace("\r", "").Replace("\n", "").Replace("]", "").Replace("\"", "");
                        maintenanceProbability        = maintenanceProbability.Trim();
                        record.MaintenanceProbability = Convert.ToDouble(maintenanceProbability);

                        string recallLabel = finalResult[21].Replace("\r", "").Replace("\n", "").Replace("\"", "");
                        recallLabel        = recallLabel.Trim();
                        record.RecallLabel = Convert.ToInt32(recallLabel);

                        string recallProbability =
                            finalResult[22].Replace("\r", "").Replace("\n", "").Replace("]", "").Replace("\"", "");
                        recallProbability        = recallProbability.Trim();
                        record.RecallProbability = Convert.ToDouble(recallProbability);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("Exception while parsing AML output: {0}", response.StatusCode);
                    }
                }
                else
                {
                    Console.WriteLine("Failed AML calling with status code: {0}", response.StatusCode);
                }
            }


            return(record);
        }