使用 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 错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 ngrok 地址来电自动设置 Twilio webhook 地址
为啥我不能使用 serveo 而不是 ngrok 来隧道连接到托管在 EC2 服务器上的 mvc 应用程序以在 Twilio 上接收 SMS