Slack API:无法获取Chat:Write:Bot以自定义用户名发送消息

时间:2019-10-31 21:13:16

标签: slack

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

示例:

{
    "channel" : "1234689",
    "text" : "Hello, It's me.",
    "username": "DJDEPOLO",
    "as_user" : false
}

每次我打那个电话时,我都会得到一个错误,提示我缺少chat:write:bot。但我不知道如何获得该范围。我已经尽力想了一切,并且遍历了他们的文档多次。

我尝试使用OAuth路由请求范围,并且在将chat:write:bot添加到范围时,出现错误提示

  

请求的无效权限

示例:

https://slack.com/oauth/v2/authorize?scope=chat:write:bot&client_id=1234&redire....

似乎我需要使用用户令牌来执行此操作,但是当我请求访问令牌时,我将获得机器人令牌。

是否有人必须使用chat:write:bot或以:bot结尾的范围?还是我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

首先,在your apps for 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"
    }
}

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

以下是POST正文的示例:

{
    "channel": "Your channel id",
    "as_user": true,
    "text": "hi there",
    "attachments": []
}

希望它对您有帮助。