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

时间:2019-06-22 22:03:47

标签: http callback wsgi groupme

我正在创建一个GroupMe机器人,并且正在测试到目前为止已设置的回调URL和基本WSGI应用程序。我计划在Heroku上托管该机器人,但首先要在我的本地计算机上对其进行测试。我注册了一个带有回调URL http://MY_IP_ADDRESS:8000的漫游器。当我打开其他外壳并在Python解释器中运行requests.post('http://MY_IP_ADDRESS:8000', data = 'something')时,一切正常。但是,当GroupMe组中有活动时,什么也不会发生,甚至不会出现错误消息。

这是我的(简体)代码:

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()

我确定自己在做一些显而易见的事情,但是我一生都无法弄清楚该做什么。我将不胜感激!

2 个答案:

答案 0 :(得分:0)

我从不知道为什么回调URL无法与localhost一起使用,但是当我在Heroku上部署应用程序时,一切正常!它一定与我的防火墙设置有关。

答案 1 :(得分:0)

当您在本地计算机上运行服务器时,防火墙并非如此。 GroupMe也只能发送给面向公众的收件人,因此无法发送给其他任何人,这就是Heroku工作的原因。我将来建议的一件事是使用Ngrok,https://ngrok.com/可以与您的服务器配合使用,在您的计算机上提供一个面向公众的地址,您可以将其用作回调URL。我使用Ngrok来测试我的机器人并快速迭代,然后再推送到类似Heroku的专用服务器上,老实地查看Heroku日志文件是很痛苦的...