Отслеживание SMS-разговоров с помощью Rails и Twilio - PullRequest
1 голос
/ 22 декабря 2011

Я использую Twilio в своем приложении rails 3.1.3, и у меня все в основном настроено, то есть контроллер для сборщиков 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 Ответ

1 голос
/ 27 декабря 2011

Это зависит от того, как вы определяете «разговор», но в целом вам лучше использовать какое-то упорство (рекомендую базу данных поверх файла) и строить структуру в соответствии с вашим определением разговора.

Предположим, что разговор определяется как текстовые сообщения между двумя 10-значными телефонными номерами без ограничения по времени, вы можете настроить БД с атрибутами отправителя и получателя, поэтому, если вам нужно что-то вывести в пользовательском интерфейсе, вы можете посмотреть для номеров телефонов отправителя и получателя, а также отображать все сообщения, приходящие к ним или идущие от них.

SMS отличается от телефонного звонка, так как вы можете установить куки для сеанса телефонного звонка. СМС делается когда доставлено или отправлено. Когда вы получаете SMS на номер телефона или короткий код, Twilio отправит запрос на URL, который вы указали для SMS, и ваше приложение сможет ответить. Если вы получили другой ответ, это совершенно новый запрос, поэтому вам нужно составить понятие «разговор».

...