Having an issue using Twilio to receive texts in Rails. Receiving nil when storing to the database.

坚强是说给别人听的谎言 提交于 2019-12-11 13:59:59

问题


I have set up the request URL in my Twilio account to have it POST to: myurl.com/receivetext. It appears to be successfully posting because when I check the database using the Heroku console I see the following:

Post id: 5, body: nil, from: nil, created_at: "2012-06-14 17:28:01", updated_at: "2012-06-14 17:28:01"

Why is it receiving nil for the body and from attributes? I can't figure out what I'm doing wrong! The created and updated at are storing successfully but the two attributes that I care about continue to be stored as nil.

Here's the Receive Text controller which is receiving the Post request from Twilio:

class ReceiveTextController < ApplicationController
  def index
    @post=Post.create!(body: params[:Body], from: params[:From])
  end
end

EDIT: When I dump the params I receive the following: "{\"controller\"=>\"receive_text\", \"action\"=>\"index\"}"

I attained this by inserting the following into my ReceiveText controller. @params = Post.create!(body: params.inspect, from: "Dumping Params") and then opening up the Heroku console to find the database entry with from = "Dumping Params".

I simulated a Twilio request with a curl with the following command curl -X POST myurl.com/receivetext route -d 'AccountSid=AC123&From=%2B19252411234'

I checked the production database again and noticed that the curl request did work when obtaining the FROM attribute. It stored the following:

params.inspect returned "{\"AccountSid\"=>\"AC123\", \"From\"=>\"+19252411234\", \"co..."

I received a comment stating: "As long as twilio is hitting the same URL with the same method (GET/POST) it should be filling the params array as well" I have no idea how to make this comment actionable. I'm very new to rails.

Here's my database migration (I have both attributes set to string. I have tried setting it to text and that didn't work either) :

 class CreatePosts < ActiveRecord::Migration
   def change
    create_table :posts do |t|
    t.string :body
    t.string :from

    t.timestamps
   end
  end
 end

Here is my Post model:

 class Post < ActiveRecord::Base
   attr_accessible :body, :from
 end

Routes (everything appears to be routing just fine) :

 MovieApp::Application.routes.draw do
  get "receive_text/index"
  get "pages/home"
  get "send_text/send_text_message"

  root to: 'pages#home'

  match '/receivetext', to: 'receive_text#index'
  match '/pages/home', to: 'pages#home'
  match '/sendtext', to: 'send_text#send_text_message'
 end

Here's my gemfile (incase it helps)

  source 'https://rubygems.org'

  gem 'rails', '3.2.3'
  gem 'badfruit'
  gem 'twilio-ruby'
  gem 'logger'
  gem 'jquery-rails'

 group :production do
  gem 'pg'
 end

 group :development, :test do
  gem 'sqlite3'
 end

 group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
 end

回答1:


Wow! I finally figured out why this wasn't working. It turns out that I created a new "APP" in my Twilio account and was setting the POST destination URL in this additional app that I created. The issue with this turned out to be the fact that I was using a Twilio sandbox trial account and I needed to paste the POST url into that sandbox entry field in the "Test your app" section.



来源:https://stackoverflow.com/questions/11038654/having-an-issue-using-twilio-to-receive-texts-in-rails-receiving-nil-when-stori

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!