为什么回调 URL 不起作用(对于 GroupMe 机器人)?

Why would a callback URL not work (for a GroupMe bot)?

我正在创建一个 GroupMe 机器人,我正在测试回调 URL 和我目前设置的基本 WSGI 应用程序。我计划在 Heroku 上托管机器人,但我首先在我的本地机器上测试它。我注册了一个机器人,回调 URL http://MY_IP_ADDRESS:8000。当我在 Python 解释器中打开不同的 shell 和 运行 requests.post('http://MY_IP_ADDRESS:8000', data = 'something') 时,一切正常。但是,当 GroupMe 组中有 activity 时,没有任何反应,甚至没有错误消息。

这是我的(简化)代码:

from wsgiref.simple_server import make_serve  

def app(environ, startResponse):

    try:
        requestBodySize = int(environ.get('CONTENT_LENGTH', 0))
    except ValueError:
        requestBodySize = 0

    # requestBody = environ['wsgi.input'].read(requestBodySize)
    print('something') 

    responseBody = bytes('successful', 'utf-8') 

    status = '200 OK'
    responseHeaders = [('Content-Type', 'text/plain'), ('Content-Length', str(len(responseBody)))]

    startResponse(status, responseHeaders)

    return [responseBody]

server = make_server('', 8000, app)
server.serve_forever()

我确定我正在做一些显而易见的事情,但我终究无法弄清楚是什么。如果有任何帮助,我将不胜感激!

我一直不明白为什么回调 URL 不能与本地主机一起使用,但是当我在 Heroku 上部署应用程序时,一切正常!肯定跟我的防火墙设置有关系

当您 运行 在本地计算机上使用服务器时,您的防火墙并不喜欢这样。 GroupMe 也只能发送给 public 面向的收件人,这就是 Heroku 工作的原因。我将来可以推荐的一件事是使用 Ngrok,https://ngrok.com/ 这将与您的服务器一起在您的机器上创建一个 public 面向地址,您可以将其用作回调 url。我使用 Ngrok 测试我的机器人并在推送到像 Heroku 这样的专用服务器之前快速迭代,老实说,查看 Heroku 日志文件是一件痛苦的事情...