Facebook messenger bot使用无服务器和AWS安排消息

时间:2017-06-12 11:06:10

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

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

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

你们能指出我朝着正确的方向前进吗?

3 个答案:

答案 0 :(得分:0)

据我所知,您的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函数。

答案 1 :(得分:0)

  • SNS消息不能延迟
  • SQS消息只能延迟大约15分钟,除非你弄乱了消息可见性(在这种情况下不推荐)

您最好的选择是公开CRUD功能,以便您的机器人可以管理用户在AWS中的日程安排。

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

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

答案 2 :(得分:0)

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