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

如何在Twilio Services中调用其他函数并完整执行所有TwiML逻辑?

Twilio Functions 合并多段语音响应的实现方案

问题根源

你当前的写法存在两个核心问题:

  • 当SecondFunction中调用callback(null, twiml)时,Twilio会直接返回该函数生成的响应,主函数后续代码(包括twiml.say)不会执行,因此只播放"Second function"。
  • 当注释掉callback时,SecondFunction生成的Twiml未被传递到主函数的响应中,主函数仅返回自身生成的Twiml,因此只播放"We made it back to the main function"。

解决方案

让SecondFunction返回生成的Twiml对象,在主函数中将两段Twiml合并后,统一调用callback返回完整响应。

修改后的SecondFunction代码

exports.InboundCalls = (context, event) => {
  let twiml = new Twilio.twiml.VoiceResponse();
  twiml.say(`Second function`);
  // 不再直接调用callback,返回Twiml对象供主函数使用
  return twiml;
}

修改后的主函数代码

exports.handler = function(context, event, callback) {
  let twiml = new Twilio.twiml.VoiceResponse();
  // 补充toNumber取值逻辑,通常从event中获取目标号码
  const toNumber = event.To;
  if(toNumber == "+11231231234") {
    const XPath = Runtime.getFunctions()['SecondFunction'].path;
    const X = require(XPath);
    // 获取SecondFunction生成的Twiml片段
    const secondTwiml = X.InboundCalls(context, event);
    // 将第二段Twiml内容合并到主响应中
    twiml.append(secondTwiml.toString());
    twiml.say(`We made it back to the main function`);  
  }
  // 统一返回合并后的完整语音响应
  callback(null, twiml);
}

原理说明

通过让子函数返回Twiml对象,主函数可将多个Twiml片段合并为一个完整的响应文档,Twilio会按顺序执行所有<Say>指令,从而连续播放两段语音内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:15:04