为何使用Twilio Messaging Service与Twilio Functions时消息无法发送?
修复方案
核心错误原因
群发消息模块的异步处理逻辑存在问题:Array.prototype.forEach 不支持异步等待,外层添加的await不会等待所有client.messages.create请求执行完成,代码会直接调用callback返回结果。Twilio Functions 在收到回调后会立即回收执行资源,未完成的发消息请求会被直接中断,这就是本地测试正常、部署后无法发送消息的根本原因。
修复代码
将原有群发消息段落的代码替换为以下内容即可:
// Send message to each contact. const sendPromises = allItems.map(contact => { return client.messages .create({ body: `Hey ${contact.name}! ${message}`, messagingServiceSid: messaging_service, to: contact.key }) // 可选:添加错误捕获,避免单条发送失败中断整个群发 .catch(err => console.error(`发送给${contact.key}失败,错误信息:`, err)) }); await Promise.all(sendPromises); // End send message to each contact
额外排查建议
- 确认Twilio消息服务已经绑定了符合要求的发件人号码,支持向所有目标联系人的归属地区发送短信
- 确认Deta数据库返回的
contact.key字段是符合E.164格式的标准手机号(格式为+[国家码][手机号],比如中国手机号为+8613xxxxxxxxx) - 如果联系人数量超过100人,建议调整Twilio Functions的超时时间(最高可设为15秒),或将群发逻辑拆分为异步后台任务避免执行超时
内容的提问来源于stack exchange,提问作者Develop With Data
相关产品推荐
相关产品推荐

