private string GetStatusMessageForPort(string portName, IAlexaProxyService alexaProxyService) { var portState = alexaProxyService.GetStateOfPort(portName); string result; if (portState != null) { switch (portState.PortType) { case PortTypes.Switch: result = GetStatusMessageForSwitchPort(portState, portName); break; case PortTypes.Pulse: result = GetStatusMessageForPulsePort(portState, portName); break; default: result = $"Não foi possível encontrar {portName}"; break; } } else { result = $"Não foi possível encontrar {portName}"; } return(result); }
private void LocateMissingPorts(IntentExecutorContext intentExecutorContext, IAlexaProxyService alexaProxyService) { if (intentExecutorContext.TargetPorts == null) { LocatePorts(intentExecutorContext, alexaProxyService); } }
private void LocatePorts(IntentExecutorContext intentExecutorContext, IAlexaProxyService alexaProxyService) { var query = intentExecutorContext.PortsQuery; var ports = alexaProxyService.GetAllPorts(PortTypes.Switch); var querys = query.Split(" e "); var portInfos = querys.Select(p => PortInfo.Locate(ports, p)).ToArray(); intentExecutorContext.TargetPorts = portInfos.Select(p => p.TargetPort).ToArray(); }
public IntentExecutorContext Execute(IntentExecutorContext intentExecutorContext, Intent intent, IAlexaProxyService alexaProxyService) { var intentExecutor = IntentExecutorLocator.GetExecutorForIntent(intentExecutorContext.Intent); intentExecutorContext.NeedConfirmation = false; return(intentExecutor.Execute(intentExecutorContext, intent, alexaProxyService)); }
public IntentExecutorContext Execute(IntentExecutorContext intentExecutorContext, Intent intent, IAlexaProxyService alexaProxyService) { intentExecutorContext = EnsureContexto(intentExecutorContext, intent); LocateMissingPorts(intentExecutorContext, alexaProxyService); var portStatesMessages = intentExecutorContext.TargetPorts.Select(p => GetStatusMessageForPort(p, alexaProxyService)); IntentExecutorContext result; if (portStatesMessages.Any()) { result = new IntentExecutorContext() { NeedConfirmation = false, Response = BuildResponseMessage(portStatesMessages) }; } else { result = new IntentExecutorContext() { NeedConfirmation = false, Response = "Não foi possível determinar os dispositivos requisitados" }; } return(result); }
public IntentExecutorContext Execute(IntentExecutorContext intentExecutorContext, Intent intent, IAlexaProxyService alexaProxyService) { intentExecutorContext = EnsureContexto(intentExecutorContext, intent); LocateMissingPorts(intentExecutorContext, alexaProxyService); if (intentExecutorContext.TargetPorts == null) { intentExecutorContext.Response = $"Não foi possível localizar o dispositivo {intentExecutorContext.PortsQuery}"; } else if (!intentExecutorContext.NeedConfirmation) { var changePortStateRequests = intentExecutorContext.TargetPorts.Select(p => new ChangePortStateRequest(p)).ToArray(); foreach (var changePortStateRequest in changePortStateRequests) { changePortStateRequest.StateChanged = alexaProxyService.PulsePort(changePortStateRequest.PortName); } intentExecutorContext.Response = BuildResponseMessage(changePortStateRequests); } else if (intentExecutorContext.NeedConfirmation) { intentExecutorContext.Response = BuildConfirmationMessage(intentExecutorContext); } return(intentExecutorContext); }
public IntentExecutorContext Execute(IntentExecutorContext intentExecutorContext, Intent intent, IAlexaProxyService alexaProxyService) { intentExecutorContext = EnsureContexto(intentExecutorContext, intent); LocateMissingPorts(intentExecutorContext, alexaProxyService); if (intentExecutorContext.TargetPorts == null) { intentExecutorContext.Response = $"Não foi possível localizar o dispositivo {intentExecutorContext.PortsQuery}"; } else if (!intentExecutorContext.NeedConfirmation) { var changePortStateRequests = intentExecutorContext.TargetPorts.Select(p => new ChangePortStateRequest(p)).ToArray(); var targetState = GetTargetState(intentExecutorContext); Func <string, bool> changeStateFunc; switch (targetState) { case TargetStates.Activate: changeStateFunc = alexaProxyService.ActivatePort; break; case TargetStates.Deactivate: changeStateFunc = alexaProxyService.DeactivatePort; break; default: throw new SpeechletException($"TargetStates '{targetState}' não é suportado"); } foreach (var changePortStateRequest in changePortStateRequests) { changePortStateRequest.StateChanged = changeStateFunc(changePortStateRequest.PortName); } intentExecutorContext.Response = BuildResponseMessage(changePortStateRequests, targetState); } else if (intentExecutorContext.NeedConfirmation) { intentExecutorContext.Response = BuildConfirmationMessage(intentExecutorContext); } return(intentExecutorContext); }
public ThinkerThingsSpeechlet(IAlexaProxyService alexaProxyService) { _alexaProxyService = alexaProxyService; }
public ModoRave(IAlexaProxyService alexaProxyService) { _alexaProxyService = alexaProxyService; _ports = _alexaProxyService.GetAllPorts(PortTypes.Switch); }
public IntentExecutorContext Execute(IntentExecutorContext intentExecutorContext, Intent intent, IAlexaProxyService alexaProxyService) { var modoRave = new ModoRave(alexaProxyService); var thread = new Thread(() => modoRave.Execute()); thread.Start(); return(new IntentExecutorContext() { Response = "Vamos começar a rave!", NeedConfirmation = false, }); }