我如何使用Slack API以用户身份发布消息?

问题描述 投票:0回答:1

TL / DR

我如何以触发斜杠命令的用户身份在DM的闲置状态中发布消息?

我正在编写一个简单的应用程序,该应用程序查询giphy api并发布gif(我知道一个应用程序已经存在,但这更多是为了了解新api权限的工作方式。

出于测试原因,我同时使用机器人用户和用户权限来构建应用。我遇到的问题是在DM中以用户身份发布消息。

所以我浏览了各种问题和帖子,看来我需要使用im:write范围在DM中发布消息。该描述也指出Start direct messages with people on the user’s behalf。我还启用了其他各种与写作相关的范围进行测试。

现在是问题:

如果我使用应用程序的用户令牌发布消息,则消息将以安装应用程序的用户的身份显示,但现在以触发它的用户的身份显示。这显然是一个问题。我知道其他应用程序(例如slack商店中的giphy应用程序)会将事情发布为调用命令的用户,而不是安装应用程序的用户。

如果我使用漫游器用户范围,并尝试在DM中发布,则尽管应用程序确实具有与其相关联的权限,但我仍然收到错误"response_metadata":{"scopes":["chat:write","chat:write.public","links:write","commands","groups:write","im:write","mpim:write","mpim:read"],"acceptedScopes":["chat:write"]}}。这是有道理的,因为漫游器不是DM的一部分。

slackuser.chat
    .postMessage({
        channel: payload.channel_id,
        text: '',
        username: payload.user_id,
        blocks:

在这种情况下,有效负载是指来自斜杠命令本身的有效负载。

我可以应用什么范围,应该使用哪种用户类型,以便我的应用程序可以以触发它的用户(不仅是安装它的用户)发布消息/链接。

slack slack-api
1个回答
0
投票

[遗憾的是,没有任何范围授予应用程序按字面意义发布的功能,就像碰巧自由使用斜杠命令的任何用户一样。 Slack上现有的/ giphy集成是使用内部途径构建的,并没有遵循与基于平台的Slack应用程序相同的规则和可能性。

当bot用户以外的任何其他用户在直接消息中执行斜杠命令时,您将无法使用chat.postMessage插入其他消息。您产生消息的唯一途径将仅限于斜杠命令执行本身提供的句柄-直接响应调用或使用response_url以及那里的任何交互式分支。

在非DM上下文中,您可以使用chat:write.customize范围提供其他用户创作的消息的错觉,但仅此而已-它仍然归因于您的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.