[英]Manage a long-running operation in MS Teams Bot
我正在使用以下示例/文章来管理 MS Teams Bot 中的长时间运行的操作。
在第 5 步中,正在创建 DirectLineClient,并使用 PostActivityAsync 将 Event Activity 发送到 Bot。
var responseActivity = new Activity("event");
responseActivity.Value = originalActivity;
responseActivity.Name = "LongOperationResponse";
responseActivity.From = new ChannelAccount("GenerateReport", "AzureFunction");
var directLineSecret = Environment.GetEnvironmentVariable("DirectLineSecret");
using(DirectLineClient client = new DirectLineClient(directLineSecret))
{
var conversation = await client.Conversations.StartConversationAsync();
await client.Conversations.PostActivityAsync(conversation.ConversationId, responseActivity);
}
但是,我需要上面的示例来为 MS Teams Bot 而不是 DirectLineClient 工作。
我使用了 Microsoft.Bot.Connector.ConnectorClient 但 StartconversationAsync 和 PostActivityAsync 方法不可用。 我尝试了 Microsoft.Bot.Connector.ConnectorClient 中可用的方法
但是所有方法都因错误请求而失败,错误如响应中所示:{"error":{"code":"BadArgument","message":"Unknown activity type"}}
newActivity 创建如下:
var messagnewActivity = new Activity("event");
newActivity.Value = originalActivity;
newActivity.From = new ChannelAccount("GenerateReport", "AzureFunction");
newActivity.Type = "event";
newActivity.Conversation = new ConversationAccount { Id = originalActivity.Conversation.Id };
newActivity.ChannelId = originalActivity.ChannelId;
有人可以建议我如何将活动(事件活动类型)传递给 MS Teams Bot。
谢谢加根
我对 Direct Line 不是很熟悉,但我认为它实际上是 Teams 的一种替代类型的机器人,因此如果您尝试在 Teams 内部执行此操作,它可以解释问题。 原则上,基本思想很简单:
这是为了通知您,在此之前的某个时候我遇到了同样的问题,然后我在调试时发现了代码中的一个调整。 当它递归调用两次时,Activity Id 与前一个相同。 您可以检查活动 id 是否相同,然后返回请求,否则返回请求 go 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.