Slack 具有复制链接功能,可将单个聊天消息的深层链接复制到剪贴板:
这是此类深层链接的示例(已混淆):
https://myworkspace.slack.com/archives/CqwertGU/p1234567898000159
我想做的是,从给定该链接的 Slack API 获取该消息的详细信息。
之后的第一个字符串/archives/是频道的 ID。不过我不太清楚第二个字符串:
channels.history也可用于从存档中提取单个消息。您需要消息的
ts值,以在通道中唯一标识它。您还需要该频道的 ID。
所以,我发现p1234567898000159上面链接中的值几乎是消息的ts值,但不完全是(Slack API 不会接受它):需要删除前导,并且后面p还必须插入一个.第10位数字:1234567898.000159
将所有这些放在一个 API 请求中......
https://slack.com/api/channels.history?latest=1234567898.000159&channel=CqwertGU&count=1&pretty=1&token=mytoken123&inclusive=true
...我收到了包含所有消息详细信息的回复,这正是我所需要的。
我的问题是:我这样做对吗?我真的需要通过ts这种方式从 URL 参数构造消息的值,还是有更好、更强大、官方支持的方法?
我是Python新手,但是当我创建SlackBot(由SlackBolt)时我遇到了同样的问题,我这样解决了它:
link = 'https://***.slack.com/archives/C03UGEVQ6BX/p1668769293636169'
#Grab information from link
wrong_link_list = link.split('/')
wrong_ts = wrong_link_list[-1]
t_ts = wrong_ts.replace('p', '', 1)
dot = '.'
char_count = 10
#Put information in variables
channel = wrong_link_list[-2]
text = 'Hey dude!'
mess_ts = t_ts[:char_count] + dot + t_ts[char_count:]
app.client.chat_postMessage(channel=channel, text=text, thread_ts = mess_ts)
Run Code Online (Sandbox Code Playgroud)
希望对你有帮助!