我想为 Slack 频道中发布的任何消息订阅 Slack Events API。这些是我在 Slack Event API文档中给出的以下步骤。
我让用户通过 oauth 授权来安装应用程序。url 如下所示,带有范围和重定向 uri。(PHP代码)
$url = " https://slack.com/oauth/authorize/?client_id= " 。SLACK_CLIENT_ID 。"&scope=users.profile:read,users:read,groups:history,channels:history,im:history,mpim:history"。“&redirect_uri=”。urlencode(' https://api.example.com/slack/oauth/callback ') 。"&state=XXXXXXXXX";
我从 slack 收到一个代码,我用它来交换访问令牌。
访问令牌:xoxp-XXXXXXXXX-XXXXXXXXX-XXXXXXX-XXXXXXXXXXXXXXXXXXXX 范围:identify,channels:history,groups:history,im:history,mpim:history,users:read,users.profile:read 团队 ID:XXXXXXXX
我检查了团队的应用程序和集成,以查看该应用程序是否已安装,是的,它在应用程序列表中。
现在,根据我的理解,当在团队的任何频道中发布任何消息时,应该向我经过验证的 URL(“ https://api.example.com/slack/event/push ”)发出 POST 请求。但我在那里没有收到任何 POST 请求。
我想可能是 URL 损坏了,但我用计数器测试了它,每次点击 URL 时,它都会增加计数器。所以网址没问题。
有没有我在某处错过的步骤?我不知道接下来要尝试什么。
我联系了 Slack 支持人员,他们非常有帮助。Slack 的日志显示 Slack 实际上正在向我的请求 url 发送 POST 请求。所以我的设置工作得很好。但我的 API 框架无法解析请求正文,因此向 Slack 发送内部服务器错误 (500)。我们通过使用requestb.in解决了这个问题。
我所要做的就是改变解析请求正文的方式。