【问题标题】:How to Receive and Send voicemail from/on Twilio number?如何从 Twilio 号码接收和发送语音邮件?
【发布时间】:2021-01-14 07:11:50
【问题描述】:

我正在创建一个基于 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', "\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 号码发送到电话号码,然后再次拨打第二个电话,因为第二个电话将收到忙状态,我们能够发送语音邮件,但它不起作用。我的代码是

$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 twilio-php twilio-twiml


    【解决方案1】:

    这里是 Twilio 开发者宣传员。

    对于您的第一个问题,如果您不包含要尝试连接的 number(或 SIP address,或 Client identity),那么 &lt;Dial&gt; 将直接转到 @987654328 @ URL,不用理会timeout

    如果您希望&lt;Dial&gt; 尝试连接到手机,则应添加电话号码。

    其次,如果您想在录制完成后收到一个 webhook,那么您需要在您的&lt;Record&gt; 中添加the recordingStatusCallback attribute,以及将 webhook 发送到的 URL,例如:

    <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 点。因此,我鼓励您考虑以不同的方式联系您的客户或以合法方式与他们互动的联系人。

    【讨论】:

    • 我将在recording-complete.php 音频文件 URL 中收到什么?
    • 那么,对于第二个问题,我们不能放弃您所说的语音信箱吗?只是为了确认语音邮件丢弃的逻辑是否有效?我知道这不符合某些国家/地区的法律。
    • 这里列出了您收到的录制状态回调参数:twilio.com/docs/voice/api/recording#recordingstatuscallback
    • 对于第二个问题,如果用户不接听,您可以将语音邮件留在用户的手机上,您只是无法拨打和挂断电话,以便尝试让电话直接转到语音邮件。不管它是否有效,它都违反了 Twilio 条款。
    • 非常感谢您分享您的知识。你拯救了我的一天。
    猜你喜欢
    • 2022-01-20
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    相关资源
    最近更新 更多