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

如何通过Python代码向Slack中属于其他组织的用户发送直接消息

跨组织Slack消息发送「Channel not found」问题解决方案

这个报错是Slack的组织间权限隔离机制导致的,默认应用仅能访问当前所属组织的用户、会话资源,直接传入外部组织用户ID调用消息接口无法匹配到对应会话通道。

修复步骤

  • 调整应用权限配置
    进入Slack应用管理后台,在OAuth & Permissions页的User Token Scopes/Bot Token Scopes区域添加conversations.connect:manage、im:write、users:read、users:read.email权限,完成后重新将应用安装到所属工作区,更新权限生效后的token。
  • 调整代码逻辑,先创建跨组织会话再发消息
    不能直接传入外部用户ID调用chat.postMessage接口,需要先调用conversations.open接口创建跨组织临时会话,拿到返回的会话ID后再调用消息发送接口,参考代码如下:
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError

# 初始化客户端,使用更新权限后的token
slack_client = WebClient(token="你的应用Bot/用户Token")

try:
    # 创建跨组织DM会话,users参数为目标用户ID,team_id为目标用户所属组织的团队ID
    create_conv_resp = slack_client.conversations_open(
        users="U_XXXXXXX",
        team_id="T_XXXXXXX"
    )
    cross_org_channel_id = create_conv_resp["channel"]["id"]
    # 发送消息
    send_msg_resp = slack_client.chat_postMessage(
        channel=cross_org_channel_id,
        text="你的消息内容"
    )
except SlackApiError as e:
    print(f"调用失败,错误码:{e.response['error']}")
  • 额外校验规则
    如果目标组织开启了外部消息白名单限制,需要先让目标用户将你的应用所属账号添加为外部联系人,否则会话创建请求会被拦截,返回restricted_action错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:54:02