首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法将这些信息“冲进”Facebook Messenger?

有没有办法将这些信息“冲进”Facebook Messenger?
EN

Stack Overflow用户
提问于 2017-02-27 12:02:44
回答 1查看 190关注 0票数 0

TL;DR:机器人需要2-9秒才能向用户发送任何消息,即使我从MessagesController.cs的第一行发送消息。

我使用bots为Facebook创建了几个机器人,我注意到其中一个比另一个要慢得多。

这两个机器人都将下面的代码作为MessagesController.cs中的第一行。这应该是将键入指示符发送给用户。

一个机器人总是要花2秒才能在Facebook上向用户显示这个输入指示,而另一个则需要9秒。

代码语言:javascript
复制
            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()方法,但它似乎无助于使发送消息的速度更快。

EN

回答 1

Stack Overflow用户

发布于 2017-03-08 22:46:24

我不知道你所说的“冲”给用户的消息是什么意思,但是你的机器人应该立即显示输入指示符,直到你键入一条消息,并且在后台有一些处理。要避免在用户输入消息之前处理信息,可以使用ActivityTypes如下所示:

代码语言:javascript
复制
        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);
        }
        ...

但是,在应用程序已经回答了前面的问题之前,用户不能输入任何内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42485338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档