我正在处理一项业务需求,涉及使用 Bot Framework 更新或删除发送到 Microsoft Teams 的主动消息的能力。更新或删除可能会在初始消息发送后很长时间内发生。我在 Stack Overflow 上遇到了一个类似的问题,并通过示例代码进行了回答。但是,在尝试实现提供的解决方案时,我遇到了与 UpdateActivityAsync 方法签名相关的障碍。
在示例代码中,方法的签名与我的案例中支持的不同。具体来说,我的例子中的签名需要 ITurnContext 的实例作为输入,这与示例代码中建议的签名不同。这是签名:
公共覆盖异步任务UpdateActivityAsync(ITurnContextturnContext,Activity活动,CancellationTokencancelToken)
注意:我正在使用 Microsoft.Bot.Builder.Integration.AspNet.Core 版本 4.18.1
我非常感谢任何解决此问题的指导或帮助。如果有人有使用 Bot Framework 在 Teams 中更新或删除主动消息的经验,那么您的见解将非常宝贵。
public async Task UpdateProactiveMessageAsync(string messageId, string conversationId, string messageText, CancellationToken cancellationToken)
{
var conversationReference = new ConversationReference
{
Conversation = new ConversationAccount
{
Id = conversationId,
},
ServiceUrl = BotServiceUrl,
};
string sentBy = nameof(UpdateProactiveMessageAsync);
var message = MessageFactory.Text(messageText);
message.Id = messageId;
await _adapter.ContinueConversationAsync(_botAppId, conversationReference, async (turnContext, token) =>
{
await turnContext.UpdateActivityAsync(message, cancellationToken);
}, cancellationToken);
}
public async Task DeleteProactiveMessageAsync(string messageId, string conversationId, CancellationToken cancellationToken)
{
var conversationReference = new ConversationReference
{
Conversation = new ConversationAccount
{
Id = conversationId,
},
ServiceUrl = BotServiceUrl,
};
await _adapter.ContinueConversationAsync(_botAppId, conversationReference, async (turnContext, token) =>
{
await turnContext.DeleteActivityAsync(messageId, cancellationToken);
}, cancellationToken);
}