我从Hello (ICommandHandler)开始,修改了它
现在,我尝试处理来自自适应卡的响应。
已经签出了https://learn.microsoft.com/en-us/microsoftteams/platform/bots/bot-basics?tabs=csharp
我还是不明白-我应该在哪里抓住提交行动?
发布于 2022-09-28 09:59:17
由于您提到您使用了Toolkit C#,所以我假设您使用的是Visual 的 Toolkit。
当前的Toolkit及其SDK不支持Adaptive操作处理。因此,您需要直接使用Bot编写自己的ActivityHandler来处理卡片操作。
public class TeamsBot : ActivityHandler
{
protected override async Task<InvokeResponse> OnInvokeActivityAsync(ITurnContext<IInvokeActivity> turnContext, CancellationToken cancellationToken)
{
// Handle card action
if (turnContext.Activity.Name == "adaptiveCard/action")
{
// Handle your action response
var cardJson = await File.ReadAllTextAsync("Resources/ActionResponseCard.json", cancellationToken).ConfigureAwait(false);
var response = JObject.Parse(cardJson);
var adaptiveCardResponse = new AdaptiveCardInvokeResponse()
{
StatusCode = 200,
Type = "application/vnd.microsoft.card.adaptive",
Value = response
};
return CreateInvokeResponse(adaptiveCardResponse);
}
return CreateInvokeResponse(null);
}
}您还需要使用Action.Execute而不是Action.Submit,后者是较新的自适应卡的通用操作。它是一个跨平台的统一行动模型。
还可以看到这个GitHub问题来了解更多信息。
您可以在团队示例回购中查看这个更完整的示例。
https://stackoverflow.com/questions/73854449
复制相似问题