带有Facebook Messenger按钮的Microsoft Bot Framework消息

时间:2016-05-03 18:43:20

标签: c# botframework facebook-messenger

我正在使用C#Microsoft Bot Framework开发机器人,我想将带有操作按钮的消息发送到Facebook Messenger。我已成功创建机器人,部署它并可以通过Messenger与它进行通信,现在我正在尝试改进机器人响应的外观。我已经能够通过将卡信息放入Message.Attachements来创建单卡和轮播,但我还想包括操作按钮。 Messenger平台文档描述了Send API Reference中的按钮和“通用”模板,但对于我的生活,我无法弄清楚如何强制Bot连接器向Messenger发送按钮。如果我可以将Send API json放入Message.ChannelData属性但没有运气,那就太棒了。有没有人设法让Messenger显示Bot框架中的按钮?

2 个答案:

答案 0 :(得分:7)

要在邮件中添加按钮,您可以向附件添加多个操作。每个操作都将按连接器映射到按钮。多个附件将映射到Facebook Messenger中的轮播。下面是向邮件添加3个按钮的示例。

            var reply = context.MakeMessage();
            reply.Attachments = new List<Attachment>();

            var actions = new List<Microsoft.Bot.Connector.Action>();
            for (int i = 0; i < 3; i++)
            {
                actions.Add(new Microsoft.Bot.Connector.Action
                {
                    Title = $"Button:{i}",
                    Message = $"Action:{i}"
                });
            }

            reply.Attachments.Add(new Attachment
            {
                Title = "Choose one:",
                Actions = actions
            });

            await context.PostAsync(reply);

答案 1 :(得分:1)

更新3.9.0版的解决方案:

        var actions = new List<CardAction>();
        for (int i = 0; i < 3; i++)
        {
            actions.Add(new CardAction
            {
                Title = $"Button:{i}",
                Text = $"Action:{i}"
            });
        }

        reply.Attachments.Add(
            new HeroCard
            {
                Title = "Choose option",
                Buttons = actions
            }.ToAttachment()
        );

        await context.PostAsync(reply);
相关问题