我为很多地理位置创建了Twitter机器人。我希望允许用户使用命令将@ -reply添加到Twitter机器人,然后让机器人响应结果。我希望机器人尽可能快地回复用户(实时)。
显然,Twitter曾经有一个XMPP / Jabber接口,可以提供这种类型的回复实时反馈,但它已被关闭。
我认为我的选择是使用以下之一:
这将涉及每个机器人每X分钟轮询一次。问题在于它不是实时的,每个Twitter帐户都必须进行轮询。
搜索API允许在搜索中指定“-to”参数,并且可以在搜索中聚合所有机器人的回复,例如“-to bot1 OR -to bot2 ...”。虽然如果你有数百个机器人,那么搜索字符串将变得非常长并且可能超过GET请求的最大长度。
流式API看起来非常有前景,因为它提供了实时结果。 API允许您指定follow
和track
参数。 follow
没有用,因为机器人不知道谁将发送命令。 track
允许您指定要跟踪的关键字。这可能通过创建连接到Streaming API的守护进程并跟踪对bot名称的所有引用来实现。再一次,因为有很多机器人跟踪查询的长度和复杂性可能是一个问题。另一个想法是跟踪一个特殊的主题标签,例如#botcommand
,然后用户可以使用这种语法@bot1 weather #botcommand
发送命令。然后通过使用Streaming API跟踪对#botcommand
的所有引用,将为您提供所有命令的实时流。然后可以进行进一步的解析以确定将命令发送到哪个机器人。此博客文章详细介绍了Streaming API
是否有任何第三方公司可以访问Twitter消防站并提供实时数据?
我没有调查这些,但这里有一些我发现的:
我倾向于使用Streaming API。对于许多(数百个)Twitter帐户,是否有更好的方法来接近实时@ -replies?
更新: Twitter刚宣布,未来他们将拥有扩展Streaming API的User Streams。 User Streams Preview
答案 0 :(得分:1)
跟踪或跟踪将适用于您描述的案例。有关实际操作的详细信息,请参阅http://apiwiki.twitter.com/Streaming-API-Documentation#track。以下文档在同一页面上。
流式API上存在各种速率限制,但它们与您正在使用的整个推文流的大小有关。对于这样的机器人来说,没有相当大的用户群,你就不会达到这些限制。当您获得该用户群时,您可以申请提升访问级别,从而提高速度。
答案 1 :(得分:0)
有推特firehose,但您可能最好使用Streaming API。 firehose对谷歌开放(尝试使用谷歌搜索你的推特名称),因为链接说他们很快就会打开它。
您也希望获得IP白名单。
如果您还没有,请查看GoogleGroup for twitter devs。
答案 2 :(得分:0)
流式api的跟踪谓词实际上很有用,因为如果你按照机器人的用户ID,你将获得机器人发出的所有消息以及所有其他提到机器人的消息@usernames(包括@replies) 。它确实跟踪了Twitter上与你跟随的用户ID相关的所有内容,并试一试。
答案 3 :(得分:0)
REST API:
最全面的结果,误报率最低。如果机器人遵循受保护的帐户,将包括受保护的状态。如果你每隔30秒进行一次轮询就会非常接近实时,如果你在OAuth中使用api.twitter.com/1,那么你的速率限制将达到你的速率限制(350 /小时)。
Streaming API:
您需要避免使用Search API。它越来越趋向于流行的结果,而不是完整的结果。
Streaming API
最快但也可能错过一些状态以及误报。例如,不包括受保护的状态。跟踪screen_name将返回其中包含该screen_name的状态,但也会包含仅将screen_name作为字符串而不包含@的推文,因此请确保在您身边进行过滤。