2014-05-13 3 views
0

컨텍스트 : Jinja2 템플릿이 포함 된 Flask를 사용하여 사용자의 웹 메일에 대한 전화 통신 기반 프론트 엔드 역할을하는 twilio 기반 웹 응용 프로그램을 만듭니다.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> 

가 어떻게 사용자가 작업을 누르면 클라이언트가 재생 된 메시지 서버를 알 수 있습니까?

답변

1

루프가 여러 GATHER 동사가있는 TwiML 응답을 생성하고 있는데 작동하지 않습니다. 루프를 GATHER 요소로 이동하면 하나의 GATHER 동사를 생성하지만 GATHER 내에 중첩 된 여러 SAY 동사를 생성합니다. 나는 그것이 당신을 일으키고 달릴 것이라고 생각합니다.

편집 : 또한 두 단계로 나누어야합니다. 1) 메시지를 선택하십시오. 2) 인쇄, 답장 또는 삭제를 선택하십시오.

+0

두 단계로 나누지 않았다고 생각합니다. 이 기술을 사용했다면 각 메시지에 ID를 부여해야합니다. ID는 사용자가 메시지로 수행 할 작업을 선택하기 전에 선택해야합니다. 옳은? – STN

+0

예. 나는 유일한 ID를 사용하는 것이 가장 안전한 방법이라고 말하고 싶다. –

관련 문제