1

我在我的 rails 3.1.3 应用程序中使用 Twilio,并且我已经基本设置好了所有内容,即根据响应为视图提供 sms 和 xml 构建器的控制器。我唯一不知道的是如何跟踪对话。Twilio 文档不适合使用 PHP 以外的任何东西来执行此操作。我曾尝试使用 Rails 会话哈希 session[:variable],但它似乎并没有保存会话,因为我尝试重定向并打印它并没有得到任何结果。下面是控制器的代码。

  定义接收
    # 检查会话变量并在必要时重定向
    @sms_state = 会话[:sms_state]
    如果@sms_state == '确认'
      重定向到“确认”
    结尾
    如果条件
      @sms_state = '确认'
      会话[:sms_state] = @sms_state
      渲染 :action => "view.xml.builder", :layout => false
    别的
      @sms_state = '新状态'
      会话[:sms_state] = @sms_state
      渲染 :action => "error.xml.builder", :layout => false
    结尾
  结尾
  # 用户处理完第一部分后应该调用的方法
  定义确认
    如果条件
      @sms_state = session[:sms_state] = nil
      渲染 :action => "confirm_view.xml.builder", :layout => false
    别的
      @sms_state = '确认'
      会话[:sms_state] = @sms_state
      渲染 :action => "error.xml.builder", :layout => false
    结尾
  结尾

我现在已经建立了一个数据库表来根据联系我的应用程序的电话号码来跟踪当前的对话状态。现在我唯一需要做的就是为这个会话设置一个过期时间,就像会话或 cookie 一样。我不确定如何做到这一点,或者它是否可能。

4

1 回答 1

1

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

假设对话被定义为两个 10 位电话号码之间没有时间限制的短信,您可以设置一个带有发送者和接收者属性的数据库,因此如果您需要在用户界面中输出某些内容,您可以查找发送者和收件人电话号码,并显示所有来自他们的消息。

SMS is different from a phone call, since you can set cookies for the session of a phone call. SMS is done when either delivered or sent. When you receive an SMS to a phone number or short code, Twilio will make a request to the URL you provided for SMS, and your app can then respond. If you receive another response, it's a brand new request, so you have to construct the notion of "conversation".

于 2011-12-27T02:29:02.110 回答