首页 > 解决方案 > 如何在电话等待 Twiml 中的应答客户端时播放保持音乐

问题描述

我正在使用 Twilio Twiml 构建一个呼叫系统,其中用户呼叫我的 Twilio 号码并需要输入要参与的代码:

callip.php

<?php 
   echo header('content-type: text/xml');
   echo '<?xml version="1.0" encoding="UTF-8"?>';
?>
<Response>
 <Play>https://mywebsite.com/welcome.mp3</Play>
 <Gather numDigits="11" action="myfile.php">
    <Say voice="alice">Please enter your code</Say>
 </Gather>
</Response>

输入代码后,调用将转到 Twilio 客户端:

我的文件.php

<?php 
  echo header('content-type: text/xml');
  echo '<?xml version="1.0" encoding="UTF-8"?>';
  $code = $_POST['Digits'];
?>
<Response>
  <Dial timeout="20" record="record-from-answer" recordingStatusCallback="https://mywebsite.com/record.php" recordingStatusCallbackEvent="in-progress completed absent">
        <Client>
            <Identity>myuser</Identity>
            <Parameter name="code" value="<?php echo $code; ?>"/>
        </Client>
    </Dial>
</Response>

我希望用户在等待答案时听音乐,我尝试在myfile.php中添加一个 Enqueue 标签:

<Response>
<Enqueue waitUrl="https://mywebsite.com/hold_music.php">support</Enqueue>
...
</Response>

保持音乐.php

<?php 
 echo header('content-type: text/xml');
 echo '<?xml version="1.0" encoding="UTF-8"?>';
?>
<Response>
  <Play loop="0">https://mywebsite.com/hold_music.mp3</Play>
</Response>

但是我有点迷茫,正在播放等待音乐,但没有调用 Twilio 客户端。

我该如何解决?

我需要你的帮助。

标签: phptwiliotwilio-phptwilio-twiml

解决方案


将音乐保留添加到您的呼叫流需要媒体资源在被叫方应答时播放音乐。实现此目的的一种方法是在此处的 Twilio 控制台中启用代理会议,并将初始呼叫者添加到该会议作为 Gather 操作 URL 逻辑的一部分,然后使用该 ConferenceSID创建一个代理会议参与者,并将 Early Media 设置为 False。

请注意,您将无法使用原始 CallersID 进行拨号,除非该号码是经过验证的 CallerID(您也可以使用您帐户中的 Twilio 号码作为出站 CallerID)。此外,请确保考虑到被叫方不应答的情况,因此原始呼叫者不会留在会议上,永远听音乐。

艾伦


推荐阅读