如何从v4 Bot返回打字活动



我正试图将一个打字活动添加到我的机器人程序中的一个长时间运行的操作中,但我一直收到一个"BadGateway"错误。我发现的大多数示例似乎都是针对bot框架v3的,所以类型或方法不再出现,我尝试了一些针对v4的选项(使用C#(,如下所示:

await turnContext.SendActivityAsync(new Activity() { Type = ActivityTypes.Typing });

var typingActivity = new Activity()
{
Type = ActivityTypes.Typing
//RelatesTo = turnContext.Activity
};
typingActivity.ApplyConversationReference(typingActivity.GetConversationReference());

var act2 = MessageFactory.Text(null);
act2.Type = ActivityTypes.Typing;
await turnContext.SendActivityAsync(act2);

所有这些都会导致BadGateway错误。

有人能告诉我哪里出了问题吗?

您的实现很接近,但需要进行一些小的调整。此外,text属性也是可选的。如果不需要,那么您可以简单地删除它(对于延迟也是如此(。这是我使用的,它符合文档(变量用于匹配您的代码(。您可以在此处参考文档。

var typingActivity = new Activity[] {
new Activity { Type = ActivityTypes.Typing },
new Activity { Type = "delay", Value= 3000 },
//MessageFactory.Text("Some message", "Some message"),
};
await turnContext.SendActivitiesAsync(typingActivity, cancellationToken);

希望得到帮助!

Steven Kanberg的答案有正确的代码,但不幸的是,这是目前的服务问题,正如Github上的这个问题所证实的那样。

当问题得到解决时,应该将其发布在上面的Github问题中。

请尝试使用此代码从您的bot发送一个打字活动:

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
var typingActivity = MessageFactory.Text(string.Empty);
typingActivity.Type = ActivityTypes.Typing;
await turnContext.SendActivityAsync(typingActivity);
}

最新更新