我想在Bot中使用建议的操作-因此用户可以快速回复以回答问题,但也可以输入一个字段。
因此Bot提出了类似的要求:
“你喜欢吃披萨吗?”
-> 是的! -> 编号
用户可能不使用“快速答复”,而是写道:“是,而且 Burger 也是如此”。
现在,我也需要“ Burger ” 作为实体-Example on GitHub对我来说没有意义,因为它们将“快速答复”拉到选择提示上-很好,当用户仅从建议的操作中进行选择时-但是当他们在输入字段中键入自己的答案时却没有。
bot.dialog('/', [
function (session) {
var msg = new builder.Message(session)
.text("Hi! What is your favorite color?")
.suggestedActions(
builder.SuggestedActions.create(
session,[
builder.CardAction.imBack(session, "green", "green"),
builder.CardAction.imBack(session, "blue", "blue"),
builder.CardAction.imBack(session, "red", "red")
]
)
);
builder.Prompts.choice(session, msg, ["green", "blue", "red"]);
},
function(session, results) {
session.send('I like ' + results.response.entity + ' too!');
}]);
有解决方案吗?
最佳答案
您还可以使用builder.Prompts.text
从用户那里获取输入,同时还可以构建SuggestedActions
卡以创建响应的基线。使用builder.Prompts.choice
将限制您传递到声明中的选择。因此,您可以让机器人问“您喜欢披萨吗?”然后弹出“是的!”和不。”按钮,但还允许用户键入其他响应。
使用您的问题示例,您可以进行如下所示的对话框。这也显示了一些正则表达式逻辑,用于添加可能的答案,例如有人键入“是,还有汉堡!”。
例子:
bot.dialog('/', [
function (session) {
var msg = new builder.Message(session)
.text("Do you like Pizza?")
.suggestedActions(
builder.SuggestedActions.create(
session,[
builder.CardAction.imBack(session, "Yeah!", "Yeah!"),
builder.CardAction.imBack(session, "No.", "No.")
]
)
);
builder.Prompts.text(session, msg);
},
function(session, results) {
let regex = /yeah|yes|sure|of course|i do\!|affirmative|positive/gi;
if (regex.test(results.response)) {
session.beginDialog("LikesPizza");
} else {
session.beginDialog("DoesNotLikePizza");
}
}]);
bot.dialog("LikesPizza", function(session) {
let yesAndMoreRegex = /and|also/gi
if (yesAndMoreRegex.test(session.message.text)) {
session.endDialog("You like other foods too? Awesome! But pizza is the best!");
} else {
session.endDialog("Who doesn't like pizza?!");
}
});
bot.dialog("DoesNotLikePizza", function(session) {
let noButRegex = /but|although|better/gi;
if (noButRegex.test(session.message.text)) {
session.endDialog("True, there's foods other than pizza. There's something for everyone!");
} else {
session.endDialog("Well, pizza's not for everyone, I guess...");
}
});
关于node.js - Bot Framework建议的操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50102849/