【问题标题】:How to make the flask app ask questions one by one to a user and keep the answers of that user?如何让烧瓶应用一一向用户提问并保留该用户的答案?
【发布时间】:2019-12-14 19:09:07
【问题描述】:

我想使用 twilio、whatsapp 和 flask 构建一个简单的聊天机器人,它会询问用户姓名、年龄和图片。但是烧瓶应用程序只问一个问题并返回输出并退出函数。

我尝试使用 while 循环继续询问所有问题并获取输出,但如果没有返回,则不会显示对用户消息的响应。因此,我无法为用户获得下一个问题的答案。 有什么方法可以为用户创建会话并获取所有详细信息并关闭会话,并且下次同一用户发起聊天时,用户可以获取他们的信息。

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

app = Flask(__name__)

output = []

@app.route("/")
def hello():
    return "Hello world !!"

@app.route("/sms", methods=['GET', 'POST'])
def sms_reply():
    # Fetch the message
    msg = request.form.get('Body')
        msg = msg.lower()
    output.append(msg)

    resp = MessagingResponse()
    resp.message("May I know you name?")

    # ASK ANOTHER QUESTION

    print("User message: ", msg)

    return str(resp)

【问题讨论】:

  • 这不是 REST 的工作方式。 codecademy.com/articles/what-is-rest 您可以做的是显示一个 (html) 页面,您可以在其中询问用户名、年龄和图片,并在 POST 请求中将这些详细信息发送到您的服务器。而已。确保至少对数据进行服务器端验证。
  • 意味着我必须一次性提供所有详细信息并保存整个响应?

标签: python-3.x flask twilio


【解决方案1】:

Heyo,这里是 Twilio 开发人员宣传员。 ?

假设您的/sms 端点是您定义的webhook URL,当消息进入时您可以做的是to use cookies to persist the state of your conversation。如果您为 webhook 请求设置 cookie,此 cookie 将持续存在于以下 webhook(最长 4 小时)。

我不是 python 开发人员,但我构建了具有 /sms/ endpoint available 的 a quick JS example。逻辑相当简单,应该可以转移到烧瓶中。 :)

在伪代码中,您可以做的是通过设置的 cookie 保持状态。

  • 检查 cookie 的状态
  • 如果什么都没有设置,设置一个像state=asked_for_name这样的状态cookie
  • 返回 TwiML 以询问名称

  • 您的电话号码收到要求输入姓名的回复,而对方则用他们的姓名回答。另一个 webhook 被发送到相同的 URL。

  • 检查state cookie 并找到asked_for_name

  • 设置一个name cookie,其值为webhook body response.Body.body
  • 将状态cookie更改为state=asked_for_age
  • 返回 TwiML 以询问年龄

  • 您的电话号码会收到询问年龄的回复,并且对方会回答他们的年龄。另一个 webhook 被发送到相同的 URL。

  • 检查state cookie 并找到asked_for_age

  • 设置一个age cookie,其值为webhook body response.Body.body
  • 将状态cookie更改为state=sent_summary
  • 返回 TwiML,包括 name 和 age

附带说明一下,对于这类事情,您可能需要查看Twilio Studio。您可以立即通过拖放一些小部件来构建这些聊天对话。 :)

【讨论】:

  • 非常感谢您的时间和考虑 :-) 它在烧瓶中工作。我一定会检查 Twilio Studio :-)
  • 太棒了!乐意效劳。 ?‍♂️
猜你喜欢
  • 2018-01-20
  • 2021-04-10
  • 1970-01-01
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
  • 2017-01-18
  • 1970-01-01
相关资源
最近更新 更多