繁体   English   中英

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

[英]Posting files to a chat through Slack API

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

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

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

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

我想要实现的是创建一条消息,我可以将其作为私人消息发送,或者发送到看起来像这样的频道

在此输入图像描述

如果可能的话,可能会在它上面添加一些文字

我已经探讨了文档中的“ 附件”部分,但找不到与文件相关的任何内容。 如果有办法不以二进制格式提供文件,而是作为一个也可以正常的链接(只要它以嵌入方式显示)。

这个示例脚本怎么样? 它使用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())
    )

结果:

在此输入图像描述

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

我遇到了这个问题,因为我有同样的问题 - 我的文件会上传,我会收到回复,但文件不会发布到我发送的频道。 事实证明,阅读Slack API文档是一项糟糕的工作。 我多次使用chat.postMessage并包含一个“通道”参数。 这是API: https//api.slack.com/methods/chat.postMessage

files.upload方法需要在'channels'参数中以逗号分隔的通道列表。 请参阅https://api.slack.com/methods/files.upload一旦我从'频道'更改为'频道' 确保将其作为列表传递,我就成功将图像发布到我想要的频道。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM