Isoler BotFramework NodeJS Bot med LUIS til eget bibliotek

stemmer
0

Jeg ønsker å isolere min bot, som bruker BotFramework og LUIS, inn i det egne bibliotek og importere den inn i app.js. Jeg fulgte tutorials og eksempler på BotFramework GitHub, men det får meg ingen steder. Når jeg satte boten med LUIS dialoger i sin egen fil og eksportere den, aldri når ut til LUIS:

var builder = require('botbuilder');

//Import our libraries
var profileDialogue = require('../dialogues/profileDialogue');

//=========================================================
// Bot Setup
//=========================================================

// Create chat bot
var bot = new builder.UniversalBot(null, null, 'changeName');

// Add locale tools library to bot
bot.library(profileDialogue.createLibrary());

// Export createLibrary() function
exports.createLibrary = function() {
    return bot.clone();
}

var model = URL;
var recognizer = new builder.LuisRecognizer(model);
var dialog = new builder.IntentDialog({ recognizers: [recognizer] });

//=========================================================
// Bots Dialogs
//=========================================================

bot.dialog('/changeName', dialog);

bot.dialog('change name', [
    function(session, args, next) {
        console.log(args);
        if (args.score > 0.5) {
            profileDialogue.profile(session);
        }
    },
    function(session, results) {
        session.send('Ok... Changed your name to %s', session.userData.name);
    }
]);

Denne koden fungerer bare hvis den finnes i app.js filen som node samtaler på, aldri når jeg ønsker å isolere den for bruk i andre roboter.

Her er mine app.js:

var restify = require('restify');
var builder = require('botbuilder');

//Import our libraries
var changeName = require('./bots/changeName');

//=========================================================
// Bot Setup
//=========================================================

// Setup Restify Server
var server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 3978, function() {
    console.log('%s listening to %s', server.name, server.url);
});

// Create chat bot
var connector = new builder.ChatConnector({
    appId: process.env.MICROSOFT_APP_ID,
    appPassword: process.env.MICROSOFT_APP_PASSWORD
});
var bot = new builder.UniversalBot(connector);

server.post('/api/messages', connector.listen());

//=========================================================
// Bots Dialogs
//=========================================================

bot.dialog('/', [function(session, args, next) { session.send(I don't understand) }]);

// Add locale tools library to bot
bot.library(changeName.createLibrary());

Hvordan kan jeg oppnå dette riktig? Er jeg ikke å tenke på dette på riktig måte?

OPPDATER

I var i stand til å isolere den LUIS bot ved hjelp av en annen syntaks (bot.dialog slått seg sammen med triggerAction):

bot.dialog('/changeName', [
    function(session, args, next) {
        if (args && args.intent && args.intent.score && args.intent.score > 0.5) {
            console.log(args);
            profileDialog.profile(session);
        }
    },
    function(session, results) {
        session.send('Ok... Changed your name to %s', session.userData.name);
    }
]).triggerAction({
    matches: 'change name',
    intentThreshold: .50
});

Den siste gjenværende problemet jeg har er at foreldrene app.js må ha LUIS endepunkt, spiller det ingen rolle om barnet mitt bot har det eller ikke. Eventuelle andre ideer?

Publisert på 01/03/2017 klokken 19:56
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Ved hjelp av denne koden vil isolere bot og tillate det å bli kalt inn en app.js fil, med LUIS:

bot.dialog('/changeName', [
    function(session, args, next) {
        if (args && args.intent && args.intent.score && args.intent.score > 0.5) {
            console.log(args);
            profileDialog.profile(session);
        }
    },
    function(session, results) {
        session.send('Ok... Changed your name to %s', session.userData.name);
    }
]).triggerAction({
    matches: 'change name',
    intentThreshold: .50
});
Svarte 06/03/2017 kl. 18:38
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more