Twilio:接收短信并使用正文内容做点什么

时间:2013-09-02 01:25:14

标签: ruby-on-rails ruby twilio

我很难理解Twilio。我已经阅读了文档,并计划再次阅读它们,但我希望得到一些指示。我正在使用Ruby on Rails作为我的应用程序。

我想要做的是能够从具有正文文本的用户接收短信。然后,我希望能够在模型中保存那些文本。我该怎么做呢?

谢谢!

4 个答案:

答案 0 :(得分:5)

Twilio号码可以与回调URL相关联,它会在收到短信时发送POST请求。应该自定义此回调URL以指向您将用于处理SMS的应用程序中的控制器。从那里,您可以阅读params哈希,了解收到的SMS消息的详细信息。值得注意的是:params['From']params['Body']。将这些参数中的文本存储到您喜欢的任何模型中!

Twilio回调网址

http<s>://<your domain.com>/sms

路线

resource :sms, only: :create

控制器

class SmsController < ApplicationController
  skip_before_filter :force_ssl # You may need this if your app uses https normally

  def create
    # Do something with params['From'] -- contains the phone number the SMS came from
    # Do something with params['Body'] -- contains the text sent in the SMS

    # <Reponse/> is the minimum to indicate a "no response" from Twilio
    render xml: "<Response/>"
  end
end

答案 1 :(得分:1)

user2515526,

最近我设置了我的第一个Rails应用程序,该应用程序利用了一些Twilio功能 - 主要是接收,处理和响应SMS消息 - 我同意:从菜鸟的角度来看,Twillio文档肯定可以清除^^

我发现this git repo非常非常有帮助。这个家伙基本上会带你完成所有你需要知道的起床和跑步。

答案 2 :(得分:0)

您可以像获取Web应用程序中文本框中的内容一样获取短信的正文。 在python中,它将是

mybody = request.args.get('body')

答案 3 :(得分:0)

如果你使用的是Node Express,这里有一个适用于我的代码片段:

app.post('/respondToMessage', function(req, res) {
    var twiml = new twilio.TwimlResponse();
    console.log('sms message =', req.body.Body);
    twiml.message('respondToMessage');
    res.type('text/xml');
    res.send(twiml.toString());
});

您正在从通常如下所示的响应中解析JSON属性 Body

{
   "ToCountry": "",
   "ToState": "",
   "SmsMessageSid": "",
   "NumMedia": "",
   "ToCity": "",
   "FromZip": "",
   "SmsSid": "",
   "FromState": "",
   "SmsStatus": "",
   "FromCity": "",
   "Body": "The attribute you're parsing for",
   "FromCountry": "",
   "To": "",
   "MessagingServiceSid": "",
   "ToZip": "",
   "NumSegments": "",
   "MessageSid": "",
   "AccountSid": "",
   "From": "+",
   "ApiVersion": ""
}