OnTeamsMessagingExtensionCardButtonClickedAsync 响应与更新的自适应卡

时间:2021-03-10 18:48:57

标签: c# microsoft-teams adaptive-cards

我正在编写一个消息扩展,供用户发送自适应卡片。我确实从查询面板的 MessagingExtensionResult 创建了自适应卡片,并将 Tap 操作添加到 ThumbnailCard 以进行评级,但是当我单击 Action.Submit 并引发 OnTeamsMessagingExtensionCardButtonClickedAsync 事件时,我无法发送响应或更新响应的自适应卡片。它总是显示“无法访问应用程序。请重试。”。

enter image description here

我可以获取数据,但无法更新自适应卡片以供用户查看他们选择的操作。有什么方法可以通过 OnTeamsMessagingExtensionCardButtonClickedAsync 更新提升的自适应卡或将更新发送到频道。

请记住,我的应用不是机器人,因此它不能完全执行机器人事件或操作。

1 个答案:

答案 0 :(得分:0)

在您的卡片按钮中,请将操作类型添加为调用

    var createCardData = ((JObject)action.Data).ToObject<CreateCardData>();

 var card = new HeroCard
{
Title = createCardData.Title,
Subtitle = createCardData.Subtitle,
Text = createCardData.Text,
Buttons = new List<CardAction>{new CardAction(){Title = "button1",Type = "invoke",Text = "this message is updated",Value = "this message is updated",} }
};

 var attachments = new List<MessagingExtensionAttachment>();
attachments.Add(new MessagingExtensionAttachment
{
Content = card,
ContentType = HeroCard.ContentType,
Preview = card.ToAttachment(),
});

 return new MessagingExtensionActionResponse
{
ComposeExtension = new MessagingExtensionResult
{
AttachmentLayout = "list",
Type = "result",
Attachments = attachments,
},
};

当您点击卡片中的按钮时,它会调用 OnTeamsMessagingExtensionCardButtonClickedAsync() 方法。发送自适应卡片附件作为响应。

protected override async Task OnTeamsMessagingExtensionCardButtonClickedAsync(ITurnContext<IInvokeActivity> turnContext, JObject obj, CancellationToken cancellationToken)
{
var reply = MessageFactory.Attachment(CreateAdaptiveCardAttachment());
await turnContext.SendActivityAsync(reply, cancellationToken);
}