【问题标题】:How to handle the Action.submit on an adaptive card with LUIS如何使用 LUIS 处理自适应卡上的 Action.submit
【发布时间】:2017-07-08 00:52:19
【问题描述】:

当我们使用 MS BotFramework 在我们的机器人中使用 LUIS 识别器时,我们如何处理 Action.submit?

var recognizer = new builder.LuisRecognizer(config.LUIS_MODEL_URL);
bot.recognizer(recognizer);

bot.dialog('toolAccess', [
    function (session,args,next) {

           const msg = new builder.Message(session)
                      .addAttachment({
            //adaptive card body here with Action.submit buttons...
           });
           session.send(msg);
    }
]).triggerAction({ matches : 'toolAccess'});
//toolAccess is an intent in my LUIS app.

我对自适应卡片的操作是:

"actions": [
                {
                    "type": "Action.Submit",
                    "data": {
                            "type": "okProfileSelection"
                    },
                    "title": "OK"
                },
                {
                    "type": "Action.Submit",
                    "data": {
                            "type": "cancelProfileSelection"
                    },
                    "title": "Cancel"
                }
            ]

所以问题是如何处理这些“确定”和“取消”按钮?我应该添加另一个对话框吗?如果是,triggerAction 应该是什么?

【问题讨论】:

    标签: node.js botframework adaptive-cards


    【解决方案1】:

    设置机器人时,请使用如下默认处理程序:

    var bot = new builder.UniversalBot(connector, function (session) {
    
        if (session.message && session.message.value) {
            // A Card's Submit Action obj was received
            processSubmitAction(session, session.message.value);
            return;
        }
    
        // Display Welcome card with Hotels and Flights search options
        // load Adaptive Card from JSON file
        var card = require('./card-hotels-flights-search.json');
    
        // send the card with form 
        var msg = new builder.Message(session).addAttachment(card);
        session.send(msg);
    });
    

    如需完整的工作示例,请查看:BotBuilder-Samples/Node/cards-AdaptiveCards

    【讨论】:

    • 您所指的示例未使用 LUIS 识别器。这就是为什么可以在那里使用处理 session.message 的构造函数回调的原因:var bot = new builder.UniversalBot(connector, function (session) {...} 但是在使用 LUIS 的机器人中,我无法让它捕获 Action.submit 按钮
    • [续] 在使用 LUIS 识别器的机器人中,Action.submit 按钮总是试图路由到对话框。问题是哪一个?我们如何让机器人走特定的对话路线?可以肯定的是,var bot = new builder.UniversalBot(connector, function (session) {...} 永远不会在带有 LUIS 的机器人中运行。
    • [更新]:问题是我在这个默认处理程序中使用了console.log,这使得它表现得很奇怪,在某些情况下甚至崩溃。我还没有调查。
    猜你喜欢
    • 2018-11-10
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 2021-09-12
    相关资源
    最近更新 更多