0

所以我正在考虑构建一个小提醒应用程序。我希望它可以在各种媒体(irc、电子邮件、命令行、网络)上使用,并且正在考虑如何在不使用大量胶带的情况下设计这样的东西。

因此,例如“提醒我在 20 分钟内倒垃圾”将是用户可以提交的一件事。然后,这将在 20 分钟内提醒该人,如果可用则使用提交的媒体,否则使用默认媒体(例如电子邮件)。

所以,我不太确定什么是设计这个的好方法。显然,我觉得像 email 和 irc 之类的东西需要不同的逻辑并且需要单独实现,但我觉得否则我想充实一个坚实的核心,我可以通过各种方式扩展它。我只是不知道如何设计这样的东西或什么是好的模型。

我是一名 RoR 开发人员,将用 ruby​​ 构建它。

那么,解决这个问题的好方法是什么?推荐阅读......类似的问题......我正在尝试获得实现这一点的方向,但不知道在哪里看。这基本上是一个API,不是吗?(显然以前从未做过)

4

1 回答 1

1

听起来是个好主意!这里有一些我认为会有所帮助的资源。

每当您有许多不同的服务直接与您的服务交互时,到目前为止,最简单(在我看来也是最理智的)实现这一点的方法是创建一个 REST 服务。IRC、web、命令行——所有这些都可以与 RESTful 界面交互。

Rails 默认是 RESTful 的,所以只要使用标准的 Rails 约定,你就可以得到一个很好的标准 RESTful API。

此外,Github 上有许多用 Ruby 编写的库,它们使与 IRC 交互和创建命令行实用程序变得非常容易。

至于电子邮件,最简单的方法是使用服务(例如Mailgun)。使用 Mailgun,您可以创建可以接收邮件的电子邮件地址(例如remind_me@reminderapp.com)。Mailgun 完成所有繁重的工作来接收电子邮件并将其解析出来,并可以将其直接发送到应用程序中的 API 端点。有关更多信息,请参阅他们的文档。(需要注意的是,还有其他服务,例如Send Grid也提供入站邮件处理。我用过很多,我推荐 Mailgun。)

我还建议设置一个作业队列来处理提醒和出站通知的入站创建。Resque是迄今为止用 Ruby 编写的最好的库(尽管Sidekiq是我喜欢使用的一个有趣的新替代方案)。Resque 有几个插件,例如resque_mailer,可以非常轻松地发送电子邮件。您还可以使用resque_scheduler来安排将来发送的通知(例如,在您的示例中,在 20 分钟内)。

如果您也有兴趣发送 SMS 通知,我会查看TwilioMoonshado。一个免费的解决方案是使用运营商的电子邮件到 SMS 网关,但一般来说,传送能力是这些网关的一个问题。SMS-fu是一个很好的(但旧的)宝石,但你也可以在网上找到一个列表并自己做。

您还应该研究Chronic,这是一个很棒的日期和时间自然语言解析器(例如,它可以帮助您在“20 分钟内”进行解析)。

希望这可以帮助!

于 2012-06-10T19:22:44.493 回答