You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Slack API:如何获取发送给指定用户/机器人的最新消息及联系时间?

如何通过Slack API获取你发送给指定用户/机器人的最新消息

嘿,我来帮你搞定这个需求!要查询你最近一次以私信、提及等方式联系目标机器人的时间,你可以通过Slack的几个核心API组合实现,步骤很清晰,我给你拆解一下:

1. 先找到你和目标的对话ID

首先得定位你和目标机器人/用户的私信对话唯一标识。你可以调用conversations.list API,指定只返回私信类型的对话(types: im),然后遍历返回结果,找到user字段匹配目标机器人ID的那条,对应的id就是你要的对话ID。

举个curl请求的例子(记得替换成你的Bot Token):

curl -X POST https://slack.com/api/conversations.list \
  -H "Authorization: Bearer YOUR_BOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"types": "im"}'

⚠️ 这里要确保你的Bot Token已经申请了im:read或者channels:read的权限,不然会返回权限不足的错误。

2. 拉取对话历史并筛选你发送的消息

拿到对话ID后,调用conversations.history API拉取这个对话的消息记录。你可以设置limit参数(比如设100)确保覆盖到最近的消息,然后在返回的messages数组里做两件事:

  • 筛选出user字段等于你自己的用户ID的消息(毕竟你要找的是你主动发的内容)
  • ts字段(Unix毫秒时间戳)降序排序,取第一条,它的ts就是你最近联系对方的时间。

示例请求:

curl -X POST https://slack.com/api/conversations.history \
  -H "Authorization: Bearer YOUR_BOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"channel": "TARGET_IM_CHANNEL_ID", "limit": 100}'

3. 如果要包含公共频道里的提及消息

如果你还想统计在公共频道里你@机器人的消息,那需要多做几步:

  • conversations.list获取所有你加入的公共频道(types: public_channel
  • 对每个频道调用conversations.history,筛选出内容里包含@机器人IDuser是你的消息
  • 把这些频道消息和私信消息放在一起,按ts排序取最大的那个,就是你最近一次联系机器人的时间。

不过要注意,遍历多个频道会增加请求次数,建议根据实际需求决定是否需要这部分。

权限提醒

最后再啰嗦一句,你的Bot Token需要对应权限才能正常调用这些API:

  • 私信相关:im:readim:history
  • 公共频道相关:channels:readchannels:history
  • 如果涉及私有频道,还要加上groups:readgroups:history

内容的提问来源于stack exchange,提问作者Duy Hưng Androgyne Tenor

火山引擎 最新活动