我有一个大约470个号码的名单与不同的信息,我想发送短信。我目前正在使用Firebase函数作为我的后端。一切似乎完美地在本地工作,而没有发送重复的短信给大约5个不同的测试号码。
通过使用下面的470个数字的代码,每个号码得到相同的短信3-4次每个。我不知道问题是否与Firebase函数有关。
这个概念是用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' }
}
}
})发布于 2019-12-03 07:43:42
在我看来,问题中提供的代码数量是很好的,事实上,它让我记得不久前Node.js应用程序也遇到了同样的问题。
问题不在Twilio。
您通过Twilio 向发送一条消息,其中包含一个调用 of client.messages.create()。由于同一条消息被多次发送,很明显,client.messages.create()被多次调用,并且由于异步/等待而被多次调用。
我通过摆脱异步/等待并使用递归一个接一个地发送消息来解决这个问题。
您可以在我给出的答案中看到一些使用递归的代码。
这里的twillio multiple numbers whatsaap
https://stackoverflow.com/questions/59147613
复制相似问题