Slack api: files.upload 到用户频道并显示为机器人用户?
Slack api: files.upload to user channel and display as bot-user?
我正在尝试创建一个带有参数、生成图像和 return 并将图像返回给用户的 slack 命令,而且图像上传应该显示为 bot 用户。
我关注这个 post:你可以使用 files.upload 作为不同的用户将文件上传到 Slack API 吗?
我尝试创建 slack 应用程序,根据它创建一个机器人用户,并按如下方式上传 slack 文件 api:
def send_picture(channel_id, graph_details):
sender_token = "xoxb-..." # bot-user token
pic = {
'file' : ('img.png', open('img.png', 'rb'), 'png')
}
payload={
"title" : "Serverless App Report",
"channels" : [channel_id]
}
r = requests.post("https://slack.com/api/files.upload", params=payload, files=pic)
每当用户执行 slack 命令(POST 和参数)时,我可以解析 channel_id 以找出发件人并将其传递到 channel_id 到文件上传api.
将其发布到 public 频道工作正常。但是 post 将它返回给执行命令的用户失败并出现错误:{"ok":false,"error":"invalid_channel","channel":"DXXXXXXX"}
您收到此错误的原因是您的 bot 用户显然不是用户调用您的 slash 命令的私人频道的成员。因此,您的应用无法向其上传任何文件。这是正常行为,也是 Slack 安全架构的一部分。
此问题有 3 种解决方法:
您可以确保您的 Slack 应用程序中的 bot 用户已作为成员添加到您的 slash 命令需要工作的所有私人频道
您可以请求每个用户 "install" 您的 Slack 应用程序一次。从而为您的应用程序提供用户特定的 Slack 令牌,然后您的应用程序可以使用该令牌访问私人频道。
您可以不上传文件,而是回复一条消息,消息中也可以包含图片。 Slack 应用程序始终可以回复 Slash 命令,无论它是在哪种渠道发出的。
我正在尝试创建一个带有参数、生成图像和 return 并将图像返回给用户的 slack 命令,而且图像上传应该显示为 bot 用户。
我关注这个 post:你可以使用 files.upload 作为不同的用户将文件上传到 Slack API 吗?
我尝试创建 slack 应用程序,根据它创建一个机器人用户,并按如下方式上传 slack 文件 api:
def send_picture(channel_id, graph_details):
sender_token = "xoxb-..." # bot-user token
pic = {
'file' : ('img.png', open('img.png', 'rb'), 'png')
}
payload={
"title" : "Serverless App Report",
"channels" : [channel_id]
}
r = requests.post("https://slack.com/api/files.upload", params=payload, files=pic)
每当用户执行 slack 命令(POST 和参数)时,我可以解析 channel_id 以找出发件人并将其传递到 channel_id 到文件上传api.
将其发布到 public 频道工作正常。但是 post 将它返回给执行命令的用户失败并出现错误:{"ok":false,"error":"invalid_channel","channel":"DXXXXXXX"}
您收到此错误的原因是您的 bot 用户显然不是用户调用您的 slash 命令的私人频道的成员。因此,您的应用无法向其上传任何文件。这是正常行为,也是 Slack 安全架构的一部分。
此问题有 3 种解决方法:
您可以确保您的 Slack 应用程序中的 bot 用户已作为成员添加到您的 slash 命令需要工作的所有私人频道
您可以请求每个用户 "install" 您的 Slack 应用程序一次。从而为您的应用程序提供用户特定的 Slack 令牌,然后您的应用程序可以使用该令牌访问私人频道。
您可以不上传文件,而是回复一条消息,消息中也可以包含图片。 Slack 应用程序始终可以回复 Slash 命令,无论它是在哪种渠道发出的。