如何集成内部API(办公室网络外无法访问)以减少斜杠命令

时间:2017-06-23 16:34:09

标签: slack slack-api

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

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

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

当我在我的频道的松弛聊天框中键入/ opc时,这很好用。它返回一些数据。

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

  

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

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

任何人都可以在这里帮助我。

2 个答案:

答案 0 :(得分:7)

这不起作用,因为需要从公共互联网访问请求URL才能使用Slack。

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

一种方法是在内部Web服务器(可访问内部API的访问者)上运行slash命令的脚本,使用VPN隧道将该Web服务器暴露给Internet,例如:使用像ngrok这样的工具。

答案 1 :(得分:1)

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

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

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