Slack Bot从历史记录中返回消息

时间:2018-09-25 04:40:21

标签: java slack slack-api

问题

这里我有一个机器人,当在松弛通道中发布带有附件的消息时,它应该保存带有唯一ID的消息,而当我们在松弛通道中输入这些ID时,机器人应使用聊天记录中的附件

(就像消息的公共URL的工作方式一样-https://workspace_name/archives/channel_name/token)。

  

如果我在频道中附加了一个xml文件,则当我键入与该邮件相关联的ID时,漫游器应从频道的历史记录中返回该附件(添加附件的特定邮件)。

我正在使用以下代码:https://github.com/rampatra/jbot

当前问题是:-

我试图获取要共享给频道的文件的名称, 我在SlackBot.java(https://github.com/rampatra/jbot/blob/master/jbot-example/src/main/java/example/jbot/slack/SlackBot.java)中使用event.getFile()。getName()。并尝试显示它。

 @Controller(events = EventType.FILE_SHARED)
    public void onFileShared(WebSocketSession session, Event event) {
        logger.info("File shared: {}", event);
        System.out.println("file id : "+event.getFileId());
        System.out.println("file name :"+ event.getFile().getName());
    }

机器人应返回我共享的文件名(1234.xml)。但这是空值,但是文件ID(“ F ........”)正确显示了。

1 个答案:

答案 0 :(得分:0)

包含消息的JSON数组是Slack API将针对渠道历史记录返回的唯一格式。 channel.historyconversations.history都是相同的。

要获取其他信息,例如频道名称,用户名等,您将需要解析收到的消息(例如,频道的<C12345678>),并调用其他API来检索和添加该信息。例如频道名称为conversations.info或用户名称为users.info。请查看Slack文档中的this part,以获取有关如何解析Slack标记的详细信息。

附件和共享文件也是如此。您只会在JSON数组中获得链接,然后需要自己下载文件。请注意,您需要提供身份验证,才能将私有文件从Slack下载到您的应用程序。 (有关详细信息,{see here):