通过Slack API将文件发布到聊天室

2024-04-25 08:47:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python的库slackclient通过Slack API交付视频。

我经常使用slack.api_call('chat.postMessage'...),并且我熟悉'files.upload',但是当我执行

slack = SlackClient(TOKEN)
slack.api_call('files.upload', file=open('video.mp4', 'rb')...)

文件将上载到给定频道,但不会作为消息发布。

我试图实现的是创建一个消息,我可以将其作为私有消息发送,或者发送到一个看起来像这样的频道

enter image description here

如果可能的话,可以在上面加上一些文字。

我已经浏览了文档中的Attachment部分,但找不到任何与文件相关的内容。 如果有一种方法不提供二进制格式的文件,但作为链接,也可以(只要它是以嵌入式方式显示)。


Tags: 文件api消息视频chatfilescallslack
3条回答

这个脚本示例怎么样?它对文件使用io.BytesIO(f.read())。为了使用它,files:write:user必须包含在作用域中。关于文本,可以使用initial_comment导入它。在我的环境中,attachments不能用于files.upload。API文档是https://api.slack.com/methods/files.upload

脚本:

with open('./sample.mp4', 'rb') as f:
    slack.api_call(
        "files.upload",
        channels='#sample',
        filename='sample.mp4',
        title='sampletitle',
        initial_comment='sampletext',
        file=io.BytesIO(f.read())
    )

结果:

enter image description here

如果我误解了你的问题,我很抱歉。

这对我有效:

import slack

client = slack.WebClient(token='xoxb-XXX')

with open('/path/to/attachment.jpeg', 'rb') as att:
    r = client.api_call("files.upload", files={
        'file': att,
    }, data={
        'channels': '#my_channel',
        'filename': 'downloaded_filename.jpeg',
        'title': 'Attachment\'s title',
        'initial_comment': 'Attachment\'s description',
    })
    assert r.status_code == 200

我遇到这个问题是因为我有同样的问题-我的文件会上传,我会得到回应,但文件不会发布到我发送的频道。结果我在阅读Slack API文档方面做得很差。我已经多次使用chat.postMessage,并且包含了一个“channel”参数。这是API:https://api.slack.com/methods/chat.postMessage

files.upload方法希望在“channels”参数中使用逗号分隔的通道列表。请参阅https://api.slack.com/methods/files.upload一旦我从“channel”更改为“channels”并确保将其作为列表传递,我就成功地将图像发布到了所需的频道。

对于最初的问题,在您使用的代码(https://ibb.co/hwH5hF)的链接中,尝试将channel='bla'更改为channels=['bla']

相关问题 更多 >

    热门问题