C# verbot 5 sdk-加载知识库

C# verbot 5 sdk-加载知识库,c#,C#,我正在寻求任何使用verbot sdk的人的帮助 我正在制作一个程序,我想使用LearnedKnowledge.vkb、Teacher.vkb和任何标准机器人(例如julia)。以前使用过这个的人都会知道,根据教师中的规则,你基本上可以对机器人不理解的事情写下响应,并对其进行动态训练 我计划使用语音识别和文本到语音,但我现在的问题是,在加载知识库之后,我似乎无法从机器人那里得到任何响应 以下是我拥有的:来自verbots.sourceforge.net的Verbot5Library.dll(我还

我正在寻求任何使用verbot sdk的人的帮助

我正在制作一个程序,我想使用LearnedKnowledge.vkb、Teacher.vkb和任何标准机器人(例如julia)。以前使用过这个的人都会知道,根据教师中的规则,你基本上可以对机器人不理解的事情写下响应,并对其进行动态训练

我计划使用语音识别和文本到语音,但我现在的问题是,在加载知识库之后,我似乎无法从机器人那里得到任何响应

以下是我拥有的:来自verbots.sourceforge.net的Verbot5Library.dll(我还获得了编辑器和播放器,以确保文件正常工作)。在我的程序中,我将变量设置为:

    Verbot5Engine verbot = new Verbot5Engine();
    KnowledgeBase kb = new KnowledgeBase();
    KnowledgeBaseItem kbi = new KnowledgeBaseItem();
    State state = new State();
    XMLToolbox xmlToolboxKB = new XMLToolbox(typeof(KnowledgeBase));
然后初始化verbot引擎并加载kbs:

        // using the xmlToolboxKB method I saw in this forum:  http://www.verbots.com/forums/viewtopic.php?t=2984
        kbi.Fullpath = @"C:\\[full path to kb...]\\";
        kbi.Filename = "LearnedKnowledge.vkb";
        kb = (KnowledgeBase)xmlToolboxKB.LoadXML(kbi.Fullpath + kbi.Filename);
        verbot.AddKnowledgeBase(kb, kbi);

        kbi.Filename = "julia.vkb";
        kb = (KnowledgeBase)xmlToolboxKB.LoadXML(kbi.Fullpath + kbi.Filename);
        verbot.AddKnowledgeBase(kb, kbi);

        //trying to use LoadKnowledgeBase and LoadCompiledKnowledgeBase methods:  verbot.LoadKnowledgeBase("C:\\[full path to kb...]\\LearnedKnowledge.vkb");
        //verbot.LoadCompiledKnowledgeBase("C:\\[full path...]\\julia.ckb");
        //verbot.LoadCompiledKnowledgeBase("C:\\[full path...]\\Teacher.ckb");

        // set up state
        state.CurrentKBs.Add("C:\\[full path...]\\LearnedKnowledge.vkb");
        state.CurrentKBs.Add("C:\\[full path...]\\Teacher.vkb");
        state.CurrentKBs.Add("C:\\[full path...]\\julia.ckb");
最后,我尝试从verbot引擎获取响应:

        Reply reply = verbot.GetReply("hello", state);
        if (reply != null)
             Console.WriteLine(reply.AgentText);
        else
             Console.WriteLine("No reply found.");
我知道julia对“hello”有回应,因为我已经和编辑一起测试过了。但它所返回的只是“找不到回复”。此代码取自SDK下载中的示例控制台程序(因为可用文档很少)。这就是为什么我需要熟悉SDK的人提供一些指导


我没有正确加载KBs吗?它们是否都需要编译(.ckb)而不是XML文件(.vkb)?我使用了verbot.OnKnowledgeBaseLoadError事件处理程序,没有收到任何错误。我甚至删除了加载教师所需的资源文件Default.vsn,并且在尝试加载它时会抛出一个错误,因此我非常确定它加载正确。那么为什么我总是得到“找不到回复”

解决了:看

另一个用户似乎也有同样的问题:建议是先编译vkb,然后加载,这对我也不起作用。不过,动态使用规则是可行的,所以我认为LoadKnowledgeBase方法中一定有错误