使用 Twilio + Flask + Ngrok + Python (2.7) 在本地主机上出现 404 错误

Posted

技术标签:

【中文标题】使用 Twilio + Flask + Ngrok + Python (2.7) 在本地主机上出现 404 错误【英文标题】:404 Error on Localhost with Twilio + Flask + Ngrok + Python (2.7) 【发布时间】:2017-12-09 08:08:54 【问题描述】:

我正在学习https://www.twilio.com/blog/2016/09/how-to-receive-and-respond-to-a-text-message-with-python-flask-and-twilio.html的教程。

但是,在一个终端窗口 (python textapi.py) 中启动我的烧瓶应用程序后,在另一个终端 (ngrok http 5000) 中启动 ngrok,将转发 http url 复制并粘贴到 twilio 控制台的“消息进来”字段中,然后给号码发短信,我得到一个 404 错误。

我的烧瓶终端和我的 ngrok 终端都注册了传入的 POST,但都以 404 错误响应。

我的烧瓶应用如下所示:

from flask import Flask, request, redirect
import twilio
from twilio.rest import Client
from twilio.twiml.messaging_response import MessagingResponse
import pandas
import os

# Load some background data and credentials

app = Flask(__name__)

# Initiate Twilio Client
client = Client(account_sid, auth_token)

@app.route('/sms', methods=['POST'])
def sms():
    number = request.form['From']
    message_body = request.form['Body']
    # Do stuff to get response_String
    response = response_string
    resp = twiml.Response()
    resp.message(response)
    return str(resp)

if __name__ == '__main__':
    app.run()

谁能解释一下 404 错误是从哪里来的,为什么找不到“localhost:5000/sms”?

另外:Flask server returns 404 on localhost:5000 w/ Twilio 似乎没有解决我的问题。

更新 1:部分问题是我粘贴到 Twilio 控制台的 ngrok 网址末尾没有“/sms”。

现在我遇到一个错误,即 twiml 没有属性 Response。

【问题讨论】:

请将解决方案发布为答案,而不是更新您的问题。您可以在revisions 中找到您的解决方案。谢谢。 【参考方案1】:

这里是 Twilio 开发者宣传员。

您导入了MessagingResponse,这是您需要使用的,而不是twiml.Response()。所以,你的代码应该是:

@app.route('/sms', methods=['POST'])
def sms():
    number = request.form['From']
    message_body = request.form['Body']
    # Do stuff to get response_String
    response = response_string
    resp = MessagingResponse()
    resp.message(response)
    return str(resp)

编辑

只是想道歉,您所指的博客文章使用的是版本 5 Python 库,它确实使用了twiml.Response。我们已经发布了版本 6,其中包含 MessagingResponse 模块。 a migration document for upgrading from version 5 可能对您有用。

【讨论】:

【参考方案2】:

尝试在 HTTP 请求中更改 Twilio 沙箱中的 URL

http://your-ngrok-url.ngrok.io/sms

在此处输入您的本地主机 URL。

Also check official documentation

【讨论】:

以上是关于使用 Twilio + Flask + Ngrok + Python (2.7) 在本地主机上出现 404 错误的主要内容,如果未能解决你的问题,请参考以下文章