【问题标题】:RoR + SMS: Rails web app architecture to send/receive SMS?RoR + SMS:用于发送/接收 SMS 的 Rails Web 应用程序架构?
【发布时间】:2010-09-13 21:57:26
【问题描述】:
哪种网络应用架构可以很好地接收/发送 SMS 文本消息? “架构,我指的是特定的架构,而不是笼统的,比如 MVC。
背景:我正在构建一个网络应用程序,用于接收来自手机的查询/向手机发送答案。应用程序设计(和商业模式)期望通过 SMS 文本消息与手机设备进行通信。 IOW:没有 MVC 网页“视图”。手机屏幕实际上是“视图”。
【问题讨论】:
标签:
ruby-on-rails
web-applications
sms
mobile-phones
【解决方案1】:
这取决于您将如何接收和发送 SMS 消息。
有一个特定的短消息协议 (SMPP - http://en.wikipedia.org/wiki/SMPP)。
为此,您需要一个 SMPP 服务器。
如果您使用各种基于 HTTP 的 SMS 提供商之一(例如 Clickatell - http://www.clickatell.com),那么像 RoR 这样的 Web 框架就可以了,因为 SMS 消息的发送和接收实际上都是 Web 请求。
在这种情况下,您的系统视图是对网关的 HTTP 响应,而不是手机屏幕。实际上涉及很多步骤:
Cellphone -> Cellular Network -> Gateway -> Your Service 回复:Cellphone <- Cellular Network <- Gateway <- Your Service
【解决方案2】:
我会质疑这是否真的是一个网络应用程序。如果视图层是 SMS,则不必使用 Internet 作为传输,您可以使用硬件连接到手机网络。
如果您正在考虑使用商业 http/sms 网关,请参阅 good article 使用 Rails 应用程序中的 Ruby Clicktell gem。似乎是个不错的尝试途径。
【解决方案3】:
在使用 Rails 之前,我已经制作了其中一个。我创建了一个预算跟踪器,我可以用我的手机向它发送命令。我用它来创建我需要在即将到来的薪水中购买/照顾的物品清单。当支票进来时,我会发送命令将每个项目从列表中标记出来。我还包括了查询列表的命令。这些命令看起来像“lc mar4”,用于在 3 月的预算清单中创建第四个薪水。创建列表后,我可以在不指定列表的情况下发送命令,如果没有指定列表,我让脚本只将命令应用于最后一个列表,然后处理其他参数。 "la court 50 p" 也会在 mar4 列表中添加一个名为 "court" 的项目,其值为 50 和一个标签 "p",我称之为待定。当我在那个星期五照看法庭时,我可以发送“lu court 50 d”,这将使用标签“d”更新具有相同值的法庭项目以表示完成。我有一个名为“lp”的命令,可以打印当前列表。 "lp d" 将打印当前列表中所有带有 "d" 标记的项目。 “lsum p”将打印当前列表中的所有待处理项目。
我制作了一个空的 rails 应用程序。制作了我的数据库架构和模型,但没有控制器。我在脚本中有一个脚本,其中包括一个 pop/ssl 库,我在某个地方找到了从我为此设置的 gmail 帐户下载电子邮件的地方。从那时起,这很容易,只需检查每条消息的新消息,确保它来自我的手机并解析消息并选择发回响应。 (我已经将该电子邮件地址编程到我的手机中,并向该电子邮件地址发送了文本命令)。我添加了一个 cron 作业并将其设置为每分钟运行一次。
我不知道该架构是什么,但它基本上是一种查询第三方并根据响应执行不同操作的服务。如果您使用短代码进行了真正的 SMS,我现在会让您知道,我认为需要进行大量投资才能真正做到这些。通过 sms 网关使用电子邮件文本消息开始开发可能更容易。
我并不是说这是迄今为止最好的方法,将消息“推送”给我而不是每分钟检查一次会更酷,但是嘿,我只是想平衡我的预算我的手机。