【问题标题】:How to integrate internal APIs (Not accessible outside office network) to slack slash commands如何将内部 API(无法在办公室网络外访问)集成到 slack slash 命令
【发布时间】:2017-11-27 07:33:48
【问题描述】:

我正在尝试对我的一个松弛通道使用斜杠命令。我尝试使用 git API 进行 POC,效果很好。

我首先从这个链接创建了一个斜杠命令: https://api.slack.com/censored/slash-commands

命令:/poc 请求网址:http://jsonplaceholder.typicode.com/posts

当我在频道的松弛聊天框中键入 /opc 时,这工作正常。它返回一些数据。

但是当我将请求 URL 更改为只能从办公室域访问的内部 API 时,我收到错误:

该死 - 斜杠命令不起作用(错误消息:Failure when receiving data from the peer)。管理命令。

我相信,slack 无法访问我的内部 URL,以防万一。可以看到松弛日志吗?

谁能帮帮我。

【问题讨论】:

    标签: slack slack-api


    【解决方案1】:

    如果无法打开与内部网络的连接,还有另一种方法可以通过使用队列反转通信方向来允许与内部服务进行通信。

    为此,您需要部署一个公共端点,该端点接受来自 Slack 的请求并将它们放入队列(例如 AWS Lambda + SQS、Flask + RabbitMQ),然后从内部网络轮询队列。轮询需要经常发生(至少每秒一次),以确保通信足够快,用户不会过多地注意到滞后。这样做可以避免暴露内部网络的任何端点。

    这种方法的缺点是基础架构更复杂,响应时间更慢,但在某些公司环境中它可能是一个不错的选择。

    【讨论】:

      【解决方案2】:

      这是行不通的,因为需要从公共 Internet 访问请求 URL 才能使用 Slack。

      一般来说,Slack 的大多数交互功能(斜线命令、交互消息、Modal、事件 API 等)都要求您的应用提供一个公共端点,Slack 可以通过 HTTP 调用该端点。

      为了使用 Slack 访问内部 API,您需要某种网关或隧道穿过公司的防火墙,将请求 URL 公开给 Slack。有很多方法可以做到这一点,并且需要根据您公司的安全策略来设计解决方案。

      这里有几个建议:

      VPN 隧道

      一种方法是在内部网络服务器(可以访问内部 API 的服务器)上运行斜杠命令的脚本,使用 VPN 隧道将该网络服务器公开到 Internet,例如使用 ngrok 之类的工具。

      非军事区

      另一种方法是在公司网络的 DMZ 中运行您的应用,并在两侧配置防火墙,以允许从公共 Internet 访问 Slack,并允许您的应用访问您的内部网络。

      另一种方法是在公共 Internet 上托管和运行应用程序中与 Slack 交互的部分,以及在公司内部网络上与内部网络交互的部分。然后添加一个安全连接,允许公共部分与在公司内部网络上运行的部分进行通信。

      【讨论】:

      • 虽然它没有解决我的问题,因为我是一个不懂防火墙等知识的程序员。但我同意这是唯一的解决方案。
      猜你喜欢
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多