Skip to main content
 首页 » 编程设计

python之Slack API "attachments"未显示

2025年05月04日9emanlee

附件在以下代码中不起作用,response_type 也没有按应有的方式显示。我也尝试过使用 Python 的 Slack 客户端,但发生了完全相同的事情。

def send_message(channel_id, text): 
    params = { 
        "token" : token,  
        "username" : "NEW BOT", 
        "channel" : channel_id, 
        "text" : text, 
        "response_type": "ephemeral", 
        "attachments": [{ "text":"This is some text" }] 
    } 
 
    headers = {'content-type': 'application/json'} 
    slack_api = 'https://slack.com/api/chat.postMessage' 
    requests.get(slack_api, json=params, headers=headers) 
    return 
 
@app.route('/', methods=['GET', 'POST']) 
def main(): 
    if sc.rtm_connect(): 
        sc.rtm_read() 
        text = request.args.get("text") 
        channel_id = request.args.get("channel_id") 
        send_message(channel_id, text) 
        return Response(), 200 

请您参考如下方法:

response_type 字段只能在生成消息以响应斜线命令或消息按钮操作调用时设置。它不能直接使用 chat.postMessage 进行设置,因为没有关于向谁显示该临时消息的目标用户的上下文。

关于 chat.postMessage 的另一个怪癖是它目前不像传入的 webhooks 那样接受 JSON。相反,您需要发送 application/x-www-form-urlencoded 类型的 POST 参数。更奇怪的是,attachments 字段实际上并没有作为 JSON 字符串发送,而是通过 URL 编码到参数中。

还有一个提示,对于 chat.postMessage 和其他写入方法,您应该使用 HTTP POST 而不是 GET。