使用Twilio + Flask + Ngrok + Python(2.7)在Localhost上出现404错误

时间:2017-07-05 15:04:45

标签: python flask twilio ngrok

我正在关注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。

2 个答案:

答案 0 :(得分:0)

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。我们已经发布了具有MessagingResponse模块的版本6。您可能会发现a migration document for upgrading from version 5有用。

答案 1 :(得分:0)

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

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

在此输入您的localhost URL。 enter image description here

Also check official documentation