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

时间:2016-11-05 19:41:03

标签: slack-api

我正在使用冗余events API并已设置reactions_added事件的订阅。现在,当一条消息被添加到消息中时,slack将向我发送一个帖子正文,其中包含已发送事件的所有详细信息described here

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

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

所以tl; dr是:我如何查找via slacks API,一个从事件API发送的消息文本?提供我认为有足够的event_ts,channel和message ts的信息。我正在使用ruby slack-api gem FWIW。

1 个答案:

答案 0 :(得分:4)

您确实可以使用 channels.history https://api.slack.com/methods/channels.history)方法从公共频道中检索邮件。 reaction_added已调度事件包括原始邮件的频道ID和时间戳(在item中),channelId +时间戳的组合应该是唯一的。

请注意使用正确的时间戳。您需要使用item.ts而不是event_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"
    ]}

所以使用这些值设置调用channels.history应该有效:

  • latest = item.ts value
  • earliest = item.ts value
  • inclusive = 1
  • channel = item.channel value

如果您想从私人频道收到消息,则需要使用groups.history