public SkillResponse Post() { //Were returning a SkillResponse //[FromBody]SkillRequest value DateTime now = DateTime.Now; // reference time for this request var memStream = new MemoryStream(); HttpContext.Request.Body.CopyTo(memStream); //Verify Signature string signatureCertChainUrl = HttpContext.Request.Headers["SignatureCertChainUrl"]; string signature = HttpContext.Request.Headers["Signature"]; var requestBytes = memStream.ToArray(); var requestString = System.Text.Encoding.UTF8.GetString(requestBytes); var value = JsonConvert.DeserializeObject <SkillRequest>(requestString); var validCertification = AmazonSignatureVerifier.VerifyRequestSignature(requestBytes, signature, signatureCertChainUrl); if (!validCertification) { HttpContext.Response.StatusCode = 400; return(new SkillResponse()); } //Verify timestamp var timestampValid = AmazonSignatureVerifier.VerifyRequestTimestamp(value.Request.Timestamp, now); if (!timestampValid) { HttpContext.Response.StatusCode = 400; return(new SkillResponse()); } switch (value.Request.Type) { case "LaunchRequest": return(SkillResponseHelper.EndSessionWithMessage(Get())); case "SessionEndedRequest": return(SkillResponseHelper.EndSessionWithMessage("Goodbye")); } if (value.Request.Intent.Name == "AMAZON.HelpIntent") { return(SkillResponseHelper.RespondWithHelpMesseage()); } else if (value.Request.Intent.Name == "AMAZON.StopIntent") { return(SkillResponseHelper.EndSessionWithMessage("Goodbye")); } else if (value.Request.Intent.Name == "AMAZON.CancelIntent") { return(SkillResponseHelper.EndSessionWithMessage("Goodbye")); } else { return(SkillResponseHelper.EndSessionWithMessage(Get())); } }
public SkillResponse Intent([FromBody] SkillRequest intent) => SkillResponseHelper.SimpleGreetResponse("my app");