我遵循的说明,
https://www.twilio.com/blog/2016/04/receive-and-reply-to-sms-n-rails.html,
尝试在Rails 4.0中发送SMS。我有一个简单的导轨控制器的试用帐户,如下所示
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.ym中,我定义了SID和令牌。根据教程,我正在使用Ngrok将我的应用程序暴露于世界。如图所示,我已将Ngrok的URL输入到Twilio的配置中。我已经通过将其复制到浏览器的URL中来验证了URL NGROK给我的。当我这样做时,它会在主页上打开我的Rails应用程序。
问题在于,Twilio永远不会将SMS路由到我的Rails应用程序。我没有在我的回复动作中回复短信,而是"从您的Twilio试用帐户发送 - 从Twilio出发!"。这是我什至在编写Rails应用程序之前得到的Twilio响应。我应该提到,我有
reply_messages POST /messages/reply(.:format) messages#reply
在我的路由表中
twilio开发人员在这里。
问题是您在Twilio控制台中输入Ngrok URL的位置。实际上,您将其输入到框中以获取故障转移URL。如果您再次看一看,您会发现当一条消息传来时,您正在使用称为" SMS入门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
让我知道是否有帮助。