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

如何在单次Twilio通话中多次使用<Say>指令?

解决方案

你的代码触发超时的原因是:Twilio要求函数在短时间内完成并调用callback返回响应,但你用setInterval延迟了callback的调用,直到所有句子播放完毕才返回,这超出了Twilio的超时限制。

不需要通过API更新通话资源,也不用递归或重定向,直接在初始的Twiml中按顺序组合<Say>和<Wait>指令即可实现需求:

exports.handler = async function (context, event, callback) {
  try {
    const twiml = new Twilio.twiml.VoiceResponse();
    const sentences = ['Ahoy there', 'How are you today?', 'Nice to meet you', 'Hope you have a great day', 'Goodbye'];
    
    sentences.forEach((sentence, index) => {
      // 播放当前句子
      twiml.say(sentence);
      // 最后一句之后无需等待
      if (index !== sentences.length - 1) {
        twiml.wait({ length: 3 });
      }
    });

    callback(null, twiml);
  } catch (err) {
    console.error(err);
    callback(err);
  }
};

说明

这段代码一次性构建完整的Twiml响应:

  • 用twiml.say()添加每个要播放的句子
  • 除最后一句外,每句后添加3秒的等待指令twiml.wait()
  • Twilio会自动按顺序执行所有指令,完成播放和等待逻辑,无需后续API调用,从根本上避免超时问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:32:37