
本文详解如何通过 Twilio PHP SDK 发起外呼,并在接通后自动将呼叫转接到另一真实电话号码,实现真正的“语音对语音”连接,而非仅播放语音提示。核心在于正确使用 TwiML 的 <Dial> 动词替代 <Say>。
本文详解如何通过 twilio php sdk 发起外呼,并在接通后自动将呼叫转接到另一真实电话号码,实现真正的“语音对语音”连接,而非仅播放语音提示。核心在于正确使用 twiml 的 `
要实现 Twilio 外呼并完成主叫(Twilio 号码)→ 被叫(你指定的外部号码)→ 实时双向语音通话,关键不在于初始 calls->create() 的调用方式(你的代码本身已正确),而在于回调 URL(即 gomi.xml)返回的 TwiML 内容——它决定了通话接通后的行为。
你当前的 gomi.xml 仅使用 <Say> 播放欢迎语,这属于单向语音通知。要升级为双向通话,需改用 <Dial> 动词,它会主动发起第二通呼叫,并桥接双方线路。
✅ 正确做法:更新 gomi.xml 为以下内容(支持国际号码,推荐显式指定 callerId):
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial callerId="+81yyyyyyyyyy" record="false" timeout="30">
<Number>+81xxxxxxxxxx</Number>
</Dial>
</Response>⚠️ 注意事项:
立即学习“PHP免费学习笔记(深入)”;
- callerId 必须是你在 Twilio 控制台已验证或购买的号码(即你代码中传入的 +81yyyyyyyyyy),否则 Twilio 将拒绝转接;
- <Number> 中填写目标被叫号码(如 +81xxxxxxxxxx),务必使用 E.164 格式(含国家代码,无空格/横线);
- timeout 控制拨号超时时间(秒),避免长时间等待无人接听;
- record="false" 可按需设为 "true" 开启通话录音(需确保账户已启用录音功能);
- 确保 Web 服务器能被 Twilio 公网访问(开发时推荐使用 ngrok 暴露本地 http://development.example.com/gomi.xml)。
? 进阶示例:若需在接通前播放提示音(如“正在为您连接…”),可组合使用 <Say> 和 <Dial>:
<Response>
<Say voice="alice">正在为您连接,请稍候。</Say>
<Dial callerId="+81yyyyyyyyyy">
<Number>+81xxxxxxxxxx</Number>
</Dial>
</Response>? 总结:Twilio 的“语音对语音”本质是两段独立呼叫的智能桥接——第一段由你触发(calls->create),第二段由 TwiML 中的 <Dial> 自动触发。掌握 <Dial> 及其子元素(如 <Conference>、<Sip>)即可构建呼叫中心、IVR、三方通话等复杂语音场景。务必以 Twilio 官方文档 TwiML Dial 为权威参考。



















