我如何在Twilio中设计这个场景?

时间:2013-08-07 14:11:51

标签: ruby sms sinatra twilio

我正在开展一个YRS 2013项目,并希望使用Twilio。我已经设置了一个价值超过100美元的Twilio账户。我正在开发一个使用外部API的项目,并在位置和日期附近查找事件。该项目使用Sinatra(将部署到Heroku)用Ruby编写。

我想知道你们是否可以指导我如何处理这种情况:用户发送我的Twilio帐户号码(该消息将包含位置和日期数据),我们处理该短信的正文,以及将结果发回给要求他们的号码。我不知道从哪里开始;例如,如果Twilio会处理某些任务,或者我只是使用Twilio的API并检查smss并返回结果。我考虑不使用数据库。

你能指导我如何处理这项任务吗?

我需要在周五提出这个项目;所以我的时间紧迫!感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

他们对如何完成大部分工作有一些很好的documentation

当您收到文本时,您应该将其解析为您需要的格式

将它放入现有项目中,当它返回区域中的一个或多个事件时,您需要检查字符串由于twilio限制消息限制为160个字符或更少的约束所需的时间。

确保您优雅地分割邮件,而不是在事件中间。如果你被归还“波士顿凯尔特人队比赛”,“坚果饼干比赛”。你想确保如果两个事件都不能放在一条消息中,第一条消息显示“波士顿凯尔特人游戏,另一个文字进入1秒”或类似的东西。


要从移动设备接收短信,您必须公开Twilio可以访问的端点。这是一个例子

class ReceiveTextController < ActionController
  def index 
    # let's pretend that we've mapped this action to 
    # http://localhost:3000/sms in the routes.rb file

    message_body = params["Body"]
    from_number = params["From"]

    SMSLogger.log_text_message from_number, message_body
  end
end

在此示例中,索引操作从Twilio接收POST。它抓取邮件正文和发件人的电话号码并记录它。从Twilio POST中检索信息就像查看params hash一样简单

{
  "AccountSid"=>"asdf876a87f87a6sdf876876asd8f76a8sdf595asdD",
  "Body"=> body,
  "ToZip"=>"94949",
  "FromState"=>"MI",
  "ToCity"=>"NOVATO",
  "SmsSid"=>"asd8676585a78sd5f548a64sd4f64a467sg4g858",
  "ToState"=>"CA",
  "To"=>"5555992673",
  "ToCountry"=>"US",
  "FromCountry"=>"US",
  "SmsMessageSid"=>"hjk87h9j8k79hj8k7h97j7k9hj8k7",
  "ApiVersion"=>"2008-08-01",
  "FromCity"=>"GRAND RAPIDS",
  "SmsStatus"=>"received",
  "From"=>"5555992673",
  "FromZip"=>"49507"
}

Source