#python #flask #twilio
#python #flask #twilio
Вопрос:
Я пытаюсь автоматизировать WhatsApp, используя python и flask, я получил некоторую ошибку при отправке сообщения Twilio в Whatsapp. Мой код такой
from flask import Flask,request
from twilio.twiml.messaging_response import MessagingResponse
import io
import datetime
#import xmlrpc.client import strftime
appbot=Flask(__name__)
@appbot.route("/sms",methods=["get","post"])
def reply():
with io.open("response.csv","a",encoding="utf-8")as f1:
ur = request.form.get("Body")
un = request.form.get("From")
print(un)
print(ur)
un = un.replace("whatsapp:","")
dt=datetime.datetime.now().strftime("%y%m%d--%H%M%S")
data = un "," ur "," dt
f1.write(data)
resp = MessagingResponse("You sent" " " ur "from" " " un "on" " " dt)
return(str(resp))
f1.close()
if (__name__ == "__main__"):
appbot.run()
Прежде всего, я также должен изменить ссылку в Twilio, но я все еще получаю ошибку в ней.
[2020-08-23 13:23:19,609] ERROR in app: Exception on /sms [POST]
Traceback (most recent call last):
File "C:UsersKENILAnaconda3libsite-packagesflaskapp.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "C:UsersKENILAnaconda3libsite-packagesflaskapp.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:UsersKENILAnaconda3libsite-packagesflaskapp.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:UsersKENILAnaconda3libsite-packagesflask_compat.py", line 39, in reraise
raise value
File "C:UsersKENILAnaconda3libsite-packagesflaskapp.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "C:UsersKENILAnaconda3libsite-packagesflaskapp.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "G:/P P SAVANI SCHOOL OF ENGINEERING/4 Forth year/Others/Chatbot/udemychat/app.py", line 27, in reply
resp = MessagingResponse("You sent" " " ur "from" " " un "on" " " dt)
TypeError: __init__() takes 1 positional argument but 2 were given
127.0.0.1 - - [23/Aug/2020 13:23:19] "POST /sms HTTP/1.1" 500 -
Ответ №1:
Вам нужно создать экземпляр ответа и вызвать .message
метод для него.
из документов:https://www.twilio.com/docs/sms/tutorials/how-to-receive-and-reply-python
@app.route("/sms", methods=['GET', 'POST'])
def sms_reply():
"""Respond to incoming calls with a simple text message."""
# Start our TwiML response
resp = MessagingResponse()
# Add a message
resp.message("The Robots are coming! Head for the hills!")
Ошибка, которую вы получаете, связана с тем фактом, что передаются все методы класса (включая __init__
) self
, поэтому передаваемое вами сообщение становится вторым аргументом, и Python выдает TypeError: __init__() takes 1 positional argument but 2 were given
ошибку