【问题标题】:Twilio: How to communicate state from client to serverTwilio:如何将状态从客户端传递到服务器
【发布时间】:2014-05-13 16:14:16
【问题描述】:

上下文:我正在使用 Flask 和 Jinja2 模板来创建一个基于 twilio 的网络应用程序,它将充当用户网络邮件的基于电话的前端。

问题:我将电子邮件列表传递给 Jinja 模板,并且模板在消息上循环迭代,让用户可以选择如何处理每条消息。 “按 1 打印,按 2 回复,按 3 删除。”但是,当模板通过其循环时,我不知道如何与服务器通信操作适用于哪个消息。这是我的代码:

服务器代码:

@app.route('/inbox_action', methods=['GET', 'POST'])
def action():
    #1: print
    #2: reply
    #3: delete
    if request.method=='POST' and request.form['Digits']=='1':
        #do printing here
        render_template('error.html')
    elif request.method=='POST' and request.form['Digits']=='2':
        #do replying here
        pass
    elif request.method=='POST' and request.form['Digits']=='3':
        #do deleting here
        pass

客户端模板:

<Response>
{% for msg in msgs %}
    <Gather numDigits="1" timeout="10" action="/inbox_action">
        <Say voice="woman" language="en">To print this message, press 1. To reply to this message, press 2. To delete this message, press 3.</Say>
        <Say> {{msg.body}} </Say>
    </Gather>
{% endfor %}
</Response>

当用户按下操作时,我如何告诉服务器客户端正在播放哪条消息?

【问题讨论】:

    标签: python-2.7 web flask jinja2 twilio


    【解决方案1】:

    您的循环正在生成包含多个 GATHER 动词的 TwiML 响应,这将不起作用。将循环移动到 GATHER 元素中,以便生成一个 GATHER 动词,但多个 SAY 动词嵌套在 GATHER 中。我认为这会让你启动并运行。

    编辑:此外,您必须将其分为两个步骤。 1) 选择消息。 2) 选择打印、回复或删除。

    【讨论】:

    • 我没想过把它分成两个步骤,这是有道理的。如果我使用这种技术,我必须给每条消息一个 id,用户在选择他们想要对消息做什么之前必须选择它。对吗?
    • 是的。我想说使用唯一的 id 是最安全的方法。
    猜你喜欢
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多