在 ASP.NET Core 7 和 Angular 14 中通过短信在用户定义的时间发送定期提醒

问题描述 投票:0回答:0

几天来我一直被一个问题困住,我想我对解决方案有了一些自己的想法,所以我认为获得另一种观点可能对我有帮助

我创建了一个 .NET Core 7 和 Angular 15 应用程序,用于在用户自己定义的时间段内通过文本向用户发送重复用药提醒。我能够利用 Twilio 消息传递 API 发送一条没有什么问题的文本消息,但是我遇到了一个逻辑障碍,我不确定如何在不同日期的同一用户指定时间发送多个重复出现的文本.

我知道 Hangfire 是我可以利用的另一种资源,但是我不确定是否可以在 Program.cs 中动态填充 Cron 作业时间参数以匹配用户输入的内容。我还调查了 Quartz 并遇到了类似的逻辑障碍。我认为最好的方法是获取时间戳以从数据库运行作业,并将其传递给作业调度程序(使用 Quartz 或 Hangfire),然后安排任务以这种方式发送文本消息.但是我不确定这是否适用于多个用户或具有多个提醒的用户......

这是我编写的使用 Twilio 的 API 发送短信的代码:

[HttpPost]
[Route("SendText")]
public async Task<IActionResult> SendSms([FromBody] SmsMessage sms)
{
    var message = MessageResource.Create(
    messagingServiceSid: "XXXXXXXXXXX",
    to: new PhoneNumber(sms.To),
    from: new PhoneNumber(sms.From),
    body: sms.Message,
    scheduleType: MessageResource.ScheduleTypeEnum.Fixed,
    statusCallback: new Uri("placeholder_uri.com"),
    sendAt: DateTime.UtcNow.AddMinutes(16),
    client: _client); // pass in the custom client
    return Ok("Success");
}

我尝试的一个解决方案是将回调 url 设置为与我用来发送文本消息的方法相同,但是它失败了,因为传入的 sms 对象在第二次被调用时为 null。我认为最好的解决方案是删除此回调,而是在 Hangfire Cron 作业期间运行此代码,并在可能的情况下从数据库本身获取消息,但我只是想看看是否有明显的东西我可能会丢失。 ..

如果有人有任何指示,将不胜感激,我想我可能想得太多了!

提前致谢!

c# asp.net-core twilio-api quartz.net hangfire
© www.soinside.com 2019 - 2024. All rights reserved.