【发布时间】:2020-02-27 15:43:34
【问题描述】:
我正在创建一个 Slack Bot,我已经成功安装了它,尽管我不能 100% 确定当我在本地运行节点服务器时 ngrok 会做什么来运行它。我有followed this guide。
我有一个 python 脚本:
- 连接到数据库
- 下载整个表并创建一个 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,尽管只对我可见。
所以问题可以分成几个:
- 为什么我需要在本地运行 ngrok 和 node.js 服务器?
- 如何从 slack bot 触发 python 函数/变量。
- 有没有更好的方法让 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