如何接收和发送语音邮件 from/on Twilio 号码?

How to Receive and Send voicemail from/on Twilio number?

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

目前,我已经在控制台中针对 phone 号码设置了来电 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', "\n" .json_encode($_REQUEST) . "\n", 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

其次,我正在尝试通过拨打一个电话将语音邮件从 Twilio 号码发送到 phone 号码,然后再次拨打第二个电话,因为第二个电话将收到占线状态,我们可以发送语音邮件,但它不起作用。我的密码是

$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 (or a SIP address, or a Client identity) 来尝试连接,那么 <Dial> 将直接移动到 action URL,不用理会 timeout.

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

其次,如果您想在录制完成时收到一个 webhook,那么您需要添加 the recordingStatusCallback attribute,并使用 URL 将 webhook 发送到您的 <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 点。因此,我鼓励您考虑一种不同的方式来接触您的客户或以合法方式与他们互动的联系人。