在 NodeJS Express 应用程序中,我尝试使用 Twilio 的 API 为每个用户帐户应用速率限制器。
Bucket = {
sid: 'BLSID',
rateLimitSid: 'RKSID',
serviceSid: 'VASID',
accountSid: 'ACSID',
max: 1,
interval: 30,
dateCreated: 2024-01-04T08:01:59.000Z,
dateUpdated: 2024-01-04T08:01:59.000Z,
url: 'https://verify.twilio.com/v2/Services/...'
}
我已经为其创建了速率限制和存储桶,但是当我尝试发送验证时
export const sendPhoneVerificationCode = async (phone, dialCode, userId) => {
const CZECH_DIAL_CODE = '+420';
const sendVerificationCode = await client.verify.v2
.services(constants.VERIFY_SERVICE_SID)
.verifications.create({
to: `${dialCode}${phone}`,
channel: 'sms',
locale: dialCode === CZECH_DIAL_CODE ? 'cs' : 'en',
rateLimits: {
uniqueName: userId,
},
});
return sendVerificationCode;
};
它返回一个
e:Invalid 'RateLimits' param. There is not RateLimit with UniqueName: uniqueName
错误。
显然 rateLimits
参数值有问题,但我不知道它是什么。
是否可以限制每个用户 ID 的通话间隔?
刚刚发现
uniqueName
应该是创建速率限制器时赋予 uniqueName
属性的值(在我的例子中是 uniqueName: 'endUserId'
)。
所以解决方法是像这样发送 rateLimits
:
rateLimits: {
endUserId: userId,
}
将为每个单独的用户 ID 检查此限制。