我正在尝试在PythonAnywhere上建立一个Webhook以连接到Twilio。我本质上是在尝试使用if语句创建一个非常简单的聊天机器人,该语句根据传入的文本消息来选择响应。我现在正在尝试在数据库中添加一个databsae,以便响应也可以基于以前的文本。 。我已经成功建立了数据库,但似乎无法将收到的文本消息存储在数据库中。
我尝试过各种教程并回答像这样的网站,但没有设法获得任何可行的解决方案。它们要么完全破坏代码,以致没有消息作为响应发送,要么数据库中什么也没有存储。
from flask import Flask, request, redirect, url_for
from twilio.twiml.messaging_response import MessagingResponse
from flask_sqlalchemy import SQLAlchemy
from socket import gethostname
app = Flask(__name__)
SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://{username}:{password}@{hostname}/{databasename}".format(
username="UrbanMissions",
password="Hello123",
hostname="UrbanMissions.mysql.pythonanywhere-services.com",
databasename="UrbanMissions$ClueNumber",
)
app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI
app.config["SQLALCHEMY_POOL_RECYCLE"] = 299
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)
class Reply(db.Model):
__tablename__ = "messages"
id = db.Column(db.Integer, primary_key=True)
content = db.Column(db.String(4096))
[...]
if __name__ == '__main__':
db.create_all()
reply = Reply(content=request.values.get('Body', None)
db.session.add(reply)
db.session.commit()
if 'liveconsole' not in gethostname():
app.run()
@app.route('/', methods=['GET', 'POST', 'PUT'])
def main():
body = request.values.get('Body', None)
text = body.lower()
resp = MessagingResponse()
if text.find("start") == 0:
这似乎导致所有问题的代码
("$reply = Reply(content=request.values.get('Body', None)
$db.session.add(reply)
$db.session.commit()")
这是我尝试将已发送的消息添加到消息数据库中,但这似乎不起作用。任何有关如何使它起作用以将传入消息添加到数据库的建议都将不胜感激。同样,从数据库再次检索消息的代码确实有帮助。