【问题标题】:RiveScript with MeteorRiveScript 与 Meteor
【发布时间】:2016-06-27 20:24:37
【问题描述】:

我想在 Meteor 项目中使用 RiveScript。我无法让事情运转起来。我通过 npm 安装 RiveScript,然后按照 npm 站点上的指南进行操作。

读取 RiveScript 模块并为其提供用户输入的文件。

var RiveScript = require("RiveScript");
var bot;

function loadingDone(files) {
    console.log("ok")
}

function loadingError(files, error) {
    console.log("error");
}

Meteor.startup(function () {
    bot = new RiveScript({utf8: true});
    bot.loadDirectory("brain", loadingDone, loadingError);
    bot.sortReplies();
});

Meteor.methods({
    'user-input': function (input) {
        return bot.reply("local-user", input);
    }
});

我收到此错误(在服务器上):

(STDERR) 用户 local-user 在一个名为“随机”的空主题中

bot.reply() 函数的返回信息是:

错误:未找到默认主题“随机”!

【问题讨论】:

    标签: node.js meteor npm


    【解决方案1】:

    RiveScript 作者在这里。

    您的代码中的一个问题是需要在回复完成加载后(在loadingDone 处理程序中)调用sortReplies() 函数。

    var RiveScript = require("RiveScript");
    var bot;
    
    function loadingDone(files) {
        console.log("ok");
        bot.sortReplies();
    }
    
    function loadingError(files, error) {
        console.log("error");
    }
    
    Meteor.startup(function () {
        bot = new RiveScript({utf8: true});
        bot.loadDirectory("brain", loadingDone, loadingError);
    });
    
    Meteor.methods({
        'user-input': function (input) {
            return bot.reply("local-user", input);
        }
    });

    如果在那之后您仍然遇到问题,请尝试确保 RiveScript 在 Meteor 初始化之前已完全加载回复集。查看您的代码,应该没问题,因为 bot 变量是全局变量,如果 user-input 处理程序没有被调用立即,那么机器人应该已经准备好了。

    要尝试的另一件事是验证回复是否已加载;打开调试模式,看看它是否打印出它正在解析的 RiveScript 文件的内容;如果不是,则可能意味着它从错误的目录加载并且找不到任何要解析的 *.rive 文件。

    【讨论】:

    • 我的问题是由于目录。 JS文件的相对路径我搞不明白,现在只好用绝对路径了。
    猜你喜欢
    • 1970-01-01
    • 2017-03-29
    • 2012-05-02
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    相关资源
    最近更新 更多