使用Rails和Twilio跟踪短信对话

时间:2011-12-22 17:47:20

标签: ruby-on-rails ruby-on-rails-3 session twilio

我在我的rails 3.1.3应用程序中使用Twilio并且我已基本设置了所有内容,即视图的sms和xml构建器的控制器,具体取决于响应。我唯一无法弄清楚的是如何跟踪对话。 Twilio文档使用除PHP以外的任何东西都非常糟糕。我已经尝试使用Rails会话哈希,session [:variable],但它似乎没有保存会话,因为我尝试重定向并打印出来并且什么也没得到。下面是控制器的代码。

  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一样。我不确定如何做到这一点,或者它是否可能。

1 个答案:

答案 0 :(得分:1)

这取决于你如何定义“对话”,但总的来说,你最好使用某种持久性(建议数据库在文件上),并根据你的对话定义构建结构。

假设会话被定义为没有时间限制的两个10位电话号码之间的文本消息,您可以设置具有发件人和收件人属性的数据库,因此如果您需要在用户界面中输出某些内容,您可以查看发件人和收件人的电话号码,并显示所有发送给他们或从他们那里传出的邮件。

短信与电话不同,因为您可以为电话会话设置Cookie。 SMS在发送或发送时完成。当您收到电话号码或短代码的短信时,Twilio会向您提供的短信网址发出请求,然后您的应用可以回复。如果你收到另一个回复,这是一个全新的请求,所以你必须构建“对话”的概念。