Azure Bot中的JavaScript变量分配
我正在使用Azure BotBuilder和JavaScript创建一个bot,出现以下问题 我不知道如何捕捉聊天窗口中按下的按钮的值。在下面的代码中,“startOrderCoffee”bot.dialog为用户提供了三个咖啡选项(见图)。通过单击按钮进行选择时,选择将作为消息返回。在图片中,如果用户单击“滴咖啡”,则聊天窗口中会显示“滴咖啡” 我不知道的是如何捕获消息值并将该响应返回给下一个函数。在这种情况下,按钮作为“welcomeCard”对象的一部分生成,并通过下面的session.send()函数在聊天窗口中生成 通常,第二个函数中的results.response选项将捕获以前的用户输入。然而,它在这里不起作用。我已经创建了变量,但我不知道怎么做。有人能帮我理解怎么做吗Azure Bot中的JavaScript变量分配,javascript,azure,variables,bots,botframework,Javascript,Azure,Variables,Bots,Botframework,我正在使用Azure BotBuilder和JavaScript创建一个bot,出现以下问题 我不知道如何捕捉聊天窗口中按下的按钮的值。在下面的代码中,“startOrderCoffee”bot.dialog为用户提供了三个咖啡选项(见图)。通过单击按钮进行选择时,选择将作为消息返回。在图片中,如果用户单击“滴咖啡”,则聊天窗口中会显示“滴咖啡” 我不知道的是如何捕获消息值并将该响应返回给下一个函数。在这种情况下,按钮作为“welcomeCard”对象的一部分生成,并通过下面的session.s
您正在尝试执行一些已打包并正在运行的操作,称为
提示
特别是,您所做的操作应使用提示进行编码。选择:参见文档
样本:
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使用正则表达式语法-很好的介绍,我把一个机器人放在了一起,它非常广泛地使用了您正在查看的模式-可能对查看它有一些用处: