Slack Events API对普通用户不起作用

时间:2018-08-07 09:50:25

标签: slack slack-api

只要有任何直接消息发送给已验证的用户,我都会使用slack api发送回复。因此,我创建了应用程序,启用了事件api,并验证了Webhook网址并订阅了chat:write:user,users:read事件

enter image description here

我使用带有范围(user2)的常规oauth流来获取访问令牌。

首先,我尝试使用工作区的管理员,一切正常。每当管理员用户和任何其他用户之间有直接消息时,我都会收到回调的事件。

现在

当我对普通用户(user2)进行尝试时,Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference 与其他用户之间没有直接消息时,我没有收到任何事件。我按照上面的相同步骤进行操作。

User2经历了具有相同范围的相同oauth流,并获得了自己的访问令牌。当我订阅事件api时,我应该能够收到指向我提到的URL的事件回调。

这里有什么问题吗?这不是工作原理吗?

2 个答案:

答案 0 :(得分:1)

这不行。

您的Slack应用将仅接收来自频道/会话的消息事件,安装用户是其中的成员(例如,管理员是他与他人之间直接消息传递会话的成员)。但是不可能在其他用户之间获得直接消息。

这是Slack的安全体系结构的设计方式。通常,即使安装使用的是管理员/所有者,任何Slack应用程序都无法监视所有私人和直接消息通道。

私有渠道的常见解决方法是检索bot用户的消息,并确保bot用户是您需要监视的所有私有渠道的成员。但是,对于直接消息对话,此解决方法不是很实用。

答案 1 :(得分:0)

原来是范围问题,下面是我从松弛支持团队收到的消息,它们很棒。

Sasikanth,您好

感谢您回到我身边。我看了一眼,似乎当user2安装“我的应用程序名称”应用程序时,要求的范围发生了一些变化。

以下是这些用户在安装“我的应用名称”后收到的范围:

user1:im:history,users:read,chat:write:user

user2:用户:读取,聊天:写入:用户

您会注意到,上面的用户1具有im:history范围,而上面的用户2没有。在文档中提到的message.im事件类型(https://api.slack.com/events/message.im)需要im:history范围。

这就是为什么您没有收到发送给用户2的DM的message.im事件类型的原因。

我希望这有助于解释问题。您需要做的是从以下位置删除对user2的授权:(我的开发应用程序网址),并让该用户使用适当的范围重新安装该应用程序。