Почему я получаю сообщение об ошибке AttributeError: у объекта «модуль» нет атрибута «Ответ» в моем приложении SMS, которое взаимодействует с Twilio?

Также в ngrok появляется внутренняя ошибка сервера 500 при попытке сделать почтовый запрос с помощью twilio.

Вот часть моего кода, где я чувствую, что есть проблема:

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)

Я обновил все последние версии ngrok, python, twilio и Flask. Я также выполнил все шаги по активации virtualenv.


person user8273233    schedule 08.07.2017    source источник
comment
Можешь попробовать запустить which python? В проекте Make:, за которым вы следите, говорится, что не имеет значения, какую версию Python вы используете. используете, но мне кажется, что в соответствии с Документация по Twilio. (Я считаю, что twiml.Response() может не поддерживаться в Python3, и вы, кажется, говорите, что ваш Python имеет последнюю версию, так что это может быть конфликтом).   -  person cosinepenguin    schedule 08.07.2017
comment
На этот раз я повторно запускаю программу, используя версию Python 2.7, и все равно получаю ту же ошибку. Я знаю, что использую 2.7, потому что он показывает это на терминале. Кроме того, я попытался отправить текст на свой телефон с помощью простой программы на Python, и это сработало через twilio. Однако файл pyhton, который включает в себя больше строк кода: wikipedia и wolfram, который получит сообщение и отправит его обратно, похоже, не работает.   -  person user8273233    schedule 08.07.2017
comment
Не могли бы вы загрузить код, который работает (отправка текста на телефон)? Может возникнуть проблема с тем, как Response вызывается в коде вопроса.   -  person cosinepenguin    schedule 09.07.2017
comment
Это простой код, который просто отправляет сообщение на мой телефон, когда я запускаю программу python, например: python filename.py. Мне не нужно было использовать 2 терминала или копировать URL-адрес в twilio. from twilio.rest import Client # Найдите эти значения по адресу twilio.com/user/account account_sid = ACXXXXXXXXXXXXXXXXX auth_token = YYYYYYYYYYYYYYYYY client = Client(account_sid, auth_token) message = client.api.account.messages.create(to=+12316851234, from_=+15555555555, body=Привет!)   -  person user8273233    schedule 10.07.2017


Ответы (2)


Евангелист разработчиков Twilio здесь.

Если вы используете последнюю версию модуля Twilio Python, то Response метода нет. Вместо этого, поскольку вы отвечаете на сообщение, вам нужно вместо этого использовать MessagingResponse.

Попробуйте следующее:

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)
person philnash    schedule 10.07.2017
comment
Без проблем! Удачи с остальной частью вашего приложения. - person philnash; 10.07.2017

Этот код использует Flask для отправки сообщения

Для установки используйте:

* pip install flask
* pip install twilio

from flask import Flask, request
from twilio.twiml.messaging_response import MessagingResponse

app = Flask(__name__)

@app.route("/sms", methods =['POST'])
def sms():
    number = request.form['From']
    message_body = request.form['Body']

    resp = MessagingResponse()
    response_message = 'Hello {}, You said:{}'.format(number, message_body)
    resp.message(response_message)

    return str(resp)

if __name__ == "__main__":
    app.run(debug=True)
person Mahendra S. Chouhan    schedule 15.05.2018