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