TL;DR:机器人需要2-9秒才能向用户发送任何消息,即使我从MessagesController.cs的第一行发送消息。
我使用bots为Facebook创建了几个机器人,我注意到其中一个比另一个要慢得多。
这两个机器人都将下面的代码作为MessagesController.cs中的第一行。这应该是将键入指示符发送给用户。
一个机器人总是要花2秒才能在Facebook上向用户显示这个输入指示,而另一个则需要9秒。
Activity typing = activity.CreateReply(null);
typing.ServiceUrl = activity.ServiceUrl;
typing.Type = ActivityTypes.Typing;
ConnectorClient connector = new ConnectorClient(new Uri(typing.ServiceUrl));
await connector.Conversations.SendToConversationAsync(typing);第二个bot确实做了更多的工作(调用各种web ),但是由于这些行是控制器中的第一个行,我希望输入指示符将立即发送给用户,之后机器人可以继续工作。
但是,在机器人完成其工作之前,似乎不会发送消息(包括键入指示符)。
是否有办法将消息“刷新”给用户,以便立即发送键入指示符,还是遇到了其他问题?
更新:我尝试过ConnectorClient.Dispose()方法,但它似乎无助于使发送消息的速度更快。
发布于 2017-03-08 22:46:24
我不知道你所说的“冲”给用户的消息是什么意思,但是你的机器人应该立即显示输入指示符,直到你键入一条消息,并且在后台有一些处理。要避免在用户输入消息之前处理信息,可以使用ActivityTypes如下所示:
if (activity.Type == ActivityTypes.Message)
{
Activity typing = activity.CreateReply(null);
typing.ServiceUrl = activity.ServiceUrl;
typing.Type = ActivityTypes.Typing;
ConnectorClient connector = new ConnectorClient(new Uri(typing.ServiceUrl));
await connector.Conversations.SendToConversationAsync(typing);
}
else
{
HandleSystemMessage(activity);
}
...但是,在应用程序已经回答了前面的问题之前,用户不能输入任何内容。
https://stackoverflow.com/questions/42485338
复制相似问题