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

Slack not_allowed_token_type错误解决:如何通过命令行发送消息

嘿,这个问题我碰过好多次了,核心是你用错了令牌类型——Slack的app-level令牌和Bot令牌的职责完全不搭边,咱们一步步来解决:

一、修复not_allowed_token_type错误

首先得搞明白:app-level令牌(xapp-开头)不是用来调用常规API的,它主要是给Socket Mode、事件订阅验证这类高级功能用的。你要调用conversations.list这种接口,得用Bot用户OAuth令牌(xoxb-开头)。

怎么获取并配置正确的令牌:

  • 回到你的Slack应用后台,找到「OAuth & Permissions」页面
  • 在「Bot User OAuth Token」区域复制那个xoxb-开头的令牌(如果没显示,说明你可能安装应用后没刷新页面,或者需要重新安装一次)
  • 检查权限:conversations.list需要channels:read、groups:read、im:read、mpim:read这些权限,去「Bot Token Scopes」里添加对应的权限,添加后必须重新安装应用到工作区,权限才会生效

修复后的正确curl命令示例:

curl https://slack.com/api/conversations.list -H "Authorization: Bearer xoxb-123456-abcdefghijklmnopqrstuvwxyz"
二、用命令行向频道/用户发送消息

同样要用Bot令牌,并且确保令牌有chat:write权限(还是在「Bot Token Scopes」里添加,重装应用生效)。

1. 发送消息到频道

首先得拿到频道ID:可以用上面修复后的conversations.list接口获取,或者在Slack里右键频道→「复制链接」,链接末尾的字符串就是频道ID(比如C1234567890)。

命令示例:

curl -X POST https://slack.com/api/chat.postMessage \
  -H "Authorization: Bearer xoxb-123456-abcdefghijklmnopqrstuvwxyz" \
  -H "Content-Type: application/json" \
  -d '{
    "channel": "C1234567890",
    "text": "Hello from the command line! 🚀"
  }'

2. 发送私信给用户

用户ID可以通过users.list接口获取,或者用户的Slack个人链接里的ID(格式是Uxxxxxx),把channel参数换成用户ID即可:

curl -X POST https://slack.com/api/chat.postMessage \
  -H "Authorization: Bearer xoxb-123456-abcdefghijklmnopqrstuvwxyz" \
  -H "Content-Type: application/json" \
  -d '{
    "channel": "U1234567890",
    "text": "Hey there! This is a direct message sent via command line."
  }'

额外注意点

  • 如果发送到私有频道,Bot必须先加入该频道——可以在Slack里手动邀请Bot,或者用conversations.join接口调用加入
  • 如果需要发送富文本消息,可以把text换成blocks参数,按照Slack的Block Kit格式来构造内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 15:42:46