public async Task <string> DeviceRequestCommand(DialogflowRequest dialogflowRequest) { //identify device object deviceRequested = ConvertDialogflowResquestToObject(dialogflowRequest); if (deviceRequested == null) { return(FormatterSpeechResponse(dialogflowRequest, $"I'm sorry, {dialogflowRequest.QueryResult.Parameters.idDevice} was not found", false)); } string jsonReturn = string.Empty; if (deviceRequested is SonoffDualR2) { //TODO: use pattern matching SonoffDualR2 sonoffRequest = ((SonoffDualR2)deviceRequested); if (ValidIdDeviceRequested(sonoffRequest.IdDevice)) { switch (sonoffRequest.SonoffModelEnum) { case DeviceEnum.SonoffDualR2: jsonReturn = await SonoffDualR2ExecuteCommand(sonoffRequest); return(FormatterSpeechResponse(dialogflowRequest, jsonReturn, true)); default: break; } } } return(FormatterSpeechResponse(dialogflowRequest, $"I'm sorry, {dialogflowRequest.QueryResult.Parameters.idDevice} was not found", false)); }
private object ConvertDialogflowResquestToObject(DialogflowRequest dialogflowRequest) { var device = GetInformationDeviceById(dialogflowRequest); if (device == null || device.Count() <= 0) { return(null); } var objectType = device.Where(x => x.Key.Equals("ModelDevice")).Select(y => y.Value).FirstOrDefault(); //TODO: valid objectType (!=null) //VALID DEVICE AND OBJECTTYPE switch ((DeviceEnum)Enum.Parse(typeof(DeviceEnum), objectType, true)) { case DeviceEnum.SonoffDualR2: { int _channel = 1; //by default we use channel 1 (if is not mentioned in the object in appsettings.json int.TryParse(device.Where(x => x.Key.Equals("Channel")).Select(y => y.Value).FirstOrDefault(), out _channel); return(new SonoffDualR2() { IdDevice = device.Where(x => x.Key.Equals("IP_Address")).Select(y => y.Value).FirstOrDefault(), SonoffChannel = _channel, SonoffRequestCommandEnum = ConvertStringCmdToSonoffRequestCommandEnum(dialogflowRequest.QueryResult.Parameters.command) }); } default: return(null); } }
public async Task <JsonResult> DeviceRequestCommand([FromBody] DialogflowRequest dialogflowRequest) { if (dialogflowRequest == null || string.IsNullOrEmpty(dialogflowRequest.QueryResult.Parameters.idDevice)) { return(await FormatResposeDialogFlow("I'm sorry, but I didn't find the device")); } return(await FormatResposeDialogFlow(await service.DeviceRequestCommand(dialogflowRequest))); }
private string FormatterSpeechResponse(DialogflowRequest dialogflowRequest, string response, bool trimResponse) { if (!trimResponse) { return(response); } response = response.Replace("\"", "").Replace("\\", "").Replace("}", "").Split(":")[1].ToLower(); return($"{dialogflowRequest.QueryResult.Parameters.idDevice} was turned {response}"); }
private IEnumerable <IConfigurationSection> GetInformationDeviceById(DialogflowRequest dialogflowRequest) { return(repository.GetInformationDeviceById(dialogflowRequest.QueryResult.Parameters.idDevice)); }