选择事件类型
默认情况下,你监控的每个账号的所有事件类型都会送达。你可以按账号缩小范围:一个账号只给你推送新增蓝V粉丝,另一个账号把它发的所有内容都推给你。这个选择属于订阅本身,所以每个账号单独设置、互不影响。
可以选择的事件类型
下面每一种事件类型都可以针对每个账号单独打开或关闭。关键词命中(search.match)不在这张表里:它来自关键词,而不是来自某个账号。
| 类型 | 类别 | 含义 |
|---|---|---|
tweet.create | 帖子 | 该账号发布了新内容 |
tweet.reply | 帖子 | 它回复了某人;reply_to 携带被回复的帖子,含文本和媒体 |
tweet.retweet | 帖子 | 它转推了某人;retweet_of 携带完整的原帖 |
tweet.quote | 帖子 | 它引用了某人;quoted 携带完整的被引用帖子 |
tweet.edit | 帖子 | 它编辑了一条帖子;事件携带新版本,edit_of 是被它替换的版本 |
tweet.delete | 帖子 | 该账号发布过的一条帖子消失了 |
profile.name | 资料 | 显示名称已更改 |
profile.screen_name | 资料 | 用户名已更改 |
profile.bio | 资料 | 简介已更改 |
profile.location | 资料 | 位置已更改 |
profile.url | 资料 | 资料链接已更改 |
profile.avatar | 资料 | 头像已更改;old 和 new 为图片 URL |
profile.banner | 资料 | 横幅已更改;old 和 new 为图片 URL |
profile.pinned | 资料 | 置顶帖子已更改;tweet 和 old_tweet 携带帖子本身 |
profile.verified | 资料 | 认证标识出现或消失 |
follow.add | 关注关系 | 该账号开始关注某人;user 是对方的完整资料 |
follow.remove | 关注关系 | 该账号取消关注了某人 |
followers.verified.add | 关注关系 | 一个认证账号开始关注它;user 携带简介、计数、位置、注册日期 |
account.status | 账号 | 账号变为受保护、被封禁或不可见,或恢复正常 |
常见组合
把右侧一栏的值作为 event_types 发送即可。类型可以随意组合,需要几种就列几种。
| 你想要 | event_types |
|---|---|
| 只要这个账号新增的蓝V粉丝 | ["followers.verified.add"] |
| 只要它的原创帖子 | ["tweet.create"] |
| 只要它的回复 | ["tweet.reply"] |
| 它发布的一切:原创、回复、转推、引用和编辑 | ["tweet.create", … 5 种] |
| 它的原创,以及它删帖的通知 | ["tweet.create", "tweet.delete"] |
| 只要资料变更(全部 9 种资料类型) | ["profile.name", … 9 种] |
| 只要它关注了谁、取关了谁 | ["follow.add", "follow.remove"] |
| 全部(默认) | null |
如何设置
可以在开始监控账号时就选好,也可以之后随时修改。两个调用都需要 targets:write 权限。
开始监控时就指定
curl -X POST https://api.xsignalfeed.com/v1/monitor/targets \ -H "Authorization: Bearer xsf_your_key" -H "Content-Type: application/json" \ -d '{"screen_name": "elonmusk", "event_types": ["followers.verified.add"]}'
之后修改
curl -X PATCH https://api.xsignalfeed.com/v1/monitor/targets/elonmusk \ -H "Authorization: Bearer xsf_your_key" -H "Content-Type: application/json" \ -d '{"event_types": ["tweet.create", "tweet.reply"]}'
恢复为全部类型
curl -X PATCH https://api.xsignalfeed.com/v1/monitor/targets/elonmusk \ -H "Authorization: Bearer xsf_your_key" -H "Content-Type: application/json" \ -d '{"event_types": null}'
账号当前的选择在它的 event_types 字段里;没有任何过滤时 event_types_all 为 true。
GET /v1/monitor/targets/elonmusk
{
"target": {
"id": "44196397",
"screen_name": "elonmusk",
"name": "Elon Musk",
"state": "subscribed",
"…": "…",
"event_types": [
"tweet.create",
"tweet.reply"
],
"event_types_all": false
}
}规则
- 开始监控账号时不传
event_types,表示接收全部类型。 - 发送
event_types会整体替换原来的选择,而不是追加。再次调用监控接口但不带event_types,会保留当前的选择。 null或[]表示全部类型。把列表里的类型全部选上,也按“全部”保存。- 这个选择对实时流、Webhook 和
GET /v1/events同样生效。已经打开的连接会在下一次刷新时带上修改,不是立即生效。 - 改变帖子类型的
update(带kind_was)只要新旧两种类型有一种在你的选择里就会送达。如果你选了tweet.create而没选tweet.quote,仍会收到表明该帖其实是引用的update,以便把它丢弃;如果你选了tweet.quote而没选tweet.create,这类引用会以该update首次送达。 - 放宽选择后,新增的类型从那一刻起送达;改动之前这些类型的事件,不保证能通过
GET /v1/events查到。 - 一把密钥还可能带有整把密钥范围的列表,由我们应你的要求设置(见
GET /v1/account的event_types)。只有两个列表都允许的事件才会送达。 - 未知的类型会被拒绝,返回
400 invalid_request;details.unknown指出是哪个,details.allowed列出可用的类型。完整列表见GET /v1/meta/event-types。 - 关键词不在这里选,而是按关键词本身:监控或取消监控某个关键词,就会开始或停止收到它的
search.match事件。
不能选择的内容
- 非认证用户的新增关注不作为事件提供,所以无法选择;只提供新增的蓝V粉丝(
followers.verified.add)。 - 只能按事件类型选择,不能按内容筛选。像“粉丝数超过 1 万的蓝V粉丝”、“只要带图的帖子”、“只要英文”这类条件,请在你这边用载荷里的字段筛选(例如
user.followers、media、lang)。