【发布时间】:2019-12-07 01:19:51
【问题描述】:
我有一个包含大约 470 个号码的列表,其中包含我想向其发送 SMS 的不同消息。我目前使用 Firebase Cloud Functions 作为我的后端。一切似乎都在本地完美运行,无需向大约 5 个不同的测试号码发送重复的短信。
通过将下面的代码与 470 个号码一起使用,每个号码都会收到相同的短信 3-4 次。我不知道是不是 Firebase Cloud Functions 的问题。
这个概念是用 Twilio 发送一条短信,如果它是成功的。我使用 Firebase Firestore 将消息存储在数据库中。我正在尝试阻止 Twilio 向具有相同消息的相同号码发送重复的 SMS。
来自客户端的示例代码:
textMessages[
{phoneNumber: "1111111111", message: "Test message 1 ", campaign: "Test Campaign"},
{phoneNumber: "2222222222", message: "Test message 2", campaign: "Test Campaign"},
{phoneNumber: "3333333333", message: "Test message 3", campaign: "Test Campaign"}]
exports.bulkTextWeb = functions.https.onCall(async (data) => {
const records = data.textMessages;
for (let i = 0, j = records.length; i < j; i++) {
const { phoneNumber, message, campaign } = records[i];
var msgFrom = twilio_number;
var msgTo = phoneNumber;
var msgBody = message;
await client.messages.create({
to: '1' + phoneNumber,
from: twilio_number,
body: message
})
.then(async message => {
if (message.status === 'queued' || message.status === 'sent' || message.status === 'delivered') {
// Check if campaign already exist
let docRef = await db.collection('campaigns')
.where('campaigns', 'array-contains', campaign).get()
.then(snapshot => {
// If there no campaign, add it to Firestore.
if (snapshot.empty) {
addCampaign(campaign);
}
// Add new message to Firestore
addNewMessage(msgFrom, msgTo, msgBody, campaign);
})
}
})
if (i === (j - 1)) {
// Return back to the client when all messages are sent
return { messages: 'Sent' }
}
}
})
【问题讨论】:
-
您的问题包含很多您自己的代码......可能比帮助解决问题实际需要的代码多得多。您自己进行了哪些调试以显示问题可能出在哪里?
-
我想提供尽可能多的代码来帮助解决我的问题。我使用 console.logs 进行调试并在本地运行了几个测试并使用 Firebase 托管。这可能是 Twilio 和 Cloud Functions 之间的滞后问题。
-
Stackoverflow 之神喜欢用尽可能短的代码来说明问题。有太多次用户陷入困境,只是将他们所拥有的一切都倾倒在问题上,期望其他人会解决这个难题:-) ....可能有助于解决这个难题的事情是记录您将要制作的内容SMS 文本(但不要)并显示在代码中的位置。此外,一些数据设计图可能会有所帮助……您的逻辑的高级“设计”是什么,而不仅仅是代码。发布代码是可以的,只要它是相关的。
标签: node.js firebase google-cloud-functions twilio