Example #1
0
        /// <summary>
        /// Gets a SYNC intent response for external validation.
        /// </summary>
        /// <returns>Response.</returns>
        public IActionResult SyncValidate()
        {
            var response = new Response
            {
                RequestId = Guid.NewGuid().ToString(),
                Payload   = _syncIntentHandler.Handle(new Models.Request.SyncIntent())
            };

            return(Json(response));
        }
        public IActionResult Post([FromBody] Models.Request.Request request)
        {
            // Begin building Response
            var response = new Models.Response.Response {
                RequestId = request.RequestId
            };

            // Smart Home Intents use a single object in inputs, containing the intent value, and a payload object with automation-specific objects.
            if (request.Inputs == null || request.Inputs.Count != 1)
            {
                response.Payload = new Models.Response.ErrorResponsePayload {
                    ErrorCode = "protocolError"
                };
                return(BadRequest(response));
            }

            var input = request.Inputs[0];

            switch (input)
            {
            case Models.Request.SyncIntent syncIntent:
                response.Payload = _syncIntentHandler.Handle(syncIntent);
                return(Ok(response));

            case Models.Request.QueryIntent queryIntent:
                response.Payload = _queryIntentHandler.Handle(queryIntent);
                return(Ok(response));

            case Models.Request.ExecuteIntent executeIntent:
                response.Payload = _executeIntentHandler.Handle(executeIntent);
                return(Ok(response));

            case Models.Request.DisconnectIntent disconnectIntent:
                _disconnectIntentHandler.Handle(disconnectIntent);
                return(Ok());
            }

            // No valid intents found, return error
            response.Payload = new Models.Response.ErrorResponsePayload {
                ErrorCode = "protocolError"
            };
            return(BadRequest(response));
        }