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

如何以Slack团队用户身份调用chat.postMessage接口并显示实际发送者名称

解决Slack chat.postMessage发送者名称显示错误的问题

嘿,这问题我熟!你现在遇到的情况,本质是因为调用API时用的是频道创建者的个人token,所以Slack默认会以这个创建者的身份发送消息。要让消息显示实际发送用户的名字,得从授权方式和参数配置两方面调整:

核心解决方案:使用实际发送用户的个人Access Token

要让消息以真实用户身份发送,最直接的方式是让每个使用你集成的用户,通过OAuth 2.0流程授权你的应用,获取他们自己的个人用户Access Token,然后用这个token来调用chat.postMessage接口。

修改后的cURL代码示例

$curl = curl_init();
// 这里替换成实际发送消息的用户的个人Access Token
$userPersonalToken = "xoxp-你的用户授权token";

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://slack.com/api/chat.postMessage',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{ 
    "channel": "C03T3JT2SRF", 
    "text": "Hello Slack",
    "as_user": true // 关键参数:确保以用户自身身份发送消息
  }',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json',
    "Authorization: Bearer {$userPersonalToken}"
  ),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;

关键细节说明

  • as_user参数的作用:当你使用用户的个人token时,把这个参数设为true,Slack就会完全以该用户的身份发送消息,发送者的名称、头像都会和用户自己在Slack里的信息一致。
  • OAuth授权流程:你需要在Slack开发者后台给你的应用配置OAuth权限,至少要申请chat:write权限,这样用户授权后你才能拿到他们的个人token,用于发送消息。
  • 避免硬编码固定token:不要一直用频道创建者的token,要为每个发送消息的用户动态获取对应的授权token,这样才能保证发送者身份正确。

备选方案:自定义机器人名称(仅适用于机器人场景)

如果你是想用机器人发送消息,但要显示不同的名称(不是真实用户),可以用username参数,但这个仅适用于自定义集成机器人(不是官方的Slack Bot用户),而且消息会标记为机器人发送,不是真实用户身份:

{
  "channel": "C03T3JT2SRF",
  "text": "Hello Slack",
  "username": "实际发送者的名字",
  "icon_emoji": ":smile:" // 可选,设置机器人头像
}

不过这个方案不符合你要显示实际发送用户名称的需求,所以优先推荐前面的用户token方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:12:28