当我尝试运行AIML代码

时间:2018-04-07 07:54:32

标签: c# aiml

我正在开发一个使用聊天机器人的应用程序。它将部分运行在我训练过的LUIS数据集上,部分运行在AIML上,以防我没有任何相关的响应。

以下是该文件中的一段代码。我基本上是尝试从LUIS获取实体类型,如果它什么也没有返回,那么尝试运行AIML。

但它一直在抛出未处理的异常: 未处理的类型' System.ArgumentNullException'发生在mscorlib.dll中 附加信息:值不能为空。

我从另一个项目中获取了这个AIML代码。这是链接: https://github.com/Gr8z/ChatBotProject

异常发生在行:AimlBot.loadSettings();

这里是异常的堆栈跟踪:

at System.IO.Path.Combine(String path1,String path2) 
at AIMLbot.Bot.get_PathToConfigFiles();
at AIMLbot.Bot.loadSettings(String pathToSettings) 
at WDB.Chatbot.AIMLChatbot.Initialize() in
E:\WDB-master\WDB\manishChatBot.cs:line 229

源代码:

#region LUIS Link
private string luisLink(string usrInput)
{
    string input = usrInput;
    string op = wb.DownloadString("https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/15c6bd2a-ecdc-41de-a054-0cce461e13a3?subscription-key=b72bdbb572fe4e90837647eb9c82b1c0&verbose=true&timezoneOffset=0&q=" + input);
    var jsonParse = JsonConvert.DeserializeObject<JClass>(op);

    if (jsonParse.entities.Count != 0)
    {
        entity = jsonParse.entities[0].type;
        return entity;
    }
    else
    {
        AIMLChatBot a = new AIMLChatBot();
        string aiml_response  = a.getOutput(input);
        return aiml_response;
    }
}
#endregion

#region AIML

public class AIMLChatBot
{
    const string UserId = "szabist";
    private Bot AimlBot;
    private User myUser;

    public AIMLChatBot()
    {
        AimlBot = new Bot();
        myUser = new User(UserId, AimlBot);
        Initialize();
    }

    // Loads all the AIML files in the \AIML folder         
    public void Initialize()
    {
        AimlBot.loadSettings(); //Exception on this line
        AimlBot.isAcceptingUserInput = false;
        AimlBot.loadAIMLFromFiles();
        AimlBot.isAcceptingUserInput = true;
    }

    // Given an input string, finds a response using AIMLbot lib
    public String getOutput(String input)
    {
        Request r = new Request(input, myUser, AimlBot);
        Result res = AimlBot.Chat(r);
        return (res.Output);
    }
}
#endregion

1 个答案:

答案 0 :(得分:2)

我按照给定的链接:https://github.com/Gr8z/ChatBotProject并下载了AIMLBot.dll文件,该文件具有方法AimlBot.loadSettings();的实现。

在亲自编译文件时,我发现了类似这样的实现:

  

enter image description here

因此,我建议检查您的../bin/Debug/中是否有 config / Settings.xml 文件或程序所在的目录。

程序无法找到该文件的位置,因为它会为您提供Null Argument Exception。