Twilio API / TwiML:记录后重定向不起作用

问题描述 投票:0回答:2

我目前正在使用 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 之前的最后一行(最终重定向)仅在未记录呼叫时执行。

这里有什么解决办法吗?

php twilio twilio-php twilio-twiml
2个回答
0
投票

查看 Twilio 通话录音控件。

Twilio 通话录音控件现已全面可用


0
投票

如果有人还卡在这里,你可以关注 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);
}

© www.soinside.com 2019 - 2024. All rights reserved.