编程语言
首页 > 编程语言> > javascript-Microsoft BotFramework-建议的卡片

javascript-Microsoft BotFramework-建议的卡片

作者:互联网

因此,除非有人有其他建议,否则我将尝试使用建议的卡片为WebChat bot提供更好的按钮输入.目前已使builder.prompts工作.

但我的问题是,使用以下示例:

var msg = new builder.Message(session)
    .text("Thank you for expressing interest in our premium golf shirt! What color of shirt would you like?")
    .suggestedActions(
        builder.SuggestedActions.create(
                session, [
                    builder.CardAction.imBack(session, "productId=1&color=green", "Green"),
                    builder.CardAction.imBack(session, "productId=1&color=blue", "Blue"),
                    builder.CardAction.imBack(session, "productId=1&color=red", "Red")
                ]
            ));
session.send(msg);

我实际上如何得到答复?它会自动将用户值写入聊天记录中(我试图避免这种情况).尝试使用response.entity等,但没有任何返回.

该文档说:“当用户点击建议的操作之一时,该漫游器将从用户处收到一条消息,其中包含相应操作的值.”

谢谢.

解决方法:

一些事情.

首先,imBack基本上代表IM返回或即时消息返回.它将响应发送给对话.您需要postBack,它将隐藏响应,但是请记住,对于某些渠道,postBack将映射到imBack,因此您必须进行一些调查.对于Bot模拟器,postBack将隐藏响应.

第二件事,如果您在漫游器运行时观察控制台,则会看到该漫游器将尝试通过imBack方法路由到该值.您将要通过对话框或意图来捕获它.这是一个小例子,可能效率不高:

intents.matches(/^suggest/i, [(session) => {
    var msg = new builder.Message(session)
        .text("Thank you for expressing interest in our premium golf shirt! What color of shirt would you like?")
        .suggestedActions(
            builder.SuggestedActions.create(
                    session, [
                        builder.CardAction.postBack(session, "productId=1&color=green", "Green"),
                        builder.CardAction.postBack(session, "productId=1&color=blue", "Blue"),
                        builder.CardAction.postBack(session, "productId=1&color=red", "Red")
                    ]
                ));
        session.send(msg);
}]);

intents.matches(/^productId/i, [
    (session, args, next) => {
        console.log(args);
    }
]);

在上面使用意图对话框的示例中,我可以从第二个intent.matches方法调用的args中的匹配数组访问值.

还有其他方法可以执行此操作,但这是一个简单的示例.

标签:botframework,node-js,javascript
来源: https://codeday.me/bug/20191025/1932085.html