Esempio n. 1
0
        private void ApiContextToAdvContext(ApiAiFulfillmentRequest request)
        {
            _advContext.ContextId = request.SessionId;
            _advContext.SetCurrentLocation(1);
            _advContext.IntentName = request.Result.Metadata.IntentName;
            _advContext.Parameters = request.Result.Parameters;

            var requestAdvContext = request.Result.Contexts
                                    .FirstOrDefault(c => c.Name.EqualsNoCase("AdventureContext"));

            if (requestAdvContext != null && requestAdvContext.Parameters != null)
            {
                if (requestAdvContext.Parameters.ContainsKey("CurrentLocationId"))
                {
                    var locationId = int.Parse(requestAdvContext.Parameters["CurrentLocationId"]);
                    _advContext.SetCurrentLocation(locationId);
                }
                if (requestAdvContext.Parameters.ContainsKey("Flags"))
                {
                    var flagStr = requestAdvContext.Parameters["Flags"];
                    var bytes   = Convert.FromBase64String(flagStr);
                    _advContext.Flags = (AdventureContextFlags)BitConverter.ToInt32(bytes, 0);
                }
                if (requestAdvContext.Parameters.ContainsKey("ItemLocations"))
                {
                    _advContext.ItemLocationsFromJson(requestAdvContext.Parameters["ItemLocations"]);
                }
                if (requestAdvContext.Parameters.ContainsKey("ItemsMoveableStates"))
                {
                    _advContext.StatesFromJson(requestAdvContext.Parameters["ItemsMoveableStates"]);
                }
            }
        }