2012-07-30 5 views
1

Total noob quand il s'agit d'utiliser AIML et avoir du mal à obtenir cette configuration pour une page web asp.net mvc. J'ai une configuration de base de vue que l'utilisateur peut entrer un message dans une zone de texte et j'essaye d'obtenir le chatbot pour retourner une réponse. J'ai obtenu cette interaction pour travailler avec mon cas de texte, donc je sais que la fonction obtient correctement la réponse des utilisateurs et que je peux renvoyer une réponse et l'afficher dans la fenêtre de chat, mon problème est de configurer le chatbot pour créer des réponses dynamiques . En ce moment à mon contrôleur je:Configurer AIML dans asp.net MVC (Erreur FormatException)

String filePath = Server.MapPath("~/aimlBot/aiml/"); 
    ChatBot catbot = new ChatBot(filePath); 
    string ReturnText = catbot.GetOutput(text); //text is just a string no html or fancy stuff in it 

et ma ChatBot classe

Public class ChatBot : Bot 
    { 
     private Bot myBot; 
     private User myUser; 

     public ChatBot(string filepath) 
     { 
      myBot = new Bot(); 
      myUser = new User("Human", myBot); 
      Initialize(filepath); 
     } 

     private void Initialize(string filepath) 
     { 
      AIMLbot.Utils.AIMLLoader loader = new AIMLbot.Utils.AIMLLoader(this.myBot); 
      myBot.isAcceptingUserInput = false; 
      loader.loadAIML(filepath);   
      myBot.isAcceptingUserInput = true; 
     } 

     public String GetOutput(String input) 
     { 
      Request r = new Request(input, myUser, myBot); 
      Result res = myBot.Chat(r); //breaks here 
      string response = "Bot: " + res.Output; 
      return (response); 
     } 
    } 

le problème que je reçois est le résultat res = myBot.Chat (r); le programme jette un FormatException

System.FormatException was unhandled by user code 
    Message=Input string was not in a correct format. 
    Source=mscorlib 
    StackTrace: 
    at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt) 
    at System.Convert.ToDouble(String value) 
    at AIMLbot.Bot.get_TimeOut() 
    at AIMLbot.Utils.Node.evaluate(String path, SubQuery query, Request request, MatchState matchstate, StringBuilder wildcard) 
    at AIMLbot.Bot.Chat(Request request) 
    at Ira.aimlBot.ChatBot.GetOutput(String input) in C:\Users\Ira\Documents\Visual Studio 2010\Projects\Ira\Ira\aimlBot\ChatBot.cs:line 36 
    at Ira.Controllers.ARGController.Speak(String text) in C:\Users\Ira\Documents\Visual Studio 2010\Projects\Ira\Ira\Controllers\ARGController.cs:line 35 
    at lambda_method(Closure , ControllerBase , Object[]) 
    at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) 
    at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) 
    InnerException: 

Je ne sais pas ce qui ne va pas avec mon code. J'ai essayé même de le changer de la chaîne de variable à juste un cas de hardcode comme "bonjour comment allez-vous" qui a encore provoqué la même exception.

Répondre

2

Vous avez tout parfait sauf la fonction loadSettings. S'il vous plaît se référer l'extrait ci-dessous pour effacer votre problème!

public ChatBot(string filepath) 
{ 
      myBot = new Bot(); 
      myBot.loadSettings(); // <----- You have to insert this line to fix the error! 
      myUser = new User("Human", myBot); 
      Initialize(filepath); 
}