2017-07-08 1 views
1

Également dans ngrok, il apparaît une erreur de serveur interne 500 lors de la tentative de faire une demande de publication en utilisant twilio.Pourquoi j'obtiens l'erreur AttributeError: l'objet 'module' n'a pas d'attribut 'Response' dans mon application SMS qui s'interface avec Twilio?

Voici la partie de mon code où je sens qu'il ya un problème avec:

from flask import Flask, request 
from twilio import twiml 
import wolframalpha 
import wikipedia 

app = Flask(__name__) 

wolf = wolframalpha.Client(wolfram_app_id) 


@app.route('/', methods=['POST']) 
def sms(): 

    message_body = request.form['Body'] 
    resp = twiml.Response() 

    replyText = getReply(message_body) 
    resp.message('Hi\n\n' + replyText) 
    return str(resp) 

J'ai mis à jour toutes les dernières versions de ngrok, python, Twilio et Flask. J'ai également suivi toutes les étapes pour activer virtualenv.

+0

Pouvez-vous essayer d'exécuter 'qui python'? Le [Make: project] (http://makezine.com/projects/sms-bot/) que vous suivez indique que peu importe la version de Python que vous utilisez, mais j'ai le sentiment qu'il doit être 2.7 selon la [documentation Twilio] (https://www.twilio.com/docs/quickstart/python/twiml/say-response#let-twilio-find-your-server). (Je crois que le 'twiml.Response()' pourrait ne pas être supporté dans Python3, et vous semblez dire que votre Python est de la dernière version, donc cela pourrait être un conflit). – cosinepenguin

+0

En fait, je réexécute le programme en utilisant python version 2.7 cette fois et j'ai toujours la même erreur. Je sais que j'utilise 2.7 parce qu'il le montre sur le terminal. En outre, j'ai essayé d'envoyer un texte à mon téléphone en utilisant un simple programme python et cela a fonctionné à travers twilio. Cependant, le fichier pyhton qui comprend plus de lignes de code: wikipedia et wolfram qui recevront un message et le renvoyer ne semble pas fonctionner. – user8273233

+0

Pourriez-vous télécharger le code qui fonctionne (l'envoi d'un texte sur votre téléphone)? Il peut y avoir un problème avec la façon dont la réponse est invoquée dans le code de la question. – cosinepenguin

Répondre

3

Twilio développeur évangéliste ici. Si vous utilisez la dernière version du Twilio Python module, il n'y a pas de méthode Response. Au lieu de cela, puisque vous répondez à un message, vous devez utiliser le MessagingResponse à la place.

les opérations suivantes:

from flask import Flask, request 
from twilio.twiml.messaging_response import Message, MessagingResponse 
import wolframalpha 
import wikipedia 

app = Flask(__name__) 

wolf = wolframalpha.Client(wolfram_app_id) 


@app.route('/', methods=['POST']) 
def sms(): 

    message_body = request.form['Body'] 
    resp = MessagingResponse() 

    replyText = getReply(message_body) 
    resp.message('Hi\n\n' + replyText) 
    return str(resp) 
+0

Cela a fonctionné! Merci beaucoup. – user8273233

+0

Pas de problème! Bonne chance avec le reste de votre application. – philnash