问题
这里我有一个机器人,当在松弛通道中发布带有附件的消息时,它应该保存带有唯一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 ........”)正确显示了。
答案 0 :(得分:0)
包含消息的JSON数组是Slack API将针对渠道历史记录返回的唯一格式。 channel.history
和conversations.history
都是相同的。
要获取其他信息,例如频道名称,用户名等,您将需要解析收到的消息(例如,频道的<C12345678>
),并调用其他API来检索和添加该信息。例如频道名称为conversations.info
或用户名称为users.info
。请查看Slack文档中的this part,以获取有关如何解析Slack标记的详细信息。
附件和共享文件也是如此。您只会在JSON数组中获得链接,然后需要自己下载文件。请注意,您需要提供身份验证,才能将私有文件从Slack下载到您的应用程序。 (有关详细信息,{see here):