Eil*_*onA 0 .net c# bots typing botframework
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
await turnContext.SendActivityAsync(MessageFactory.Text($"Welcome"));
Run Code Online (Sandbox Code Playgroud)
我想在向 Teams 中的机器人发送欢迎之前添加“打字”指示器。使用 BotFramework。
但是,我的机器人发送的每条消息之前都没有“打字”,它只是在几秒钟后出现。
我如何在 C# 中做到这一点?
@GiangNguyen 的回答是部分回答;如果您想在每条消息之前发送打字活动,您应该使用ShowTypingMiddleware。我说这只是部分答案,因为我认为这实际上不适用于欢迎消息。
首先,快速说明一下 Teams 频道上的欢迎消息。测试它们是一个巨大的痛苦。Teams 将用户与机器人的交互与机器人的appId.欢迎留言一次。为了测试而解决这个问题,您有几个选择:
OnMessageAsync调用您在OnMembersAddedAsync(). 例如,如果您输入“测试欢迎信息”,它将调用您在OnMembersAddedAsync()( ...if (turnContext.Activity.Text === "test welcome message"...) 中使用的相同代码,就像发送您的实际欢迎信息一样。使用它进行测试,然后您可以将其删除以进行生产。我推荐这种方法。因此,在使用 ShowTypingMiddleware 时不会有欢迎消息的输入活动的原因是因为中间件仅在机器人收到消息时触发,这通常不会发生在欢迎消息中。相反,您需要手动发送打字活动:
var typing = new Activity() { Type = ActivityTypes.Typing };
await turnContext.SendActivityAsync(typing);
Run Code Online (Sandbox Code Playgroud)
话虽如此,一些渠道/客户仍难以使用 ShowTypingMiddleware。如果您正在寻求故障排除帮助并且此答案不适用,请告诉我您使用的渠道/客户端以及您用于发送输入指示符的代码,我会看看我是否仍然可以提供帮助。