1

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

帖子 ID:5,正文:nil,来自:nil,created_at:“2012-06-14 17:28:01”,updated_at:“2012-06-14 17:28:01”

为什么它从身体和属性中接收 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 请求

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

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
4

1 回答 1

1

哇!我终于弄清楚了为什么这不起作用。事实证明,我在我的 Twilio 帐户中创建了一个新的“APP”,并在我创建的这个附加应用程序中设置了 POST 目标 URL。问题在于我使用的是 Twilio 沙盒试用帐户,我需要将 POST url 粘贴到“测试您的应用程序”部分的沙盒输入字段中。

于 2012-06-18T17:08:46.143 回答