首页 > 解决方案 > botbuilder 是否支持 Facebook Messenger 的按钮模板?

问题描述

在阅读了这个现在很老的问题后: Bot Framework 是否支持 Facebook Messenger 的按钮模板?使用 Bot Framework 查看可用卡片列表

botbuilder 目前是否支持Facebook Messenger 的按钮模板?我希望解决方案与通道无关,因此不需要操纵 JSON 来实现这一点。我尝试使用没有标题和图像的英雄卡,但结果并不美观,正常文本保持粗体。

在此处输入图像描述

这是呈现 de card 的代码:

const attachment = CardFactory.heroCard(
        "",
        "BotFramework Hero Card",
        CardFactory.images([]),
        CardFactory.actions([
            {
                type: "openUrl",
                title: "Get started",
                value: "https://docs.microsoft.com/en-us/azure/bot-service/"
            },
            {   
                type: "openUrl",
                title: "Get started2",
                value: "https://docs.microsoft.com/en-us/azure/bot-service/"
            }
        ])
    );

    return MessageFactory.attachment(attachment);

也尝试使用 ThumbnailCard 但显示相同的结果......

标签: javascriptbotframeworkfacebook-messenger-bot

解决方案


如果您通过 Facebook 连接器发送英雄卡片,如果卡片只有按钮且没有文本或图像,它将自动转换为按钮模板,否则将转换为通用模板。如果您想发送您选择的自定义模板,您可以使用Bot Framework 频道数据。它可能看起来像这样:

reply = {
    'type': ActivityTypes.Message,
    'channelData': {
        'attachment': {
            'type': 'template',
            'payload': {
                'template_type': 'button',
                'text': 'Button Template',
                'buttons': buttons
            }
        }
    }
};

请注意,虽然您的问题的答案是肯定的,但您可能仍然不满意。您只要求一种使用按钮模板而不是通用模板的方法,但您的理由是您希望它看起来更好。问题在于外观将取决于您使用的 Messenger 客户端,并且在某些客户端中,此按钮模板看起来与通用模板没有什么不同。如果您尝试了按钮模板但仍然不满意,那么您可能需要进行一些试验。我认为测试这一点的最快方法是使用Bot Framework REST API在像 Postman 这样的 HTTP 应用程序中作为机器人发送消息。


推荐阅读