2016-12-25 6 views
2

Как набирать номера и распространять музыку для вызывающего абонента в ожидании успешной связи?Воспроизведение музыки во время ожидания ответа в TWIML <dial>

ниже код ждет музыку до конца, прежде чем делать <dial> (что логика)

<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
    <Play>http://com.twilio.music.ambient.s3.amazonaws.com/gurdonark_-_Plains.mp3</Play> 
    <Dial timeout="10" callerId="+1234567890"> 
     <Number url="whisper?id=1">+1122334455</Number> 
     <Number url="whisper?id=2">+1122334466</Number> 
     <Number url="whisper?id=3">+1122334477</Number> 
    </Dial> 
</Response> 

NB: Было бы неплохо НЕ использовать конференц-функциональные. Что-то с <Enqueue> может быть?

ответ

4

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

Вы можете сделать это с помощью <Enqueue>. Вот как это будет работать:

Вам потребуется заменить TwiML, который <Play>s, а затем <Dial>s. Это должно быть динамическим действием, так как вам нужно будет make the three simultaneous calls using the REST API вместо TwiML. TwiML, который вы вернете, поставит вашего первоначального вызывающего абонента в очередь, как вы предлагаете, и воспроизводите музыку. В PHP, который будет выглядеть немного как:

<?php 
// Get the PHP helper library from twilio.com/docs/php/install 
require_once '/path/to/vendor/autoload.php'; 
use Twilio\Rest\Client; 

// Your Account Sid and Auth Token from twilio.com/user/account 
$sid = "your_account_sid"; 
$token = "your_auth_token"; 
$client = new Client($sid, $token); 

$numbers = array('+1122334455', '+1122334466', '+1122334477'); 

foreach ($numbers as $number) { 
    $call = $client->calls->create(
     $number, $YOUR_CALLER_ID, 
     array("url" => "http://example.com/dial_queue") 
); 
} 

header("content-type: text/xml"); 
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; 
?> 
<Response> 
    <Enqueue waitUrl="http://com.twilio.music.ambient.s3.amazonaws.com/"> 
    dialling 
    </Enqueue> 
</Response> 

В URL http://example.com/dial_queue вам нужно будет вернуться TwiML, что набор номера вызываемого абонента в исходной вызывающей. У вас есть шепот URL в вашем исходном примере, который вы можете достичь, вставив его в TwiML.

<Response> 
    <Say>Your custom message</Say> 
    <Dial> 
    <Queue>dialling</Queue> 
    </Dial> 
</Response> 

Обратите внимание, что вы набираете имя <Queue>, который вы использовали в оригинальном <Enqueue>. Если эта система будет использоваться для нескольких абонентов, вам, вероятно, потребуется создать для них уникальные имена очередей.

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

Дайте мне знать, если это поможет вообще.

+0

Что такое '$ YOUR_CALLER_ID'? Это номер исходного вызывающего абонента (тот, который перенаправляется), или это номер пользователя Twilio? – kyle

+1

Это номер Twilio, или это может быть подтвержденное число в вашей учетной записи Twilio, с которой вы можете звонить. – philnash