【问题标题】:Microsoft Bot Framework messages with buttons in Facebook MessengerFacebook Messenger 中带有按钮的 Microsoft Bot Framework 消息
【发布时间】:2016-08-28 23:06:17
【问题描述】:

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

【问题讨论】:

    标签: c# botframework facebook-messenger


    【解决方案1】:

    要向您的消息添加按钮,您可以向附件添加多个操作。每个动作都将通过连接器映射到一个按钮。多个附件将映射到 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);
    

    【讨论】:

    • 太棒了!那工作得很好。我的问题是我有一个旧版本的 Microsoft.Bot.Connector Nuget 库,它没有操作。需要升级到版本 1.1.0。谢谢!
    • 上下文是什么类型?你能把整个方法贴出来吗?我目前正在尝试从 v3 降级到 v1,以查看按钮是否正常工作(在 v3 中,它们在 Skype 和 facebook Messenger 上都没有显示/正常工作)。
    • 我认为 Context 可以是 IDialogContext 的任何实现
    • 请更新您的样本。 BotFramework 中不再有任何Action。它必须是CardAction。此外,它们的字段必须更新。
    【解决方案2】:

    更新 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);
    

    【讨论】:

      猜你喜欢
      • 2016-08-30
      • 2016-10-20
      • 1970-01-01
      • 2016-09-05
      • 2018-05-25
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 2017-02-05
      相关资源
      最近更新 更多