Как получать и отправлять голосовую почту с / на номер Twilio?

#twilio #twilio-php #twilio-twiml

#twilio #twilio-php #twilio-twiml

Вопрос:

Я создаю приложение на основе 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>
 

Я не получаю голосовую почту. Где я могу настроить recordingStatusCallback attribute в twiml?

Во-вторых, я пытаюсь отправить голосовую почту с номера 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'
        )
    );
 

Пожалуйста, объясните мне, что я делаю неправильно. За помощь заранее спасибо.

Ответ №1:

Евангелист-разработчик Twilio здесь.

Что касается вашего первого вопроса, если вы не укажете номер (или SIP-адрес, или идентификатор клиента) для попытки подключения, то <Dial> он перейдет прямо к action URL-адресу, не беспокоясь о timeout .

Если вы хотите <Dial> , чтобы приложение попыталось подключиться к телефону, вам следует добавить номер телефона.

Во-вторых, если вы хотите получать веб-хук после завершения записи, вам нужно добавить recordingStatusCallback атрибут с URL-адресом для отправки веб-хука на ваш <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>
 

Наконец, мы не поддерживаем окончательный вариант использования попытки набрать номер дважды, чтобы заблокировать его, а затем оставить голосовое сообщение. Совершение звонков с последующим их отбрасыванием противоречит условиям предоставления услуг (см. Пункт 19 в разделе «запрещенные услуги». Поэтому я рекомендую вам рассмотреть другой способ связаться с вашими клиентами или контактами, который взаимодействует с ними законным образом.

Комментарии:

1. что я получу в recording-complete.php URL-адресе аудиофайла?

2. Итак, по второму вопросу, мы не можем удалить голосовую почту, которую вы сказали? Просто чтобы подтвердить, что логика для удаления голосовой почты будет работать или нет? Я знаю, что это не соответствует закону для некоторых стран.

3. Параметры, которые вы получаете для обратного вызова статуса записи, перечислены здесь: twilio.com/docs/voice/api/recording#recordingstatuscallback .

4. Что касается вашего второго вопроса, вы можете оставить голосовую почту на телефоне пользователя, если он не отвечает, вы просто не можете совершать и отбрасывать звонки, чтобы попытаться перевести телефон прямо на голосовую почту. Не имеет значения, работает это или нет, это противоречит условиям Twilio.

5. большое спасибо, что поделились своими знаниями. Вы спасли мой день.