首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微软BotFramework -建议卡

微软BotFramework -建议卡
EN

Stack Overflow用户
提问于 2017-07-02 23:08:45
回答 1查看 458关注 0票数 2

所以,我试图使用建议的卡片为WebChat机器人提供一个更好的按钮输入,除非有人有其他的建议?目前已经开始使用builder.prompts了。

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

代码语言:javascript
复制
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等,但没有返回。

文档中说:“当用户点击其中一个建议的操作时,bot将从包含相应操作的的用户那里接收一条消息。”

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-03 01:02:24

这有几样东西。

首先,imBack基本上代表IM返回,或者即时消息返回。它会把回应发送给谈话。您需要postBack,它将隐藏响应,但请记住,对于某些通道,postBack将映射到imBack,因此您必须进行一些调查。对于Bot仿真程序,postBack将隐藏响应。

对于第二件事,如果您在bot运行时监视您的控制台,您将看到bot将尝试在imBack方法中路由到该值。你会想要通过对话或意图捕捉到这一点。下面是一个小的,可能是低效的例子:

代码语言:javascript
复制
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);
    }
]);

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

有其他方法可以做到这一点,但这是一个快速和肮脏的例子。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44875959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档