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"]); } } }
public ApiAiFulfillmentResponse Post([FromBody] ApiAiFulfillmentRequest request) { try { _log.LogInformation("Received fulfillment request."); _log.LogInformation("Intent is " + request.Result.Metadata.IntentName); ApiContextToAdvContext(request); _handler.Handle(); _log.LogInformation("Creating response..."); _log.LogInformation(_advContext.SpeechResponse); var response = new ApiAiFulfillmentResponse { Speech = _advContext.SpeechResponse, DisplayText = _advContext.TextResponse, Source = "apiWebhook", //Data = "", ContextOut = new[] { AdvContextToApiContext() }, //FollowupEvent = "" }; _log.LogInformation("Sending response..."); return(response); } catch (Exception ex) { _log.LogError(ex.Message); return(new ApiAiFulfillmentResponse { Speech = ex.Message, DisplayText = ex.Message }); } }