我怎样才能做到这一点?所以我这样做了:
.matches('Football position', (session, results) => {
session.send("So you are looking for a \%s\ position. ", session.message.text);
function (session, args, next) {
builder.Prompts.confirm(session, "Did that solve your problem buddy !");
},
function (session, args) {
if (args.response) {
session.send("good by");
else {
session.send("Please try again");
}
})
所以,首先:确认该人给出的先前答案。 然后:一个用户可以输入NO或YES的对话框。基于答案,我想以不同的方式展示不同的信息,但它根本不起作用。
有人可以帮忙吗?
答案 0 :(得分:2)
首先,您的代码段中存在错误,函数matches()
的第二个参数应为tring|IDialogWaterfallStep[]|IDialogWaterfallStep
。您需要将代码段修改为:
matches('Football position',[(session,args)=>{},(session,args)=>{}...])
其次,send()
不会将状态保留在瀑布式步骤中,这意味着,您的用户永远不会通过您的代码段进入以下步骤。如果您尝试接收用户的输入,可以使用IPrompts
。
然后:一个用户可以输入NO或YES的对话框
您可以利用选择来实现这一目标:
bot.dialog('/', [
(session) => {
var msg = new builder.Message(session)
.text("Did that solve your problem buddy !")
.suggestedActions(
builder.SuggestedActions.create(
session, [
builder.CardAction.imBack(session, "Yes", "Yes"),
builder.CardAction.imBack(session, "No", "No")
]
)
);
builder.Prompts.choice(session, msg, ["Yes", "No"]);
},
(session, args, next) => {
if (args.response.entity == "Yes") {
session.send("You selected Yes")
} else {
session.send("You selected No")
}
}
])