首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

简单的服务器端 2G 移动电话应用程序(1)

简单的服务器端 2G 移动电话应用程序(1)

目前,科技新闻中充斥着关于最新的 iPhone、Droid 和 Palm Pre™ 应用程序的消息,但是新闻媒介更加关注的是,简单的移动电话如何为世界各地的人们提供新的通信和创业机会,特别是在电力缺乏的地区。这次主要宣传的是,在许多有网络的地方,人们使用移动电话不仅仅是为了通话,SMS 文本消息让他们可以相互交换信息,帮相他们处理细小的事务。
常用缩写词
  • SMS:短消息服务
  • XML:可扩展标记语言

言归正传,您有多少朋友和家人没有一款具有彩色高分辨率触摸屏,能够浏览网站和安装各种专业软件的移动电话?他们使用的是 2G(第二代)移动电话。 当这类移动电话在 20 世纪 90 年代推出时,它们与第一代前辈产品是不同的,因为它们是数字化的,可以发送文本消息。对于比较节俭的人来说,2G 移动电话和按月付费方式还是容易承担的,对于全球大多数人来说,3G 移动电话并不在考虑范围内。去年苹果公司销售了 2500 万台 iPhone,这似乎很多,但 International Telecommunication Union 最近的一项评估表明,到 2010 年底,全球 68 亿人中有 50 亿人将使用移动电话,这说明在今后几年内,世界范围内 3G 移动电话的使用率相对较低。
2G 移动电话可以向电子邮件地址发送文本消息,编写脚本来根据电子邮件内容自动回复也不是什么难事,尤其是在您知道您的脚本将会响应不超过 160 个字符的消息时。将这些结合在一起,您将发现您可以编写对大多数 2G 电话所有者而言类似于可处理其请求的专业信息来源的应用程序。作为开发人员,如果您将这些移动电话看作将参数传递给所编写函数的小型终端,您将会发现,向简单、廉价移动电话的所有者提供信息服务非常容易。
作为例子,看一下这样一个服务,它接收包含一个 3 位数美国区号的文本消息并返回关于该区号的信息。要使用它,假设我移动电话上的 “Missed Calls” 列表显示一个区号为 “407” 的人试图呼叫我。如果我想知道该区号表示哪个地方,我使用 2G 移动电话发送一条 SMS 文本消息 “407” 到我的 Area Code            Information 服务,然后会返回以下信息:Florida (Orlando, Florida, St. Cloud and centraleastern Florida)。(在本文中,服务的电子邮件地址是 acinfo@snee.com,但在实际应用中(您可以亲自尝试),电子邮件地址为 “aci” 而不是 “acinfo”。)
该应用程序的基本步骤(都使用了简单的脚本)如下:
  •             检查所有收到的电子邮件,如果来自 acinfo@snee.com,将其发送给 Python 脚本 aci.py,它将执行余下的步骤。
  •             在一个区号信息列表中搜索收到的电子邮件正文中的文本。
  •             如果在列表中,将返回消息设置为所存储的相关信息(在上述例子中为 Florida (Orlando, Florida, St. Cloud and centraleastern Florida))。
  •             如果不在列表中,在返回消息中说明没有发现与收到消息相关的信息。
  •             将返回消息发送回发送原始邮件的地址,并记录下来。
我的应用程序搜索一个简单的文本文件来进行信息查询,但在您的应用程序中,只要您能够想象得到且您的脚本能够访问数据源,您能够实现很多操作。
检查收到的电子邮件,并发送给正确的处理程序:procmail自动回复所收到消息的关键在于一个称为 procmial 的著名 UNIX® 实用程序。许多扫描垃圾邮件和根据邮件头信息在特定文件夹中排序电子邮件的最早期系统都是在 procmail 基础上建立的,并且现在仍可使用它。如果您带有主机提供程序的帐户使用基于 Linux® 的系统,且提供了 shell 访问, 那么您可以为您的帐户创建一个 procmail 配置文件,扫描所收到邮件的模式并根据发现的结果执行操作。
对于通过此 .procmailrc 配置文件路由的邮件而言,还需要另外一个或两个步骤。在过去,您可以创建 .forward 文件来路由电子邮件,但是现在,您的主机提供程序通常会提供一个 Web          表单供您填写,以告诉它们的系统在邮件到达时检查 .procmailrc 文件。
在主机提供程序中配置帐户来执行此任务时,我通过以下三行向 .procmailrc 文件增加了一条规则:
1
2
3
:0
* ^To: <?acinfo@snee.com>?
| /usr/home/bobd/aci/aci.py




第一行指出这是一个 procmail 规则的开始。第二行以一个星号开始,表示您指定了一个条件,这一行余下的部分是一个正则表达式,指定要在邮件中从一行的开始处开始搜索的内容:“To: acinfo@snee.com”,邮件地址两边的尖括号是可选的。(这些尖括号可有可无,这是您在处理可能来自各种电子邮件客户和电话的电子邮件时必须考虑的不一致性的第一个例子。)我所创建的这个电子邮件地址仅用于区号信息请求,因此这个规则适用于向这个地址发送的所有邮件。
.procmailrc 规则的第三行可以命名应该转发此邮件的邮箱,但这条规则所做的事更加有趣。竖杠符号指定邮件内容应作为输入发送到某个指定的程序:一个名为 aci.py 的 Python 脚本。
返回列表