Twilio API - 发送短信时请求过多

lha*_*han 5 c# sms azure twilio twilio-api

我知道这个问题已经被问过几次了,但我正在尝试找出我的确切问题可能是什么。

我有一个 C# 应用程序,它对要发送的消息进行排队(使用 Azure 存储队列),并且这些消息由 Azure Webjob 处理。我们使用twilio-csharp nuget 包来发送消息。

发送消息的代码非常简单:

MessageResource.Create(
   body: message.Message,
   from: new Twilio.Types.PhoneNumber(TwilioFromNumber),
   to: new Twilio.Types.PhoneNumber(message.SendToPhoneNumber));
Run Code Online (Sandbox Code Playgroud)

默认情况下,Webjob 一次最多处理 16 条消息,但为了解决这个问题,我们设置了:

context.BatchSize = 2;
context.NewBatchThreshold = 0;
Run Code Online (Sandbox Code Playgroud)

因此,在任何给定点,我们一次不会发出超过 2 个请求。

即使阈值如此低,我们仍然会定期在日志中看到这些错误:

Microsoft.Azure.WebJobs.Host.FunctionInvocableException:Microsoft.Azure.WebJobs.Host.FunctionInitationException:执行函数时出现异常:TextMessageFunctions.SendTextMessage ---> Twilio.Exceptions.ApiException: Twilio.Clients.TwilioRestClient.ProcessResponse 的请求过多(回应回应)

其他一些想法:

  1. Twilio 开发人员传播者对此问题的回答表明, REST API 的并发限制默认为 100。这仍然是真的吗?或者我可以通过我的帐户检查这一点吗?我们不可能接近 100 条。我们一次排队的消息从来不会超过 20-30 条,这已经是极端情况了。
  2. 我们使用美国免费电话号码从 发送根据 Twilio 的说法,我们应该能够在它们的一端排队 43,200 条消息。

同一篇文章说:

注意:只要请求未超出 Twilio 的 REST API 并发限制,您就可以快速向 Twilio 发送消息。

这让我觉得我做错了什么,因为“快速速率”肯定可以一次超过 2 个请求(而且我仍然想知道上面提到的 100 个速率)。我们真的不能通过 2 个并发请求调用 Twilio API 而不会出现此错误吗?

phi*_*ash 5

这里是 Twilio 开发者布道者。

最近并发限制发生了一些变化,这对您产生了影响。新帐户现在收到的POST请求并发限额要低得多,低至 1 个并发请求。这是为了打击最近增加的欺诈活动。

我确信您的活动不是欺诈性的,因此您应该执行以下操作:

  • 现在将批量大小减少到 1,以便您一次仅向 Twilio API 发出 1 个请求。
  • 添加代码以捕获错误,如果错误是 429 响应,则重新排队作业以便稍后发生(如果可能,使用指数回退)
  • 与Twilio 销售人员联系,与他们讨论您的用例并请求增加并发限制

我确信此限制不会成为我们所面临问题的长期解决方案,对于您遇到的问题,我深感抱歉。