使用自有托管转发Twilio录音至邮箱问题求助
解决Twilio Studio语音留言无录音链接的问题
1. 修正Studio HTTP请求的参数传递
Twilio Studio的「Record Voicemail」组件不会自动把录音URL等参数传给你的脚本,需要手动配置:
- 打开Studio流程里的HTTP请求组件,切换到Parameters标签页
- 添加两组键值对:
- 键:
RecordingUrl,值:{{widgets.你的录音组件名称.RecordingUrl}}(替换成你实际的录音组件名称,比如组件叫record_voicemail就写{{widgets.record_voicemail.RecordingUrl}}) - 键:
From,值:{{trigger.call.From}}
- 键:
2. 修复PHP脚本的参数获取与格式问题
你的脚本存在两个核心问题:未校验参数、录音URL缺少播放后缀,修改后的代码如下:
<?php header('Content-type: text/xml'); echo '<?xml version="1.0" encoding="UTF-8"?>'; echo '<Response></Response>'; // 兼容参数不存在的情况,避免空值 $from = $_POST['From'] ?? '未知号码'; // Twilio的录音URL需要加.mp3后缀才能直接播放 $recordingUrl = ($_POST['RecordingUrl'] ?? '') . '.mp3'; $to = "your-email@example.com"; // 替换为你的接收邮箱 $subject = "来自{$from}的语音留言"; $message = "点击链接收听留言:{$recordingUrl}"; $headers = "From: webmaster@example.com"; // 替换为合法的发件邮箱 mail($to, $subject, $message, $headers); ?>
3. 验证脚本是否收到参数
在脚本中添加日志代码,确认Twilio是否正确传递了参数:
// 放在mail函数前,记录POST参数到日志文件 file_put_contents('twilio_recording_log.txt', print_r($_POST, true) . "\n\n", FILE_APPEND);
执行后查看服务器上的twilio_recording_log.txt,确认是否存在RecordingUrl和From字段。
4. 排查Twilio请求状态
登录Twilio控制台,进入Monitor → Events,找到对应HTTP请求记录:
- 查看请求的参数列表,确认Twilio是否发送了
RecordingUrl - 检查响应状态码,若为404说明脚本路径错误,500说明脚本存在语法错误
5. 邮件发送可靠性优化
部分服务器默认mail()函数可能无法正常发送邮件,建议替换为PHPMailer等专业邮件库,同时确保发件邮箱符合服务器的SMTP配置规则,避免邮件被拦截。
内容的提问来源于stack exchange,提问作者Yarseo
相关产品推荐
相关产品推荐

