You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Twilio API发送WhatsApp消息乱序问题求助

Twilio WhatsApp消息乱序问题解决方案

你当前的代码在循环中直接发起所有client.messages.create()请求,这些请求是异步并行执行的——Twilio服务器处理请求的顺序不固定,自然会导致消息送达顺序随机。单纯加setTimeout()如果没控制好串行逻辑,比如直接在循环里套定时器,因为循环执行速度极快,所有定时器会几乎同时触发,还是并行请求,所以解决不了问题。

可靠解决方案:用async/await串行执行请求

将发送逻辑封装成异步函数,通过await确保前一条消息发送完成后,再发起下一条请求,从根源上保证Twilio按顺序处理消息:

async function sendMessagesInOrder() {
  for (const listItem of listItems) {
    const item = $(listItem).text();
    // 等待当前消息的API请求完成,再执行下一次循环
    await client.messages.create({
      body: item,
      to: 'whatsapp:<你的接收号码>', 
      from: 'whatsapp:<你的Twilio号码>', 
    });
  }
}

// 调用发送函数,同时捕获可能的错误
sendMessagesInOrder().catch(error => {
  console.error('消息发送失败:', error);
});

备选方案:基于延迟的串行触发(可靠性稍弱)

如果不想用async/await,可以通过递增的延迟时间,让每个请求依次发起,但这种方式依赖固定延迟,网络波动时仍可能出现乱序:

for (let i = 0; i < listItems.length; i++) {
  setTimeout(() => {
    const item = $(listItems[i]).text();
    client.messages.create({
      body: item,
      to: 'whatsapp:<你的接收号码>', 
      from: 'whatsapp:<你的Twilio号码>', 
    });
  }, i * 1500); // 每条消息间隔1.5秒,可根据实际情况调整
}

内容的提问来源于stack exchange,提问作者fresheng11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 05:20:27