Twilio API是否支持WhatsApp批量发消息?如何无循环批量发送
Twilio WhatsApp渠道批量消息发送解答
Twilio 标准消息发送接口不支持单次请求向多个WhatsApp收件人发送消息,接口要求单次请求的to参数仅可传入单个符合E.164格式的有效收件人号码,你当前通过遍历号码逐个调用接口的基础逻辑是符合接口规则的。
如果不想使用阻塞式的同步foreach循环(即等待上一条消息接口返回后再发送下一条,整体发送效率低),可以使用Twilio PHP SDK自带的批量并发能力提交所有发送任务,无需手动逐个同步等待响应,优化后的实现代码如下:
public function sendToMany(Request $request){ $number = getenv('TWILIO_NUMBER'); // Twilio 绑定的WhatsApp发送号码 $sid = getenv('TWILIO_ACCOUNT_SID'); $token = getenv('TWILIO_AUTH_TOKEN'); $twilio = new Client($sid, $token); $otp = $request->message; // 待发送的消息内容 $receiver = array("+xxxxxxxxxxxx", "+xxxxxxxxxxxx", "+xxxxxxxxxxxx"); // 收件人号码列表 $batch = $twilio->createBatch(); // 批量添加所有发送任务 foreach ($receiver as $receiver_number){ $batch->add($twilio->messages->createAsync( "whatsapp:".$receiver_number, array( "from" => "whatsapp:".$number, "body" => $otp ) )); } // 统一提交所有批量请求,并发执行,获取全部发送结果 $sendResults = $batch->submit(); }
注意事项
- 上述批量并发实现是通过SDK封装的请求合并能力降低同步等待耗时,本质上仍然为每个收件人生成独立的消息投递记录,完全符合Twilio和WhatsApp的平台规则
- 禁止在
to参数中传入数组、逗号分隔的多号码字符串,这类请求会直接触发参数校验错误 - 若消息发送量级较大,可搭配Twilio消息服务能力使用,自动处理发送限速、失败重试逻辑,降低业务代码的异常处理成本
内容的提问来源于stack exchange,提问作者elie.irani
相关产品推荐
相关产品推荐

