使用Twilio和FME Server自动拨打电话和发送短信
原文发布时间:2014-07-07 08:50:13
翻译:小新
原文地址:http://blog.safe.com/2014/05/automate-phone-calls-sms-twilio-fme-server/
通过诸如Twilio这样的应用服务,使得建立自动电话系统变得比任何时候都容易。Twilio建立了一个交互平台,将诸如发送和接收电话以及短信息这样的动作转换为简单的API方式,传统方式则需要投资重要的硬件设备。Twilio的一个用例为:当一组业务规则为真时,可以对一群人自动拨打电话。这也是这篇文章的重点。然而,我们真正想做的是智能的自动电话——接收到位置信息——只对在这个位置以内的用户发出通知。
无需编码的电话和消息
我要做的第一件事是创建一系列与Twilio有关的FME自定义转换器,使得你在FME Desktop中与Twilio的交互变得容易。
TwilioMakeCalls:创建自动电话。可以在运行时设置电话内容。
TwilioSendSMS:发送短消息。在运行时可以设置短信内容,包括文本和图片。
自动电话警报方案
这个方案与洪水有关。我们想通过河水的高度来模拟实时洪水信息,动态生成洪水平面图,然后选择在洪水平面图范围内的所有人,如果有不妙的情况,将自动给他们发送信息。我们希望不用编写任何服务器端代码就可以完成这个过程。
自动拨打电话和发送短消息的工作流
数据源
Flood data(洪水数据):USGS现在提供了整个美国实时的排水和高度信息。我们读取吉尔默(Gilmer)流域的数据。
Flood plain map(洪水平面图):该流域的点云的数据,点云包含Z值。
Users(用户):订阅了警报的用户数据库。你需要制作一个订阅工作流,让用户可以注册该服务。关于订阅工作流的具体细节见这里。
工作流程
第一步:处理源数据
通过FME Server的计划任务功能每隔1分钟读取一次USGS的数据。
第二步:动态选择订阅用户
通过点云数据,我们可以创建代表不同洪水危险区域的多边形。我创建了两个区域:危险区域和需要被警告的区域。通过洪水高度动态绘制这些多边形。例如,如果当前测量高度为10英寸,已经达到了洪水预警水平,我们创建如下的多边形:
危险区:包含在测量高度到该高度以上5英寸范围内的陆地面。
警报区:在测量高度5英寸到15英寸范围内的陆地面。
下面是我们用来实现这个复杂工作流的所有转换器,一共只有12个转换器!
第三步:通知用户
我们现在已经选择了在洪水危险区的订阅用户,然后需要给他们发送一个警告通知。我们通过Twilio网络服务实现该功能。在FME Store中有两个自定义转换器,TwilioMakeCall和TwilioSendSMS。使用数据库中的电话号码,我们自动给在危险区的人拨打电话,给在警报去的人发送短消息。
第四步:发布到FME Server自动运行
我们需要每分钟运行一次该工作空间来检测USGS最新的数据。为此,我们将工作空间发布到FME Server并为它制定每分钟运行的任务计划。FME Sever的故障转移和容错能力确保了工作空间能够一直运行。
这样就完成了一个工作流,可以读取实时数据并进行计算,然后通过Twilio发送通知,在整个过程中没有任何服务器端代码。这是一个典型示例,利用FME的空间特性,真的可以提高你的工作流的智能化。工作空间和更多信息可以在这里找到。你也可以在最近的一个视频培训中找到更多关于实时数据处理的信息,这个视频中还包含了洪水这个例子的演示。