Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行python函数的slackbot_Python_Node.js_Slack_Ngrok - Fatal编程技术网

运行python函数的slackbot

运行python函数的slackbot,python,node.js,slack,ngrok,Python,Node.js,Slack,Ngrok,我正在创建一个Slack机器人,我已经成功地安装了它,尽管我不能100%确定当我在本地运行节点服务器时,ngrok如何运行它。我有 我有一个python脚本: 连接到数据库 下载整个表并创建一个数据框 在脚本中,我声明了许多变量,这些变量从数据帧获取特定信息 例如: monday_sales = sum((df['sale_event_time']>=week) & (df['sale_event_time']<=today_real) & ((df['sale_ev

我正在创建一个Slack机器人,我已经成功地安装了它,尽管我不能100%确定当我在本地运行节点服务器时,ngrok如何运行它。我有

我有一个python脚本:

  • 连接到数据库
  • 下载整个表并创建一个数据框
  • 在脚本中,我声明了许多变量,这些变量从数据帧获取特定信息

    例如:

    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中运行
    /ngrok
    时,它会打印出“我的机器人是AliiIveeeee的,尽管只有我可以看到”

    因此,这个问题可以分成几个部分:

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

  • 非常感谢您的建议。

    我认为您最好的选择是放弃本教程和节点,因为您似乎只将其用作
    ngrok
    包装器。相反,由于您的bot的其余部分是用Python编写的,所以只需使用
    pyngrok
    (完全公开,我是开发人员),它是
    ngrok
    的Python包装器。它让你可以通过程序访问隧道和其他一切


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

    ngrok只需将本地主机转发(隧道)到您的网络之外即可访问。ngrok为您提供一个url,您可以访问该url以远程访问服务器。该指南适用于node.js,但您不需要node来运行slackbot。可以很好地使用纯Python。以下是指南:如果你想像@Joel解释的那样在本地运行你的机器人,你确实需要ngrok。Slack的许多功能都需要向您的机器人发出HTTP请求。只有当你的机器人可以从互联网上访问时,这才有效。
    ./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);
    });