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

如何用PHP开发系统主动外呼并捕获用户语音回复的IVR应用

实现方案及问题修正

核心问题梳理

  • 你当前外呼绑定的TwiML地址指向了内容为空的voice.xml,没有加载任何语音交互逻辑,用户接起电话后无交互触发点,自然无法捕获回复
  • 带<Gather>语音捕获逻辑的TwiML生成代码和外呼发起代码写在了同一个文件中,逻辑拆分错误
  • Gather参数存在语法错误,空键''=>'true'会导致TwiML生成异常,Twilio无法正常解析
  • 回调地址要确保是公网可访问的,Twilio才能正常推送识别结果

修正后代码示例

1. 外呼发起文件(call.php)

<?php
require_once 'vendor/autoload.php';
use Twilio\Rest\Client;

$sid = "你的Account SID";
$token = "你的Auth Token";
$twilio = new Client($sid, $token);

$call = $twilio->calls->create(
    "+1310XXXXXXX", // 被叫号码
    "+15676777774", // 你的Twilio号码
    [
        "method" => "GET",
        // 这里填你部署的IVR逻辑文件的公网地址
        "url" => "http://你的域名/ivr_logic.php"
    ]
);
echo "外呼已发起,呼叫SID:".$call->sid;

2. IVR交互逻辑文件(ivr_logic.php)

<?php
require_once 'vendor/autoload.php';
use Twilio\TwiML\VoiceResponse;

$response = new VoiceResponse();
// 修正参数错误,删除空键,补齐合理配置
$gather = $response->gather([
    'action' => 'http://你的域名/completed.php', // 直接写绝对回调地址避免路径错误
    'method' => 'GET',
    'input' => 'speech',
    'timeout' => 3,
    'endOnSilence' => 1, // 静默1秒就判定用户说完
    'speech_model' => 'phone'
]);
$gather->say('请说出你要反馈的内容');
// 用户超时没说话的兜底逻辑
$response->say('未检测到你的语音输入,呼叫即将结束');
$response->hangup();

// 输出TwiML时指定Content-Type为xml
header('Content-Type: application/xml');
echo $response;

3. 结果接收文件(completed.php)

<?php
// 语音识别结果在GET参数的SpeechResult字段里,呼叫SID在CallSid字段,可一起存储
$log = "呼叫ID:".$_GET['CallSid'].",识别结果:".$_GET['SpeechResult'].",完整参数:".$_SERVER['QUERY_STRING'].PHP_EOL;
file_put_contents('voice.txt', $log, FILE_APPEND); // 加FILE_APPEND避免每次覆盖之前的记录

// 接收完后要给Twilio返回合法的TwiML,否则会报错
require_once 'vendor/autoload.php';
use Twilio\TwiML\VoiceResponse;
$response = new VoiceResponse();
$response->say('你的反馈已收到,感谢使用,再见');
$response->hangup();
header('Content-Type: application/xml');
echo $response;

额外注意事项

  • 所有提供给Twilio访问的文件,都必须部署在公网可访问的服务器上,不能用本地localhost地址
  • 要确保你的Twilio账号已经开通语音识别相关权限,号码也配置了外呼权限
  • 可以先在Twilio控制台的TwiML调试工具里验证你的ivr_logic.php生成的TwiML是否合法,再测试外呼

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 18:18:03