【问题标题】:How to use botkit with facebook and wit.ai如何在 facebook 和 wit.ai 中使用 botkit
【发布时间】:2017-06-01 23:32:29
【问题描述】:

我是聊天机器人开发的新手,我需要一些帮助。 虽然将 botkit 与 facebook messenger 和 wit.ai 连接起来以使用 NLP 似乎很简单。我没能做到。我最初的目标是进行像 hello-hello 这样的简单对话,但使用 wit.ai 作为中间件。 下面我附上代码。它应该做的是接收“你好”消息,将其传递给 wit.ai,然后回复“我听到你好!”作为答复(在此阶段不使用机智)。相反,我只是收到

调试:收到消息 调试: CUSTOM FIND CONVO XXXXXXXXXXXXXX XXXXXXXXXXXXXXX 调试:message_received 没有处理程序

在我发送给 facebook messenger bot 的每条消息之后。机智地看起来我正在收到消息,因为我在收件箱中收到消息以更新意图。 如果有任何代码比下面的代码简单得多,我会很高兴拥有它,这样我就可以从更简单的东西开始:)。 谢谢

<pre><code>
if (!process.env.page_token) {
console.log('Error: Specify page_token in environment');
process.exit(1);
}

if (!process.env.page_token) {
console.log('Error: Specify page_token in environment');
process.exit(1);
}

if (!process.env.verify_token) {
console.log('Error: Specify verify_token in environment');
process.exit(1);
}

if (!process.env.app_secret) {
console.log('Error: Specify app_secret in environment');
process.exit(1);
}

var Botkit = require('./lib/Botkit.js');
var wit = require('./node_modules/botkit-middleware-witai')({
token: process.env.wit,
minConfidence: 0.6,
logLevel: 'debug'
});
var os = require('os');
var commandLineArgs = require('command-line-args');
var localtunnel = require('localtunnel');

const ops = commandLineArgs([
  {name: 'lt', alias: 'l', args: 1, description: 'Use localtunnel.me to make your bot available on the web.',
  type: Boolean, defaultValue: false},
  {name: 'ltsubdomain', alias: 's', args: 1,
  description: 'Custom subdomain for the localtunnel.me URL. This option can only be used together with --lt.',
  type: String, defaultValue: null},
]);

if(ops.lt === false && ops.ltsubdomain !== null) {
console.log("error: --ltsubdomain can only be used together with --lt.");
process.exit();
}

var controller = Botkit.facebookbot({
debug: true,
log: true,
access_token: process.env.page_token,
verify_token: process.env.verify_token,
app_secret: process.env.app_secret,
validate_requests: true, // Refuse any requests that don't come from FB on your receive webhook, must provide FB_APP_SECRET in environment variables
});

var bot = controller.spawn({
});

controller.setupWebserver(process.env.port || 3000, function(err, webserver) {
controller.createWebhookEndpoints(webserver, bot, function() {
    console.log('ONLINE!');
    if(ops.lt) {
        var tunnel = localtunnel(process.env.port || 3000, {subdomain: ops.ltsubdomain}, function(err, tunnel) {
            if (err) {
                console.log(err);
                process.exit();
            }
            console.log("Your bot is available on the web at the following URL: " + tunnel.url + '/facebook/receive');
        });

        tunnel.on('close', function() {
            console.log("Your bot is no longer available on the web at the localtunnnel.me URL.");
            process.exit();
        });
    }
});
});

controller.middleware.receive.use(wit.receive);

controller.hears(['hello'], 'direct_message', wit.hears, function(bot, message) {
   bot.reply(message, 'I heard hello!');
 });

function formatUptime(uptime) {
var unit = 'second';
if (uptime > 60) {
    uptime = uptime / 60;
    unit = 'minute';
}
if (uptime > 60) {
    uptime = uptime / 60;
    unit = 'hour';
}
if (uptime != 1) {
    unit = unit + 's';
}

uptime = uptime + ' ' + unit;
return uptime;
}

【问题讨论】:

    标签: facebook chatbot wit.ai botkit


    【解决方案1】:

    确保您事先在 Wit.ai 中进行过几次对话,例如 hello there 并在该语句中突出显示 hello,例如 greetings

    现在我不确定您在 wit.ai 中的意图是什么,但在您的声明 controller.hears(['hello'] 中,您实际上是在听 wit.ai 的意图。所以在我上面提到的例子中,我们将使用hears(['greetings']),因为这是 wit.ai 的意图。

    另外,不要使用direct_message,而是使用message_received,它应该是这样的:

    controller.hears(['hello'], 'message_received', wit.hears, function(bot, message) {
       bot.reply(message, 'I heard hello!');
     });
    

    如果您正在努力追查问题,您可以在控制器中添加一个控制台语句,例如 console.log("Wit.ai detected entities", message.entities);,然后看看您能从中得到什么。

    如果您仍有任何问题,请告诉我 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-10
      • 1970-01-01
      • 2016-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-02
      相关资源
      最近更新 更多