我已按照
的说明进行操作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
在我的路由表中
答案 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
如果有帮助,请告诉我。