我计划创建一个Facebook messenger bot,它根据用户输入时间发送预定的消息。例如:如果用户选择上午6点,那么我需要每天在这个时间向他发送一些消息。
现在我已经在无服务器的帮助下创建了一个基本的信使机器人。我被这个预定的消息部分困住了。我的问题是:我需要照顾的基本事项是什么?我是否需要像AWS SQS和CloudFront事件调度程序那样的排队系统?我没有这些服务的经验。但我非常想留在AWS的土地上。
你们能指出我朝着正确的方向前进吗?
答案 0 :(得分:0)
据我所知,您的Facebook机器人会收到用户输入(早上6点),并且需要请求后端(Lambda函数)来安排此时的某些操作。凌晨6点,将触发另一个Lambda函数来执行该用户的任务。
我看到您已使用无服务器框架标记了此问题。它支持调度Lambda函数(docs),如下例所示:
functions:
doSomething:
handler: doSomething
events:
- schedule: cron(0 6 * * ? *) # Set to trigger at 6 AM
但目前您无法以编程方式调用无服务器框架。您可以按照here和here进行讨论。
在这种情况下,我猜您需要使用AWS SDK来配置和安排Lambda函数。
答案 1 :(得分:0)
您最好的选择是公开CRUD功能,以便您的机器人可以管理用户在AWS中的日程安排。
这些函数将在DynamoDB中存储计划记录或您选择的任何持久性策略。
然后,在cron调度上有一个单独的函数,它定期扫描调度记录并将消息生成到任何其他函数发送消息。
答案 2 :(得分:0)
您考虑过CloudWatch scheduled events了吗?它们可以通过编程方式创建,并且可以具有cron表达式。您可以将它们配置为触发lambdas或发布到流。看来这可能正是您所需要的。请务必先检查CloudWatch limits。