/// <summary>
        ///
        /// </summary>
        /// <param name="json"></param>
        /// <returns></returns>
        public static SpeechletRequestEnvelope FromJson(JObject json)
        {
            var version = json.Value <string>("version");

            if (version != null && version != Sdk.VERSION)
            {
                throw new SpeechletValidationException(SpeechletRequestValidationResult.InvalidVersion, "Request must conform to 1.0 schema.");
            }

            return(new SpeechletRequestEnvelope {
                Version = version,
                Request = RequestParser.Parse(json.Value <JObject>("request")),
                Session = Session.FromJson(json.Value <JObject>("session")),
                Context = Context.FromJson(json.Value <JObject>("context"))
            });
        }