我如何从我的 v4 机器人 return 输入 activity

How do I return a Typing activity from my v4 Bot

我正在尝试将键入 activity 添加到我的机器人中的长 运行 操作,但我一直收到 "BadGateway" 错误。我发现的大多数样本似乎都是针对机器人框架 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 错误。

有人可以指导我哪里出错了吗?

请尝试使用此代码从您的机器人发送输入 activity:

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

您的实施很接近,但需要进行一些小的调整。此外,文本 属性 是可选的。如果不需要,那么您可以简单地将其删除(延迟相同)。这是我使用的符合文档的内容(变量用于匹配您的代码)。您可以参考文档 here.

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 的答案有正确的代码,但不幸的是,目前这是一个服务问题,正如 issue on Github 中所确认的那样。

问题解决后,应该在上面的 Github 问题中发布。