Twilio SMS无法使用rails 4

时间:2016-12-06 12:15:06

标签: ruby-on-rails twilio

我已按照

的说明进行操作
  

https://www.twilio.com/blog/2016/04/receive-and-reply-to-sms-in-rails.html

尝试在rails 4.0中发送短信。我有一个带有简单Rails控制器的试用帐户,如下所示

class MessagesController < ApplicationController
  skip_before_filter :verify_authenticity_token
  # skip_before_filter :authenticate_user!, :only => "reply"

  def reply
    message_body = params["Body"]
    from_number = params["From"]
    boot_twilio
    sms = @client.messages.create(
      from: Rails.application.secrets.twilio_number,
      to: from_number,
      body: "Hello there, thanks for texting me. Your number is #{from_number}."
    )
  end

  private

  def boot_twilio
    account_sid = Rails.application.secrets.twilio_sid
    auth_token = Rails.application.secrets.twilio_token
    @client = Twilio::REST::Client.new account_sid, auth_token
  end
end

在MyAppName / config / secrets.yml中,我定义了SID和令牌。根据教程,我使用ngrok将我的应用程序公开给全世界。我已将ngrok的URL输入到Twilio的configuration中,如图所示。我已经验证了ngrok通过将其复制到浏览器的URL中给我的URL。当我这样做时,它会在主页上打开我的rails应用程序。

问题是Twilio从不将SMS路由到我的rails应用程序。我没有回复我的回复动作中的短信,而是“从您的Twilio试用帐号发送 - 来自Twilio的Hello!”。这是我在编写Rails应用程序之前得到的Twilio响应。我应该提一下,我有

reply_messages POST /messages/reply(.:format) messages#reply

在我的路由表中

1 个答案:

答案 0 :(得分:2)

Twilio开发者传道者在这里。

问题在于您在Twilio控制台中输入了ngrok URL。您实际上已在框中输入了故障转移URL。如果您再看一下,您会看到当收到消息时,您正在使用名为“SMS Getting Started TwiML”的TwiML Bin,这就是您仍然收到教程响应的原因。

您需要将左侧的下拉列表从“TwiML”更改为“Webhook”,然后在显示的输入中输入URL。

关于第二点,您使用REST API来响应传入消息,但您可以使用TwiML来实现。只需将您的操作更新为:

  def reply
    from_number = params["From"]

    resp = Twilio::TwiML::Response.new do |r|
      r.Message "Hello there, thanks for texting me. Your number is #{from_number}."
    end 

    render xml: resp.to_xml
  end

如果有帮助,请告诉我。