Как воспроизвести музыку удержания, когда телефонный звонок ожидает ответа клиента в Twiml

Я создаю систему вызовов с Twilio Twiml, где пользователь звонит на мой номер Twilio и должен ввести код для посещения:

callsip.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>

Я хочу, чтобы пользователь слушал музыку в ожидании ответа, я попытался добавить тег Enqueue в myfile.php:

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

hold_music.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 не вызываются.

Как я могу это исправить?

Мне нужна твоя помощь.


person NekoLopez    schedule 07.02.2020    source источник
comment
любой вывод error_log?   -  person delboy1978uk    schedule 07.02.2020
comment
@delboy1978uk ошибок нет   -  person NekoLopez    schedule 07.02.2020
comment
тогда вы можете связать документы API?   -  person delboy1978uk    schedule 07.02.2020
comment
Я считаю, что это дубликат stackoverflow.com/questions/41321365/   -  person Jeff Vdovjak    schedule 19.02.2020
comment
Отвечает ли это на ваш вопрос? Воспроизведение музыки во время ожидания ответа в TWIML ‹dial›   -  person Jeff Vdovjak    schedule 19.02.2020


Ответы (2)


Для добавления музыки при удержании в поток вызовов требуется медиаресурс для воспроизведения музыки во время ответа вызываемого абонента. Один из способов добиться этого — включить Конференцию агентов в консоли Twilio здесь, и добавьте первоначальный вызывающий абонент в эту конференцию как часть логики URL-адреса действия «Сбор», затем Создать участника конференции агентов, используя этот идентификатор ConferenceSID с параметром Early Media, равным False.

Обратите внимание, что вы не сможете набирать номер, используя исходный CallersID, если этот номер не является проверенным. CallerID (вы также можете использовать номер Twilio в своей учетной записи в качестве исходящего CallerID). Кроме того, обязательно учитывайте случаи, когда вызываемый абонент не отвечает, чтобы первоначальный абонент не остался в конференции, вечно слушая музыку.

Алан

person Alan    schedule 08.02.2020
comment
Спасибо за ответ, а есть ли другой вариант без создания конференции? - person NekoLopez; 17.02.2020
comment
Нет, вам нужен какой-то способ перевести первый этап в какое-то состояние, в котором вы можете включить музыку на удержании, и использование конференции — идеальный способ справиться с этим. Альтернативной возможностью было бы поставить вызов в очередь, а затем набрать уникальную очередь (после ответа вызываемой стороны). Вам нужно будет использовать ресурс вызовов REST API, чтобы позвонить другой стороне, и выполнить TwiML, чтобы позвонить в очередь. - person Alan; 17.02.2020
comment
Я считаю, что это возможно, сделав несколько вызовов REST. Решение можно найти здесь: stackoverflow.com/questions/41321365/ - person Jeff Vdovjak; 19.02.2020

На Hold_music.php вы можете создать вызов, например https://www.twilio.com/docs/voice/make-calls

$call = $twilio->calls
               ->create("+14155551212", // to
                        "+15017122661", // from
                        ["url" => "http://demo.twilio.com/docs/voice.xml"]
               );

print($call->sid);

А затем по URL-адресу ответа вы можете присоединиться к обоим вызовам. означает

<Response>
   <Dial>
     <Queue url="about_to_connect.xml">support</Queue>
   </Dial>
</Response>

это работа для меня

person Balvant parmar    schedule 11.03.2020