You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Slack files_upload_v2()发送私信文件遇错误的解决咨询

如何用Slack files_upload_v2发送私信文件

Slack的files_upload_v2()接口不再支持通过@user.name指定接收方,必须使用符合格式的频道ID(匹配正则^[CGD][A-Z0-9]{8,}$,其中D开头的是私聊频道ID)。要实现私信文件发送,需按以下步骤操作:

步骤1:获取目标用户的ID

通过Slack API的users.list接口,根据用户名过滤出目标用户的ID:

# 获取用户ID(根据用户名匹配)
users_response = client.users_list()
target_user_id = None
for user in users_response["members"]:
    if user["name"] == "user.name":  # 替换为实际目标用户名
        target_user_id = user["id"]
        break

步骤2:获取与目标用户的私聊频道ID

调用conversations_open接口,传入用户ID即可创建或获取对应的私聊频道(ID以D开头):

# 获取私聊频道ID
conv_response = client.conversations_open(users=target_user_id)
dm_channel_id = conv_response["channel"]["id"]

步骤3:使用files_upload_v2上传文件到私聊频道

将获取到的私聊频道ID作为channels参数传入接口:

# 成功上传文件至私信
response = client.files_upload_v2(channels=dm_channel_id, file="myfile.csv")

完整可运行代码示例

from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError

token = "MY_TOKEN"  # 替换为你的Slack Token
client = WebClient(token=token)

try:
    # 1. 定位目标用户ID
    users_response = client.users_list()
    target_username = "user.name"
    target_user_id = None
    for user in users_response["members"]:
        if user["name"] == target_username:
            target_user_id = user["id"]
            break
    if not target_user_id:
        print(f"未找到用户 {target_username}")
        exit()

    # 2. 获取私聊频道ID
    conv_response = client.conversations_open(users=target_user_id)
    dm_channel_id = conv_response["channel"]["id"]

    # 3. 上传文件到私信
    upload_response = client.files_upload_v2(channels=dm_channel_id, file="myfile.csv")
    print("文件上传成功:", upload_response["ok"])

except SlackApiError as e:
    print(f"API调用失败: {e.response['error']}")

关键说明

  • 错误信息中的正则规则要求频道ID必须以C(公开频道)、G(私有组)或D(私聊频道)开头,这也是直接使用@user.name会报错的核心原因。
  • 若已提前知晓目标用户ID,可直接跳过步骤1,直接调用conversations_open获取私聊频道。

内容的提问来源于stack exchange,提问作者alporter08

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 07:46:11