1

Twilio アカウントにリクエスト URL を設定して、myurl.com/receivetext に POST するようにしました。Heroku コンソールを使用してデータベースを確認すると、次のように表示されるため、正常に投稿されているようです。

投稿 ID: 5、本文: なし、送信元: なし、created_at: "2012-06-14 17:28:01"、updated_at: "2012-06-14 17:28:01"

体と属性から nil を受け取っているのはなぜですか? 私は何が間違っているのか理解できません!作成および更新された at は正常に保存されていますが、気になる 2 つの属性は引き続き 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 配列も満たされているはずです」というコメントを受け取りました。このコメントを実行可能にする方法がわかりません。私はレールに非常に慣れていません。

これが私のデータベースの移行です(両方の属性を文字列に設定しています。テキストに設定しようとしましたが、どちらも機能しませんでした):

 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 に答える