2011-12-22 59 views
1

我在我的rails 3.1.3應用程序中使用Twilio,並且基本設置了一切,即根據響應取決於視圖的sms和xml構建器的控制器。唯一我無法弄清楚的是如何跟蹤對話。 Twilio文檔對於使用除PHP之外的任何其他文檔都很不好。我嘗試過使用Rails會話哈希,會話[:變量],但它似乎並沒有保存會話,因爲我試圖重定向和打印出來,什麼都沒有。以下是控制器的代碼。使用Rails和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 

我現在已經建立了一個數據庫表來跟蹤這取決於我的應用程序聯繫的電話號碼當前通話狀態。現在我唯一需要做的就是爲會話設置一個到期,就像會話或cookie一樣。我不確定如何做到這一點,或者甚至有可能。

+0

我相信這篇博文是http://www.twilio.com/blog/2012/01/twilio-and-rails-3-tracking-sms-conversations.html,涵蓋了你在找什麼。特別是,看看Rails對CSRF的保護的底部。 – mguymon 2013-01-29 19:57:43

+0

謝謝。我在寫完文章後寫了那篇文章,但感謝讀它! – acmeyer9 2013-02-02 20:18:27

回答

1

這取決於您如何定義「對話」,但通常情況下,您最好使用某種持久性(將數據庫推薦到文件上),並根據您的對話定義構建結構。

假設對話被定義爲沒有時間限制的兩個10位電話號碼之間的文本消息,您可以使用發送者和接收者屬性設置數據庫,因此如果需要在用戶界面輸出內容,可以查找發件人和收件人的電話號碼,並顯示所有發送給他們或從他們發送的消息。

短信與電話不同,因爲您可以爲電話會話設置Cookie。 SMS在交付或發送時完成。當您收到短信至電話號碼或短代碼時,Twilio會向您提供的短信網址發送請求,然後您的應用可以進行回覆。如果您收到另一個回覆,這是一個全新的請求,所以您必須構建「對話」的概念。

+0

所以我創建了一個數據庫表來添加條目,具體取決於電話號碼和狀態,該消息是在。現在我遇到的唯一問題是在一段時間後刪除這個狀態。這可能嗎? – acmeyer9 2011-12-28 03:32:05

+0

我不完全確定你在這裏問的是什麼 - 如果由於某些限制需要轉儲數據,可以創建一個定期運行並清理它的進程。請您詳細說明刪除它的原因以及您實施的數據結構? – Sologoub 2011-12-28 04:12:25

+0

當然,所以基本上我想跟蹤一個短信會話,我已經完成了,但一旦它結束,用戶已經停止發送短信,我想刪除它,以便下次他們發短信時,會話從頭再次開始。我想根據一段時間來完成,比如30分鐘後。 – acmeyer9 2011-12-28 14:00:05