2011-12-22 3 views
1

내 레일 3.1.3 앱에서 Twilio를 사용하고 있습니다. 기본적으로 응답에 따라 뷰의 SMS 및 SMS 빌더 용 컨트롤러를 모두 설정했습니다. 내가 알 수없는 유일한 방법은 대화를 추적하는 것입니다. Twilio 문서는 PHP 이외의 다른 것을 사용하기에 매우 좋지 않습니다. 내가 레일 세션 해시, 세션 [: 변수]를 사용하여 노력했지만 세션을 저장하지 않는 것, 리디렉션하고 그것을 밖으로 인쇄 해봤고 아무것도 얻지 못했습니다. 아래는 컨트롤러의 코드입니다.레일 및 Twilio를 사용하여 SMS 대화 추적하기

 
    def receive 
    # Check for session variable and redirect if necessary 
    @sms_state = session[:sms_state] 
    if @sms_state == 'confirmation' 
     redirect_to 'confirm' 
    end 
    if condition 
     @sms_state = 'confirmation' 
     session[:sms_state] = @sms_state 
     render :action => "view.xml.builder", :layout => false 
    else 
     @sms_state = 'new_state' 
     session[:sms_state] = @sms_state 
     render :action => "error.xml.builder", :layout => false 
    end 
    end 
    # method that should be called after user deals with first part 
    def confirm 
    if condition 
     @sms_state = session[:sms_state] = nil 
     render :action => "confirm_view.xml.builder", :layout => false 
    else 
     @sms_state = 'confirmation' 
     session[:sms_state] = @sms_state 
     render :action => "error.xml.builder", :layout => false 
    end 
    end 

나는 지금 내 응용 프로그램을 연락 전화 번호에 따라 현재 대화 상태를 추적하는 데이터베이스 테이블을 설정했습니다. 지금해야 할 일은 세션이나 쿠키처럼이 대화의 만료를 설정하는 것입니다. 나는 이것을 할 수 있을지 또는 가능한지 모르겠다.

+0

나는이 블로그 게시물 (http://www.twilio.com/blog/2012/01/twilio-and-rails-3-tracking-sms-conversations.html)이 당신이 찾고있는 것을 다루고 있다고 믿는다. 특히 CSRF에 대한 Rails의 보호에 대한 맨 아래 부분을 살펴보십시오. – mguymon

+0

네 감사합니다. 나는 그것을 알아 낸 후에 실제로 그 기사를 썼다. 그러나 그것을 읽는 것에 감사한다! – acmeyer9

답변

1

이것은 "대화"를 정의하는 방법에 따라 다르지만 일반적으로 일종의 지속성 (파일에 대해 데이터베이스를 권하는)을 사용하는 것이 더 좋으며 대화의 정의에 따라 구조를 구축하는 것이 좋습니다.

대화가 시간 제한없이 두 10 자리 전화 번호 사이의 문자 메시지로 정의되었다고 가정하면 보낸 사람 및받는 사람 특성을 사용하여 db를 설정할 수 있으므로 사용자 인터페이스에서 무언가를 출력해야하는 경우 발신자와 수신자의 전화 번호를 찾고, 그들에게 오는 모든 메시지를 표시하거나 메시지를 표시하십시오.

전화 통화 세션에 쿠키를 설정할 수 있으므로 SMS는 전화 통화와 다릅니다. SMS는 전달되거나 전송 될 때 완료됩니다. 전화 번호 나 짧은 코드로 SMS를 받으면 Twilio는 SMS에 대해 제공 한 URL로 요청을 보내면 앱이 응답 할 수 있습니다. 다른 응답을 받으면 그것은 새로운 요청이므로 "대화"라는 개념을 만들어야합니다.

+0

그래서 메시지가있는 전화 번호와 상태에 따라 항목을 추가하는 db 테이블을 만들었습니다. 내가 가지고있는 유일한 문제는 일정한 시간이 지나면이 상태를 삭제하는 것입니다. 가능한가요? – acmeyer9

+0

나는 당신이 여기서 무엇을 요구하고 있는지 확실하지 않다. 어떤 제약으로 인해 데이터를 덤프해야한다면 주기적으로 실행하고 정리하는 프로세스를 만들 수있다. 삭제 이유와 데이터 구조에 대해 자세히 설명해 주시겠습니까? – Sologoub

+0

물론, 기본적으로 나는 한 번 해본 적이있는 SMS 대화를 추적하고 싶지만 일단 끝나면 사용자가 문자 메시지를 보내지 않고 다음 번에 문자를 보내고 대화를 처음부터 다시 시작하도록 삭제하려고합니다. . 나는 30 분 후에 시간대에 따라 그것을하고 싶다. – acmeyer9