Facebook Messenger 中带有按钮的 Microsoft Bot Framework 消息
Microsoft Bot Framework messages with buttons in Facebook Messenger
我正在使用 C# Microsoft Bot Framework 开发一个机器人,我想将带有操作按钮的消息发送到 Facebook Messenger。我已经成功创建和部署了机器人,并且可以通过 Messenger 与其进行通信,现在我正在尝试改进机器人响应的外观。我已经能够通过将卡片信息放入 Message.Attachements 来创建单张卡片和轮播,但我还想包括操作按钮。 Messenger 平台文档在其 Send API Reference 中描述了按钮和 "generic" 模板,但对于我来说,我无法弄清楚如何强制 Bot Connector 将按钮发送到 Messenger。如果我可以将 Send API json 放入 Message.ChannelData 属性 但没有运气,那就太好了。有没有人设法让 Messenger 显示来自 Bot Framework 的按钮?
要向邮件添加按钮,您可以向附件添加多个操作。每个动作都将通过连接器映射到一个按钮。多个附件将映射到 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);
版本 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);
我正在使用 C# Microsoft Bot Framework 开发一个机器人,我想将带有操作按钮的消息发送到 Facebook Messenger。我已经成功创建和部署了机器人,并且可以通过 Messenger 与其进行通信,现在我正在尝试改进机器人响应的外观。我已经能够通过将卡片信息放入 Message.Attachements 来创建单张卡片和轮播,但我还想包括操作按钮。 Messenger 平台文档在其 Send API Reference 中描述了按钮和 "generic" 模板,但对于我来说,我无法弄清楚如何强制 Bot Connector 将按钮发送到 Messenger。如果我可以将 Send API json 放入 Message.ChannelData 属性 但没有运气,那就太好了。有没有人设法让 Messenger 显示来自 Bot Framework 的按钮?
要向邮件添加按钮,您可以向附件添加多个操作。每个动作都将通过连接器映射到一个按钮。多个附件将映射到 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);
版本 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);