如何从/在 Twilio 号码上接收和发送语音邮件?

问题描述

我正在创建一个基于 Twilio 的应用程序,如果未接听电话,它将接收语音邮件

目前,我已经在控制台中针对电话号码设置了来电 URL。

<?PHP
    header('content-type: text/xml');
    echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";        
    error_reporting(E_ALL);
    ini_set('display_errors',1);
    file_put_contents('incoming_call.log',"\n" .json_encode($_REQUEST) . "\n",FILE_APPEND);
?>

<Response>
    <Dial timeout="15" action="/voicemail.PHP">          
    </Dial>
</Response>

而我的 voicemail.PHP 文件必须编码

<?PHP
// echo "hello ";exit;
    header('content-type: text/xml');
    echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";

    file_put_contents('incoming_voicemail.log',FILE_APPEND);
?>
<Response>
  <Say voice="alice">Your call Could not be answered at the moment. Please leave a voice message. 
  </Say>
  <Record></Record>
</Response>

我没有收到语音邮件。我在哪里可以在 twiml 中设置 recordingStatusCallback attribute

其次,我尝试通过拨打 One 电话和再次拨打 Second 电话将语音邮件从 Twilio 号码发送到电话号码,因为第二个电话将收到忙状态,我们能够发送语音邮件,但它不起作用。我的代码

$call = $twilio->account->calls->create(                
    $phone_no,// To
    $from_no,// From
    array(
        "method" => "GET","statusCallback" => SURL . "voicemail?to_phone_no=" . $phone_no,"statusCallbackEvent" => ["initiated","ringing"],"statusCallbackMethod" => "POST","twiml" => '<Response><Say>Testing voicemail</Say></Response>'
      )
    );
    sleep(3);
    $call2 = $twilio->account->calls->create(
        $phone_no,// To
        $from_no,// From
        array(
            "url" => AURL.'Vm/audio_file'
        )
    );

请指导我我做错了什么。如需帮助,请提前致谢。

解决方法

这里是 Twilio 开发者布道者。

对于您的第一个问题,如果您不包含要尝试连接的 number(或 SIP addressClient identity),则 <Dial>将直接移至 action 网址,而无需理会 timeout

如果您希望 <Dial> 尝试连接到手机,那么您应该添加一个电话号码。

其次,如果您想在录制完成后接收网络钩子,那么您需要将带有发送网络钩子的 URL 的 the recordingStatusCallback attribute 添加到您的 <Record>,例如:>

<Response>
  <Say voice="alice">Your call could not be answered at the moment. Please leave a voice message. 
  </Say>
  <Record recordingStatusCallback="/recording-complete.php"></Record>
</Response>

最后,我们不支持尝试拨打一个号码两次以阻止它然后留下语音邮件的最终用例。 Making calls and then dropping them is against the terms of service(请参阅“禁止的服务”下的第 19 点。因此,我鼓励您考虑采用不同的方式来联系您的客户或以合法方式与他们互动的联系人。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...