UNPKG

rivescript-brain

Version:

💬 NN-Based intent detection and middleware support for RiveScript.

49 lines (32 loc) • 1.23 kB
const classifier = require('./classifier'); const RiveScript = require('rivescript'); class engine extends RiveScript { constructor(options = {utf8:false}) { super(options); this.classifier = new classifier(); this.middleware = {}; } async reply(user, text){ if(!await this.inDiscussion(user)){ let classification = this.classifier.classify(text); await super.setUservar(user, 'topic', classification); } let data = await super.reply(user, text); data = await this.processMiddleware(user, text, data); return data; } async inDiscussion(user){ let discussion = await super.getUservar(user, 'discussion'); if(discussion == 'true') return true; else return false; } async processMiddleware(user, input, output){ let event = await super.getUservar(user, 'event'); await super.setUservar(user, 'event', 'undefined'); if(event != 'undefined'){ output = await this.middleware[event](input, output); } return output; } } module.exports = engine;