我目前正在使用 Twilio-PHP 和 TwiML 实现来电功能。我请求呼叫者允许对通话进行录音,这很有效。但是,一旦我开始录制,
<Record>
元素之后就不会执行任何内容。在这一点上,我以某种方式认为这是预期的行为。有什么方法可以在录制时执行 <Redirect>
等操作吗?当呼叫未被记录时,重定向会起作用。
这是用户从录制权限返回时的 PHP 文件:
<?php
include_once('../../../includes/config.php');
require_once FULL_DIRECTORY.'vendor/autoload.php';
use Twilio\TwiML\VoiceResponse;
$language = 'de-DE';
$voiceSettings = ['voice' => 'woman', 'language' => $language];
$response = new VoiceResponse();
$callerResponse = trim(strtolower($_REQUEST["SpeechResult"]));
if(($callerResponse == "ja" || $callerResponse == "ya" || $callerResponse == "jo" || $callerResponse == "yes" || $callerResponse == "yea" || $callerResponse == "jaha") && $_REQUEST["Confidence"] > 0.8){
$response->say('Sie haben der Aufzeichnung zugestimmt.', $voiceSettings);
$response->record(['action' => '/webhook/twiml/push_recording.php', 'timeout' => 0]);
}else{
$response->say('Sie haben der Aufzeichnung nicht zugestimmt. Das Gespräch wird ohne Aufzeichnung fortgesetzt.', $voiceSettings);
}
$response->redirect('/webhook/twiml/ask_for_redirect.php', ['method' => 'POST']);
echo $response;
echo 之前的最后一行(最终重定向)仅在未记录呼叫时执行。
这里有什么解决办法吗?
查看 Twilio 通话录音控件。
如果有人还卡在这里,你可以关注 Twilio 的这篇文章: 录制来电 Twilio 语音通话
问题: 同时使用 Twiml 记录和重定向时出现问题。
解决方法: 您可以重定向呼叫,然后通过更新正在进行的呼叫资源来向呼叫添加录音。 确保在发出录音请求之前等待 twilio 处理呼叫重定向 twiml。否则它会抛出调用未进行的错误。
async function redirectCallTwiml() {
const twiml = new twilio.twiml.VoiceResponse()
twiml.redirect({
method: 'POST'
},
redirectUrl
)
createCallRecording();
return twiml.toString();
}
async function createCallRecording() {
// Add delay and/or retry here in case of failure
const recording = await client
.calls(callSid)
.recordings
.create();
console.log(recording.accountSid);
}