【问题标题】:A 'To' phone number is required-- Twilio-- Rails 4需要一个“收件人”电话号码——Twilio——Rails 4
【发布时间】:2015-02-19 23:59:17
【问题描述】:

我是 Rails 新手,这是我第一次在我的应用中实现 API。我正在创建一个允许用户使用 twilio 安排短信 (SMS) 的应用程序。我正在尝试传入“数字”,以便用户可以输入数字。当我硬编码一个号码时,我已经让应用程序工作了,但我得到“需要一个‘收件人’电话号码。”当我试图传递一个论点时。

这是控制器

    class TextMessagesController < ApplicationController

      def index 
        @message = TextMessage.all
      end

      def new
        @message = TextMessage.new
      end

      def create 
        @active = 'messages'
        @message = TextMessage.send_sms(params[:number], params[:message])
        if @message.save
          flash[:success] = "Text Message Sent."
          redirect_to message_path
        else
          render 'home'
        end
      end

     def text_message_params
       params.require(:text_messages).permit(:number, :message)
     end
  end

这是模型

class TextMessage < ActiveRecord::Base
belongs_to :user

validates :message, length: { maximum: 160 }, presence: true

def self.send_sms(number, message)
  twilio_account_sid = 'XXXXXX'
  twilio_auth_token  = 'XXXXXX'
  twilio_number      = 'XXXXXX'

@client = Twilio::REST::Client.new twilio_account_sid, twilio_auth_token

message = @client.account.sms.messages.create(
  :from => "+1#{twilio_number}",
  :to => "#{number}",
  :body => "#{message}"
  )
 end

结束

有人知道我在哪里犯错了吗?

【问题讨论】:

  • 我看到最后一个代码块之后的结尾是最后一个代码块的一部分吗?
  • 你能在发送短信前打印number吗?
  • 只是一个旁注,但 Twilio 允许长度最大为 1600 字节的消息 - 将作为串联的 SMS 发送,并将组装在用户的手机上!至于您的代码,我不完全确定问题出在哪里-您是否尝试过直接从控制器发送短信?这并不重要,但它删除了一个可能妨碍的额外层......

标签: ruby-on-rails sms twilio


【解决方案1】:

我的猜测是params[:number] 是空白的:

@message = TextMessage.send_sms(params[:number], params[:message])

也许应该改为params[:text_messages][:number]?基于您的 text_message_params 方法(您没有利用该方法)。

@message = TextMessage.send_sms(params[:text_messages][:number], params[:text_messages][:message])

【讨论】:

    【解决方案2】:

    你完全正确。下面是我想出的。感谢您的帮助!

        class TextMessagesController < ApplicationController
    
          def index 
            @message = TextMessage.all
          end
    
          def new
            @message = TextMessage.new
          end
    
          def create 
            @active = 'messages'
            @message = TextMessage.send_sms(text_message_params[:number], text_message_params[:message])
            if @message
              flash[:success] = "Text Message Sent."
              redirect_to text_messages_path
            else
              render 'home'
            end
         end
    
         def text_message_params
           params.require(:text_message).permit(:number, :message)
         end
       end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多