2017-07-05 70 views
0

我從https://www.twilio.com/blog/2016/09/how-to-receive-and-respond-to-a-text-message-with-python-flask-and-twilio.html教程以下。404錯誤上本地主機與Twilio +瓶+ Ngrok +的Python(2.7)

然而啓動在一個終端窗口(python textapi.py)我的燒瓶應用後,啓動ngrok在另一個終端(ngrok http 5000),複製和粘貼的轉發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錯誤是來自,爲什麼它不能找到「本地主機:5000/SMS」?

而且這樣的:Flask server returns 404 on localhost:5000 w/ Twilio似乎並沒有解決我的問題。

更新1:問題的一部分是不具有我粘貼到Twilio的控制檯我ngrok網址的結尾「/ SMS」。

現在我有一個錯誤,twiml沒有屬性響應。

+0

請發佈解決方案作爲答案,而不是更新您的問題。您可以在[修訂](https://stackoverflow.com/posts/44929907/revisions)中找到您的解決方案。謝謝。 – Bugs

回答

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。自從發佈了版本6,其中包含MessagingResponse模塊。有a migration document for upgrading from version 5,你可能會覺得有用。