Slack API:无法让 Chat:Write:Bot 作为自定义用户名发送消息

Tho*_*ole 5 slack

我正在尝试使用他们的 Web API 将 Slack 与我们的应用程序集成。我需要使用chat.postMessage具有自定义用户名并设置 as_user = false的端点。我可以发布消息,但是当我设置时as_user=false它不起作用。

例子:

{
    "channel" : "1234689",
    "text" : "Hello, It's me.",
    "username": "DJDEPOLO",
    "as_user" : false
}
Run Code Online (Sandbox Code Playgroud)

每次我打那个电话时,我都会收到一条错误消息,说我失踪了chat:write:bot。但我无法弄清楚如何获得该范围。我已经尝试了我能想到的所有方法,并多次浏览了他们的文档。

我尝试使用 OAuth 路由请求范围,当我将 chat:write:bot 添加到范围时,我收到一条错误消息

请求的权限无效

例子:

https://slack.com/oauth/v2/authorize?scope=chat:write:bot&client_id=1234&redire....
Run Code Online (Sandbox Code Playgroud)

看来我需要使用用户令牌来执行此操作,但是当我请求访问令牌时,我得到了一个机器人令牌。

有没有人曾经使用过 chat:write:bot 或任何以 结尾的范围:bot?还是我在这里遗漏了什么?

Mak*_*hyn 1

首先,在您的 slack 应用程序中选择您的应用程序,然后导航到“OAuth 和权限”页面。

然后,单击“范围”部分中的“更新范围”,向下滚动,按“继续”并添加chat:write到用户令牌范围。然后再次向下滚动并完成该过程。

为了获取用户令牌,请将user_scope参数添加到您的查询中,而不是scope使其看起来像这样https://slack.com/oauth/v2/authorize?user_scope=chat:write&redirect_uri=...。当您用代码交换访问令牌时,您将收到如下内容:

{
    "ok": true,
    "app_id": "A0KRD7HC3",
    "team": {
        "name": "Slack Softball Team",
        "id": "T9TK3CUKW"
    },
    "authed_user": {
        "id": "U1234",
        "scope": "chat:write",
        "access_token": "xoxp-1234",
        "token_type": "user"
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意authed_user.access_token,因为这是您需要在授权标头中发送的令牌。

以下是 POST 正文的示例:

{
    "channel": "Your channel id",
    "as_user": true,
    "text": "hi there",
    "attachments": []
}
Run Code Online (Sandbox Code Playgroud)

希望对您有帮助。