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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
 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,
            });
        }