Azure Bot中的JavaScript变量分配

Azure Bot中的JavaScript变量分配,javascript,azure,variables,bots,botframework,Javascript,Azure,Variables,Bots,Botframework,我正在使用Azure BotBuilder和JavaScript创建一个bot,出现以下问题 我不知道如何捕捉聊天窗口中按下的按钮的值。在下面的代码中,“startOrderCoffee”bot.dialog为用户提供了三个咖啡选项(见图)。通过单击按钮进行选择时,选择将作为消息返回。在图片中,如果用户单击“滴咖啡”,则聊天窗口中会显示“滴咖啡” 我不知道的是如何捕获消息值并将该响应返回给下一个函数。在这种情况下,按钮作为“welcomeCard”对象的一部分生成,并通过下面的session.s

我正在使用Azure BotBuilder和JavaScript创建一个bot,出现以下问题

我不知道如何捕捉聊天窗口中按下的按钮的值。在下面的代码中,“startOrderCoffee”bot.dialog为用户提供了三个咖啡选项(见图)。通过单击按钮进行选择时,选择将作为消息返回。在图片中,如果用户单击“滴咖啡”,则聊天窗口中会显示“滴咖啡”

我不知道的是如何捕获消息值并将该响应返回给下一个函数。在这种情况下,按钮作为“welcomeCard”对象的一部分生成,并通过下面的session.send()函数在聊天窗口中生成

通常,第二个函数中的results.response选项将捕获以前的用户输入。然而,它在这里不起作用。我已经创建了变量,但我不知道怎么做。有人能帮我理解怎么做吗


您正在尝试执行一些已打包并正在运行的操作,称为
提示

特别是,您所做的操作应使用提示进行编码。选择:参见文档

样本:

var salesData = {
    "west": {
        units: 200,
        total: "$6,000"
    },
    "central": {
        units: 100,
        total: "$3,000"
    },
    "east": {
        units: 300,
        total: "$9,000"
    }
};

bot.dialog('getSalesData', [
    function (session) {
        builder.Prompts.choice(session, "Which region would you like sales for?", salesData); 
    },
    function (session, results) {
        if (results.response) {
            var region = salesData[results.response.entity];
            session.send(`We sold ${region.units} units for a total of ${region.total}.`); 
        } else {
            session.send("OK");
        }
    }
]);

您正在尝试执行一些已打包并正在运行的操作,称为
提示

特别是,您所做的操作应使用提示进行编码。选择:参见文档

样本:

var salesData = {
    "west": {
        units: 200,
        total: "$6,000"
    },
    "central": {
        units: 100,
        total: "$3,000"
    },
    "east": {
        units: 300,
        total: "$9,000"
    }
};

bot.dialog('getSalesData', [
    function (session) {
        builder.Prompts.choice(session, "Which region would you like sales for?", salesData); 
    },
    function (session, results) {
        if (results.response) {
            var region = salesData[results.response.entity];
            session.send(`We sold ${region.units} units for a total of ${region.total}.`); 
        } else {
            session.send("OK");
        }
    }
]);

@Steve看起来你在尝试创建另一个对话框来处理不同类型的咖啡。因此,另一种方法是创建新对话框并使用.triggerAction捕捉HeroCard中的按钮按下:

// Dialog to handle Drip Coffee order
bot.dialog('orderDripCoffee', [
    function (session) {
        // handle Drip Coffee order
    }
]).triggerAction({ matches: /Drip/i });

@Steve看起来你在尝试创建另一个对话框来处理不同类型的咖啡。因此,另一种方法是创建新对话框并使用.triggerAction捕捉HeroCard中的按钮按下:

// Dialog to handle Drip Coffee order
bot.dialog('orderDripCoffee', [
    function (session) {
        // handle Drip Coffee order
    }
]).triggerAction({ matches: /Drip/i });

谢谢,尼古拉斯。我知道提示选项,这是一个很好的选择。但这并不能解决想要维护一个更具图形化、可点击的界面的问题。您是否使用了builder.ListStyle.button?这是一个通用的可点击按钮version@Nickolas,我从来没有抽出时间告诉您builder.ListStyle.button最终运行得非常好。谢谢你的建议。谢谢,尼古拉斯。我知道提示选项,这是一个很好的选择。但这并不能解决想要维护一个更具图形化、可点击的界面的问题。您是否使用了builder.ListStyle.button?这是一个通用的可点击按钮version@Nickolas,我从来没有抽出时间告诉您builder.ListStyle.button最终运行得非常好。谢谢你的建议。是的,TomHon!我相信这就是我要找的。非常感谢。我做了一些快速的调查,有一个问题。我看到一个“.*”为比赛分隔了一些单词。这代表了一个空间吗?matches使用正则表达式语法-很好的介绍,我把一个机器人放在了一起,它非常广泛地使用了你所看到的模式-也许对它有一些用处:是的,TomHon!我相信这就是我要找的。非常感谢。我做了一些快速的调查,有一个问题。我看到一个“.*”为比赛分隔了一些单词。这代表一个空间吗?matches使用正则表达式语法-很好的介绍,我把一个机器人放在了一起,它非常广泛地使用了您正在查看的模式-可能对查看它有一些用处: