从事件 api 响应中查看消息的文本

Jos*_*ua 0 slack-api

我正在使用 slacks事件 API并设置了对反应添加事件的订阅。现在,当对消息添加反应时,slack 将向我发送一个帖子正文,其中包含已调度事件的所有详细信息,如此处所述

我遇到的问题是我想获取详细信息,特别text是我的用户做出反应的消息的详细信息,以便我可以解析/存储该特定消息等。我假设消息会以某种类型的 UUID 返回,然后我可以响应回调并获取文本,但是我发现很难获取特定的消息。

我看到的唯一可用端点是channels.history,它似乎没有给我我正在寻找的粒度。

所以 tl;dr 是:如何通过 slacks API 查找从事件 API 发送的消息文本?提供我认为足够的 event_ts、频道和消息 ts 的信息。我正在使用 ruby​​ slack-api gem FWIW。

Joe*_*oel 5

您确实可以使用该方法channels.history ( https://api.slack.com/methods/channels.history ) 从公共频道检索消息。所述reaction_added分派事件包括所述原始消息的信道ID和时间戳(在item)和的channelID +时间戳的组合应该是唯一的。

但是请注意使用正确的时间戳。你需要使用item.tsevent_ts

来自文档的完整示例调度事件:

{
    "token": "z26uFbvR1xHJEdHE1OQiO6t8",
    "team_id": "T061EG9RZ",
    "api_app_id": "A0FFV41KK",
    "event": {
            "type": "reaction_added",
            "user": "U061F1EUR",
            "item": {
                    "type": "message",
                    "channel": "C061EG9SL",
                    "ts": "1464196127.000002"
            },
            "reaction": "slightly_smiling_face"
    },
    "event_ts": "1465244570.336841",
    "type": "event_callback",
    "authed_users": [
            "U061F7AUR"
    ]}
Run Code Online (Sandbox Code Playgroud)

因此,channels.history使用这些值集调用应该可以工作:

  • 最新 = item.ts 值
  • 最旧 = item.ts 值
  • 包括 = 1
  • channel = item.channel 值

如果您想从私人频道获取消息,您需要使用groups.history.

https://api.slack.com/methods/channels.history