【问题标题】:Slack bot running python functions运行 python 函数的 Slack 机器人
【发布时间】:2020-02-27 15:43:34
【问题描述】:

我正在创建一个 Slack Bot,我已经成功安装了它,尽管我不能 100% 确定当我在本地运行节点服务器时 ngrok 会做什么来运行它。我有followed this guide

我有一个 python 脚本:

  1. 连接到数据库
  2. 下载整个表并创建一个 pandas 数据框

在脚本中,我声明了许多从数据帧中获取特定信息的变量。

例如:

monday_sales = sum((df['sale_event_time']>=week) & (df['sale_event_time']<=today_real) & ((df['sale_event_time'].apply(lambda x:x.isoweekday()))==1))

这只是从数据框中返回我在星期一的销售额。

我的目标是将 slack bot 连接到我的 python 脚本,基本上能够在 slack 中运行/monday_sales,这将打印出monday_sales 变量保存的数字。

我没有使用太多node或js,所以将所有东西链接在一起我觉得有点困难。

首先我像这样运行 ngrok:

./ngrok http 4390

然后我在本地运行节点服务器(?)

var http = require('http');
const PORT=4390;
function handleRequest(request, response){
  response.end('My bot is ALIIIIIIVEEEEE');
}
var server = http.createServer(handleRequest);
server.listen(PORT, function(){
  console.log("Server listening on: http://localhost:%s", PORT);
});

当我在 slack 中运行 /ngrok 时,它会打印出“我的机器人是 ALIIIIIIVEEEEE,尽管只对我可见。

所以问题可以分成几个:

  1. 为什么我需要在本地运行 ngrok 和 node.js 服务器?
  2. 如何从 slack bot 触发 python 函数/变量。
  3. 有没有更好的方法让 slack bot 只由没有节点的 python 运行,ngrok?

非常感谢您的建议。

【问题讨论】:

  • ngrok 只是端口转发(隧道)您的本地主机,以便它可以在您的网络之外访问。ngrok 为您提供一个 URL,您可以访问该 URL 以便远程访问您的服务器。
  • 该指南适用于 node.js,但您不需要 node 来运行 slackbot。与纯 Python 一起工作正常。这是指南:slack.dev/python-slackclient
  • 如果你想像@Joel 解释的那样在本地运行你的机器人,你确实需要 ngrok。 Slack 的许多功能都需要向您的机器人发出 HTTP 请求。仅当您的机器人可以从 Internet 访问时才有效。

标签: python node.js slack ngrok


【解决方案1】:

我认为您最好的选择是放弃本教程和 Node,因为您似乎只是将它用作 ngrok 包装器。相反,由于您的机器人的其余部分使用 Python,只需使用 pyngrok(完全公开,我是开发人员),它是 ngrok 的 Python 包装器。它使您能够以编程方式访问隧道和其他所有内容。

如果这解决了您的用例,您可以查看文档here

【讨论】:

    猜你喜欢
    • 2016-08-15
    • 2017-05-24
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多