2013-09-06 5 views
1

Я пытаюсь создать дребезг Bot на основе коды для консоли бота, расположенного hereПочему мой вход не найден в моем C# WPF Chatter Bot?

Я получаю исключение при запуске программы после того, как я вхожу вход: «Формат исключения не обрабатывается» «Input строка не была в правильном формате ». в классе «alice» на линии:

Result result = myBot.Chat(request); 

Похоже, что запрос возвращает null. Может кто-то, пожалуйста, помогите мне выяснить, почему мой вход не найден в файлах AIML и/или почему он возвращает null?

Ниже Основной класс:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 
using AIMLbot; 

namespace Chatbot 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     String userInput = null; 
     alice myAlice = new alice(); 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void inputButtonClick(object sender, RoutedEventArgs e) 
     { 
      userInput = inputTextBox.Text; 
      outPutTextBlock.Text = myAlice.getOutput(userInput); 
      inputTextBox.Text = ""; 
      userInput = null; 
     } 
    } 
} 

Ниже "алиса" код класса:

//Written by Matt Gonzalez 
//with help from Nicholas H.Tollervey's ConsoleBot2.5 
//and AIML base files from the A.L.I.C.E Bot project 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using AIMLbot; 

namespace Chatbot 
{ 
    class alice 
    { 
     private Bot myBot; 
     private User myUser; 

     /// <summary> 
     /// Create a new instance of the ALICE object 
     /// </summary> 

     public alice() 
     { 
      myBot = new Bot(); 
      myUser = new User("consoleUser", myBot); 
     } 

     /// <summary> 
     /// This initialization can be put in the alice() method 
     /// but I kept it seperate due to the nature of my program. 
     /// This method loads all the AIML files located in the \AIML folder 
     /// </summary> 

     public void Initialize() 
     { 
      myBot.loadSettings(); 
      myBot.isAcceptingUserInput = false; 
      myBot.loadAIMLFromFiles(); 
      myBot.isAcceptingUserInput = true; 
     } 

     /// <summary> 
     /// This method takes an input string, then finds a response using the the AIMLbot 
     /// library and returns it 
     /// </summary> 
     /// <param name="input">Input Text</param> 
     /// <returns>Response</returns> 

     public String getOutput(String input) 
     { 
      Request request = new Request(input, myUser, myBot); 
      Result result = myBot.Chat(request); 
      return (result.Output); 
     } 
    } 

} 

И Ниже приведен XAML:

<Window x:Name="chatBotWindow" x:Class="Chatbot.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Chat Bot" Height="480" Width="640" Background="White"> 
    <Grid x:Name="chatBotMainGrid" Background="#FFE6E6E6"> 
     <TextBox x:Name="inputTextBox" HorizontalAlignment="Left" Height="25" 
      Margin="149,83,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="353" 
      BorderBrush="Black"/> 
     <Label x:Name="inputTextLabel" Content="Input Text: " HorizontalAlignment="Left" 
      Height="25" Margin="53,83,0,0" VerticalAlignment="Top" Width="96" 
      FontFamily="Neuropol" FontSize="14"/> 
     <TextBlock x:Name="outPutTextBlock" HorizontalAlignment="Left" Height="290" 
      Margin="149,138,0,0" TextWrapping="Wrap" VerticalAlignment="Top" 
       Width="358"><InlineUIContainer> 
       <Border x:Name="outputBorder" BorderBrush="Red" BorderThickness="1" 
          Height="272" Width="355" Background="White"> 
       <ScrollBar x:Name="outPutScrollBar" HorizontalAlignment="Left" 
           Height="272" Margin="337,-1,-1,-1" VerticalAlignment="Top" 
           Width="10" BorderBrush="Red"/> 
       </Border> 
      </InlineUIContainer></TextBlock> 
     <Button x:Name="inputButton" Content="Enter" HorizontalAlignment="Left" Height="25" 
      Margin="507,83,0,0" VerticalAlignment="Top" Width="76" 
      FontFamily="Neuropol" FontSize="16" Click="inputButtonClick"> 
      <Button.Background> 
        <LinearGradientBrush EndPoint="0,1" StartPoint="0,0"> 
         <GradientStop Color="White" Offset="0"/> 
         <GradientStop Color="#FFEBEBEB" Offset="0.5"/> 
         <GradientStop Color="#FFC5BCBC" Offset="0.5"/> 
         <GradientStop Color="Red" Offset="1"/> 
        </LinearGradientBrush> 
      </Button.Background> 
     </Button> 
     <Label x:Name="titleLabel" Content="Tony's Chat Bot" HorizontalAlignment="Left" 
      Height="49" Margin="221,29,0,0" VerticalAlignment="Top" 
      Width="203" FontFamily="Arnprior" FontSize="20"/> 
    </Grid> 
</Window> 

ответ

0

Привет я побежал ваша программа основана на предоставленном коде. Ваши проблемы не связаны с wpf. Это проблема alice.Initialize(). он не вызывается вообще. если вы вызываете его до «getOutput», все работает. Для цели тестирования я поставил его в alice ctor.

public alice() 
    { 
     myBot = new Bot(); 
     myUser = new User("consoleUser", myBot); 
     Initialize(); 
    } 
+0

Я пробовал проверять его так, но теперь я получаю новое исключение, когда я бегу. Msgstr "Исключено исключение из файла XAML. Источник недоступен: вызов конструктора типа Chatbot.MainWindow, который соответствует указанным ограничениям привязки, сделал исключение. ' Номер строки «3» и позиция линии «9». – antman1p

+0

у вас есть папка «aiml» и «config» под вашей папкой debug/release в соответствии с этим примером: http://downloads.sourceforge.net/project/aimlbot/aimlbot/2.5/ConsoleBot2.5.zip?r=http % 3A% 2F% 2Fsourceforge.net% 2Fprojects% 2Faimlbot% 2Ffiles% 2Faimlbot% 2F2.5% 2F & ts = 1299513927 & use_mirror = cdnetworks-us-1 –

+0

Мне не хватало папку config. Вы правы. Теперь он отлично работает! – antman1p