twilio-ruby宝石处理SMS响应吗?

时间:2012-11-14 17:13:23

标签: ruby-on-rails rubygems twilio

唯一的reference to SMS on the readme file是关于发送短信的。

# send an sms
@client.account.sms.messages.create(
  :from => '+14159341234',
  :to => '+16105557069',
  :body => 'Hey there!'
)

我想知道twilio-ruby gem是否能提供短信响应的可见性?我想做一些像the example they give here in PHP这样的关键字响应逻辑。

2 个答案:

答案 0 :(得分:2)

对于可能遇到此问题的其他人,我发现来自this example applicationthis question非常有用。你需要做的是:

  1. 将您的Twilio号码短信网址设置为发布到您应用程序中的某个控制器(例如,myapp.com / twilio / process-sms)
  2. 添加路线以将该网址与Twilio控制器中的正确操作相匹配
  3. 根据您的自定义业务逻辑
  4. 编写一些简单的逻辑,如下处理您的号码的响应/消息
  5. 如有必要,使用.xml.erb文件(如下所示)进行回复
  6. 类TwilioController< ApplicationController中

      def process_sms
        @city = params[:FromCity].capitalize
        @state = params[:FromState]
        @from = params[:From]
        u = User.find_by_phone_number(@from)
        @user = u.name
        b = params[:Body]
    
    if b.downcase.include?("question")
        @type = "Question"
        @question = u.questions.build(:description => b)
        @question.save!
        render 'new_question.xml.erb', :content_type => 'text/xml'
    elsif b.downcase.include?("contact")
        @type = "Contact"
        @contact = u.contacts.build(:name => b)
        @contact.save!
        render 'new_contact.xml.erb', :content_type => 'text/xml'
    else
        @type = "Not sure"
        render 'not_sure.xml.erb', :content_type => 'text/xml'
    end
    

    .build将创建对象,而.save将保存对象。然后,您只需返回要响应用户的TWIML Twilio。如:

    应用程序/视图/ twilio / new_contact.xml.erb

    <Response>
      <Sms>We added a new contact for you.</Sms>
    </Response>
    

答案 1 :(得分:1)

当您收到Twilio号码的短信时,Twilio将make an HTTP request发送到您的服务器。您可以通过使用XML响应请求来响应传入的SMS,如下所示:

<Response>
    <Sms>This is my response</Sms>
</Response>

您可以自己生成XML响应,或者帮助程序库包含帮助您将XML返回给客户端的方法。我建议你看看Twilio Ruby SMS quickstart这个简单的例子,然后从那里开始。