听起来是个好主意!这里有一些我认为会有所帮助的资源。
每当您有许多不同的服务直接与您的服务交互时,到目前为止,最简单(在我看来也是最理智的)实现这一点的方法是创建一个 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 通知,我会查看Twilio或Moonshado。一个免费的解决方案是使用运营商的电子邮件到 SMS 网关,但一般来说,传送能力是这些网关的一个问题。SMS-fu是一个很好的(但旧的)宝石,但你也可以在网上找到一个列表并自己做。
您还应该研究Chronic,这是一个很棒的日期和时间自然语言解析器(例如,它可以帮助您在“20 分钟内”进行解析)。
希望这可以帮助!