internal static void ModuleTesting() { var externalDatabase = RestaurantAgent.CreateRestaurantDatabase(); var module = new ExternalDatabaseProviderModule("restaurant", externalDatabase); var database = new EvaluatedDatabase(); database.Container .Pattern("luxury") .WhatItSpecifies("pricerange") .HowToEvaluate("expensive") ; database.StartQueryLog(); module.AttachTo(database); var result = database.Query(SemanticItem.AnswerQuery(Question.HowToDo, Constraints.WithInput("set restaurant specifier luxury"))); //var result = database.Query(SemanticItem.AnswerQuery(Question.IsItTrue, Constraints.WithInput("restaurant database has 1 result"))); var actionId = result.FirstOrDefault().Answer; var action = database.GetNativeAction(actionId); action(result.FirstOrDefault()); var log = database.FinishLog(); Log.Questions(log.GetQuestions()); Log.Result(result); Log.Dump(database); }
public string Input(string utterance) { var normalizedUtterance = normalizeInput(utterance); Log.DialogUtterance("U: " + normalizedUtterance); Db.StartQueryLog(); _outputCandidates.Clear(); //handle input processing _inputHistory.Add(normalizedUtterance); if (_inputHistory.Count == 1) { FireEvent("dialog started"); } FireEvent("user input is received"); HandleAllEvents(); finishInputProcessing(); HandleAllEvents(); _executionQuestions.Clear(); //handle output processing var output = _outputCandidates.LastOrDefault(); var log = Db.FinishLog(); Log.Questions(log.GetQuestions()); var normalizedOutput = prettyPrintOutput(output); Log.DialogUtterance("S: " + normalizedOutput); return(normalizedOutput); }