【问题标题】:Facebook messenger bot scheduled messages using Serverless and AWSFacebook messenger bot 使用无服务器和 AWS 安排消息
【发布时间】:2017-11-13 20:07:57
【问题描述】:

我计划创建一个 Facebook Messenger 机器人,它根据用户输入时间发送预定消息。例如:如果用户选择早上 6 点,那么我需要每天在这个时间给他发送一些消息。

现在我在无服务器的帮助下创建了一个基本的 Messenger 机器人。我被这个预定的消息部分困住了。我的问题是:我需要注意哪些基本事项?我是否需要像 AWS SQS 和 CloudFront 事件调度程序这样的排队系统?我之前没有这些服务的经验。但我非常想留在 AWS 的土地上。

你们能给我指出正确的方向吗?

【问题讨论】:

    标签: amazon-web-services aws-lambda message-queue serverless-framework facebook-messenger-bot


    【解决方案1】:

    据我了解,您的 Facebook 机器人将接收用户输入(早上 6 点),它需要请求后端(一个 Lambda 函数)来安排这个时间的一些操作。早上 6 点,将触发另一个 Lambda 函数来为该用户执行任务。

    我看到您使用无服务器框架标记了这个问题。它确实支持调度 Lambda 函数 (docs),如下例所示:

    functions:
      doSomething:
        handler: doSomething
        events:
          - schedule: cron(0 6 * * ? *) # Set to trigger at 6 AM
    

    但目前您无法以编程方式调用无服务器框架。可以关注herehere的讨论。

    在这种情况下,我猜您需要使用 AWS SDK 来配置和调度 Lambda 函数。

    【讨论】:

      【解决方案2】:
      • SNS 消息不能延迟
      • SQS 消息只能延迟约 15 分钟,除非您搞乱消息可见性(在这种情况下不推荐)

      最好的办法是公开 CRUD 函数,以便您的机器人可以在 AWS 中管理用户的日程安排。

      这些函数会将计划记录存储在 DynamoDB 或您选择的任何持久性策略中。

      然后,在 cron 计划上有一个单独的函数,它定期扫描计划记录并将消息生成到发送消息的任何其他函数。

      【讨论】:

        【解决方案3】:

        你考虑过CloudWatch scheduled events吗?它们可以通过编程方式创建,并且可以具有 cron 表达式。您可以将它们配置为触发 lambda 或发布到流。看来这可能正是您所需要的。不过请务必查看 CloudWatch limits

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-01-21
          • 1970-01-01
          • 2016-10-20
          • 2018-05-25
          • 2016-10-11
          • 2018-06-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多