यहां छवि विवरण दर्ज करेंमैंने node.js का उपयोग करके बॉट फ्रेमवर्क के साथ एक चैटबॉट विकसित किया है। मैंने बटन बनाने के लिए कस्टम क्रियाओं और थंबनेलकार्ड का उपयोग किया है और रेगेक्स मैचों के अनुसार यह अन्य फ़ंक्शन को कॉल करेगा। जब भी उपयोगकर्ता हाँ/नहीं टाइप करता है, तो बॉट को पिछले संवाद के संचालन में जाना होगा। उदाहरण के लिए। मैं दो संवाद/मुख्य और/अंतिम का उपयोग कर रहा हूं, दो हां/नहीं कस्टम एक्शन (ऑनसेलेक्ट और इमबैक कार्ड) के साथ, अगर मैं/मुख्य खोलता हूं तो यह/मुख्य के लिए हां/नहीं कस्टम एक्शन डायलॉग खोल रहा होगा, इसे ऑपरेशन करना चाहिए /मुख्य। मेरे मामले में यह एक ही बटन नाम और समान इमबैक संदेशों के साथ दो कस्टम कार्रवाई के कारण नहीं हो रहा है। मैं दोनों कस्टम कार्रवाई के लिए /yes|y/gi &/no|n/gi के रूप में रेगेक्स का उपयोग कर रहा हूं।

bot.dialog('/',function (session, args, results) {
     if (!session.userData.name)
    {
        console.log('Start conversation');
        name = session.message.text;
        session.userData.name = name;
        //session.send("Hello ,"+userName +"\nI can help you with the following")
        session.send("I can help you with the following")
        session.beginDialog('/main');

}
    else if(!session.userData.conformation)
    {
        console.log('execute command');
        dialog_flow(session);
    }
    dialog_flow(session);
}
);
bot.dialog('/main',function (session, args, results) {
     const card = new builder.ThumbnailCard(session)
            .title('Bot for Global Service Desk')
            .text(' You can choose one of the options below')
            .buttons([
                 builder.CardAction.imBack(session, 'Network Support','Network Support')
            ]);
        const message = new builder.Message(session)
           .addAttachment(card)
        session.send(message);
        option = session.message.text;
        session.userData.option = option;       
}
);
bot.customAction({  matches:/Network/gi,
    onSelectAction: (session, args, next) => {
        const card = new builder.ThumbnailCard(session)
                         .text("You have Selected Network Support")
                        .buttons([
                            builder.CardAction.imBack(session,'Internet Connectivity Check','Internet Connectivity Check')  
                        ]);
                    const message = new builder.Message(session)
                        .addAttachment(card);
                    session.send(message);
                    option = session.message.text
                    session.userData.option = option        }}
);
 bot.customAction({
    matches:/Internet Connectivity Check/gi,

    onSelectAction: (session, args, next) => {
    option = session.message.text
    itsmdata["subcategory"] = option
    session.userData.option1 = option
    session.send("You have Selected\t"+option+",\tPlease confirm?");
                const card = new builder.ThumbnailCard(session)
                        .buttons([
                            builder.CardAction.imBack(session, 'YES', 'YES'),
                            builder.CardAction.imBack(session, 'NO', 'NO')
                        ]);
                    const message = new builder.Message(session)
                        .addAttachment(card);
                    session.endConversation(message);

                            }
    }
);

bot.dialog('/final',function (session, args, results) {

    const card = new builder.ThumbnailCard(session)
            .text('Do you want to Continue')
                        .buttons([
                            builder.CardAction.imBack(session, 'YES', 'YES'),
                            builder.CardAction.imBack(session, 'NO', 'NO')
                        ]);
                    const message = new builder.Message(session)
                        .addAttachment(card);
                    session.endConversation(message);
                            }
);

function dialog_flow(session){
     //session.sendTyping(); 
    conformation = session.message.text
    option = session.userData.option1
    session.userData.conformation = conformation
    console.log('User Selected Option is %s', option);
    console.log('User conformation %', conformation);
    var yesconfor = /Yes|Y|ok/gi;
    var noconfor = /cancel|no|n/gi;

    if(conformation.match(yesconfor)){
        session.clearDialogStack();
        session.beginDialog('/main'); 
    }
    else if(conformation.match(noconfor)){
        session.clearDialogStack();
        session.send("Thank you,\t Please Close the session");
        session.endDialog();
    }
    else if(conformation.match(noconfor)){
        session.clearDialogStack();
        session.beginDialog('/main'); 
    }

   else if(conformation.match(yesconfor))
    {
        session.sendTyping();
        postdata(itsmdata, "snow", session);
        session.sendTyping();       
    }
}
0
kamaraj Muthupandian 17 अक्टूबर 2018, 09:41

1 उत्तर

सबसे बढ़िया उत्तर

यदि प्रत्येक संवाद में session.userData.option सेट किया गया है, तो dialog_flow विधि में हां/नहीं चेक को उस मान की जांच करनी चाहिए ताकि यह निर्धारित किया जा सके कि उपयोगकर्ता किस हां/नहीं में उत्तर दे रहा था . कुछ इस तरह:

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

// 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 and listen to messages
var connector = new builder.ChatConnector({
    appId: process.env.MICROSOFT_APP_ID,
    appPassword: process.env.MICROSOFT_APP_PASSWORD
});
server.post('/api/messages', connector.listen());
var inMemoryStorage = new builder.MemoryBotStorage();

var bot = new builder.UniversalBot(connector)
    .set('storage', inMemoryStorage); // Register in memory storage


bot.dialog('/', function (session, args, results) {
    if (!session.userData.name) {
        console.log('Start conversation');
        name = session.message.text;
        session.userData.name = name;
        //session.send("Hello ,"+userName +"\nI can help you with the following")
        session.send("I can help you with the following")
        session.beginDialog('/main');

    }
    else if (!session.userData.conformation) {
        console.log('execute command');
        dialog_flow(session);
    }
    dialog_flow(session);
}
);
bot.dialog('/main', function (session, args, results) {
    const card = new builder.ThumbnailCard(session)
        .title('Bot for Global Service Desk')
        .text(' You can choose one of the options below')
        .buttons([
            builder.CardAction.imBack(session, 'Network Support', 'Network Support')
        ]);
    const message = new builder.Message(session)
        .addAttachment(card)
    session.send(message);
    option = session.message.text;
    session.userData.option = option;
}
);
bot.customAction({
    matches: /Network/gi,
    onSelectAction: (session, args, next) => {
        const card = new builder.ThumbnailCard(session)
            .text("You have Selected Network Support")
            .buttons([
                builder.CardAction.imBack(session, 'Internet Connectivity Check', 'Internet Connectivity Check')
            ]);
        const message = new builder.Message(session)
            .addAttachment(card);
        session.send(message);
        option = session.message.text
        session.userData.option = option
    }
}
);
bot.customAction({
    matches: /Internet Connectivity Check/gi,

    onSelectAction: (session, args, next) => {
        option = session.message.text
        //itsmdata["subcategory"] = option
        session.userData.option1 = option
        session.send("You have Selected\t" + option + ",\tPlease confirm?");
        const card = new builder.ThumbnailCard(session)
            .buttons([
                builder.CardAction.imBack(session, 'YES', 'YES'),
                builder.CardAction.imBack(session, 'NO', 'NO')
            ]);
        const message = new builder.Message(session)
            .addAttachment(card);
        session.endConversation(message);

    }
}
);

bot.dialog('/final', function (session, args, results) {

    const card = new builder.ThumbnailCard(session)
        .text('Do you want to Continue')
        .buttons([
            builder.CardAction.imBack(session, 'YES', 'YES'),
            builder.CardAction.imBack(session, 'NO', 'NO')
        ]);
    const message = new builder.Message(session)
        .addAttachment(card);
    session.endConversation(message);
}
);

function dialog_flow(session) {
    //session.sendTyping(); 
    conformation = session.message.text
    option = session.userData.option1;
    session.userData.conformation = conformation;
    console.log('User Selected Option is %s', option);
    console.log('User conformation %', conformation);
    var yesconfor = /Yes|Y|ok/gi;
    var noconfor = /cancel|no|n/gi;

    if (conformation.match(yesconfor)) {
        if(option == 'Internet Connectivity Check'){
            session.clearDialogStack();
            session.beginDialog('/main');
        }else{
            postdata(itsmdata, "snow", session);
            session.sendTyping();
        }
    }
    else if (conformation.match(noconfor)) {
        if(option == 'Internet Connectivity Check'){
        session.clearDialogStack();
        session.send("Thank you,\t Please Close the session");
        session.endDialog();
        }
        else{
            session.clearDialogStack();
            session.beginDialog('/main');
        }
    }
}
0
Eric Dahlvang 27 नवम्बर 2018, 20:40