/// <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)); }