如何在NodeJS中的Microsoft Bot Builder中保存响应和使用?

时间:2018-03-06 18:21:23

标签: node.js botframework

我怎样才能做到这一点?所以我这样做了:

.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的对话框。基于答案,我想以不同的方式展示不同的信息,但它根本不起作用。

有人可以帮忙吗?

1 个答案:

答案 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")
        }
    }
])