【问题标题】:Rails & Twilio: Receiving nil when storing texts received from TwilioRails & Twilio:存储从 Twilio 收到的文本时接收 nil
【发布时间】:2012-06-20 12:49:16
【问题描述】:

我已在我的 Twilio 帐户中设置了请求 URL,以便将其发布到:myurl.com/receivetext。它似乎已成功发布,因为当我使用 Heroku 控制台检查数据库时,我看到以下内容:

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

为什么它从 body 和属性中接收 nil?我无法弄清楚我做错了什么!创建和更新的 at 存储成功,但我关心的两个属性继续存储为 nil。

这是接收来自 Twilio 的 Post 请求的 Receive Text 控制器:

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

编辑:当我转储参数时,我收到以下信息: "{\"controller\"=>\"receive_text\", \"action\"=>\"index\"}"

我通过将以下内容插入到我的 ReceiveText 控制器中来实现这一点。 @params = Post.create!(body: params.inspect, from: "Dumping Params") 然后打开 Heroku 控制台以查找带有 from = "Dumping Params" 的数据库条目。

我使用以下命令 curl -X POST myurl.com/receivetext route -d 'AccountSid=AC123&From=%2B19252411234' 模拟了一个带有 curl 的 Twilio 请求

我再次检查了生产数据库,发现在获取 FROM 属性时 curl 请求确实有效。它存储了以下内容:

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

我收到一条评论说:“只要 twilio 使用相同的方法 (GET/POST) 访问相同的 URL,它也应该填充 params 数组”我不知道如何使这条评论可行。任何帮助将不胜感激!我对rails很陌生。

这是我的数据库迁移(我将两个属性都设置为字符串。我尝试将其设置为文本,但也没有用):

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

    t.timestamps
   end
  end
 end

这是我的帖子模型:

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

路线(一切似乎都很好):

 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

这是我的 gemfile(如果有帮助的话)

  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

【问题讨论】:

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


    【解决方案1】:

    您是否尝试过将其设为create 操作,称为via POST

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

    在你的routes.rb:

    post "receive_text/create"
    

    【讨论】:

    • 我刚刚尝试过,但没有成功。我刚刚意识到 Twilio 请求根本没有发送到应用程序。我保存到数据库的“nil”是我手动访问应用程序链接“myapp.com/receivetext”的结果,因此触发 nil for :From & :Body 并存储 created_at & updated at 我手动访问链接的时间.
    • 我应该不理会 GET 并另外添加 Post 吗?我将其删除并在路由文件中将其替换为 POST。
    • 刚刚想通了!原来我是在我的 twilio 帐户中创建的新应用程序中输入 POST url,而不是在“测试你的应用程序”沙箱部分中粘贴 url。
    猜你喜欢
    • 2012-06-17
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    相关资源
    最近更新 更多