python - 如何在 Python 和 Flask 中使用 Twilio 发送 2 个自定义条件响应?

标签 python flask sms twilio twilio-twiml

我试图通过 Twilio 基本上循环 Flask 应用程序,以便当用户向 Twilio 号码发送短信时,Twilio 会向用户打招呼,但会等待用户的第二次响应。基本上:

用户向 twilio 号码发送短信 -> twilio 应用程序问候并提示用户进行另一个响应 -> 用户通过再次向 twilio 号码发送短信来输入第二个响应 -> twilio 确认并标记交易已完成

我得到了我想要的前半部分功能:

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

app = Flask(__name__)

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

    # get the message the user sent our Twilio number
    body = request.values.get('Body', None)

    # start our TwiML response
    resp1 = MessagingResponse()

    resp1.message('Hi! Please enter your name')

    return(str(resp1))

...但是我如何让它执行工作流程的第二部分?

提前感谢您的帮助!

最佳答案

这里是 Twilio 开发者布道者!

我们建议使用 session 构建这样的对话 - 您可以在此处查看使用 Python 和 Flask 的教程:https://www.twilio.com/docs/sms/tutorials/how-to-create-sms-conversations-python

所以你可以这样做:

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

# The session object makes use of a secret key.
SECRET_KEY = 'a secret key'
app = Flask(__name__)
app.config.from_object(__name__)

@app.route("/sms", methods=['GET', 'POST'])
def sms_logic():
    # Increment the counter
    counter = session.get('counter', 0)
    counter += 1

    # Save the new counter value in the session
    session['counter'] = counter

    resp = MessagingResponse()

    if counter == 1:
        resp.message('Hi! Please enter your name')
    else:
        body = request.values.get('Body', 'Friend')
        resp.message('Thanks {}!'.format(body))    

    return str(resp)


if __name__ == "__main__":
    app.run(debug=True)

有关更大的示例,请查看有关使用 Python 和 Flask 构建 Employee 目录的教程:https://www.twilio.com/docs/sms/tutorials/employee-directory-python-flask

关于python - 如何在 Python 和 Flask 中使用 Twilio 发送 2 个自定义条件响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51145995/

相关文章:

python - 如何防止 celery 执行相同的任务?

python - 在 Python 中序列化数组

python - 上下文中的 flask 上下文,对于 jsonfy,全部在一个页面中

python - 如何在 AWS elastic beanstalk 上部署结构化 Flask 应用程序

android - 通过 Intent 发送短信并知道短信是否已发送

python - Django ~ WSGIRequest 通过 get_context_data 方法添加表单

python - Pydev for Eclipse 在重命名包时不会更改所有引用

python - jinja2.异常.UndefinedError : 'render_field' is undefined

objective-c - MFMessageComposeViewController 中的界面语言

java - Android 通过其 Thread-ID 打开特定的 SMS-Thread