Exemple #1
0
        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()));
            }
        }
Exemple #2
0
 public SkillResponse Intent([FromBody] SkillRequest intent) => SkillResponseHelper.SimpleGreetResponse("my app");