2016-12-25 1 views
2

Wie wähle ich Nummern und streame Musik auf den Anrufer, während ich auf eine erfolgreiche Verbindung wart?Musik wiedergeben, während auf eine Antwort in TWIML gewartet wird <dial>

Der folgende Code wartet die Musik, bevor Sie die <dial> zu beenden

<?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 (die Logik): Es wäre schön NICHT seine Konferenz-Funktionalitäten zu nutzen. Etwas mit <Enqueue> vielleicht?

Antwort

4

Twilio Entwickler Evangelist hier.

Sie könnten dies mit <Enqueue> tun. Hier ist, wie es funktionieren würde:

Sie müssten die TwiML ersetzen, die und dann <Dial>s. Dies müsste eine dynamische Aktion sein, wie Sie make the three simultaneous calls using the REST API anstelle von TwiML benötigen. Das TwiML, das Sie zurückgeben würden, würde Ihren ursprünglichen Anrufer in eine Warteschlange stellen, wenn Sie Musik vorschlagen und abspielen. In PHP, die ein bisschen aussehen würde:

<?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> 

Am URL http://example.com/dial_queue Sie benötigen würde TwiML zurückzukehren, die die Angerufenen in den ursprünglichen Anrufer wählt. In Ihrem ursprünglichen Beispiel haben Sie eine Whisper-URL, die Sie erreichen können, indem Sie diese in TwiML einbetten.

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

Beachten Sie, dass Sie den Namen des <Queue> wählen, die Sie in der ursprünglichen <Enqueue> verwendet. Wenn dieses System für mehr als einen Aufrufer verwendet wird, müssen Sie wahrscheinlich eindeutige Warteschlangennamen für sie generieren.

Die letzten Dinge zu tun wäre dann die anderen zwei Anrufe zu stornieren, sobald ein Anruf verbindet und die Warteschlange abzubrechen, wenn keiner der Anrufe beantwortet. Ich werde es dir überlassen, da ich sicher bin, dass es viele Möglichkeiten gibt, wie du es mit deinem eigenen Setup erreichen kannst.

Lassen Sie mich wissen, ob das überhaupt hilft.

+0

Was ist '$ YOUR_CALLER_ID'? Ist es die Nummer des ursprünglichen Anrufers (der umgeleitet wird) oder ist es die Twilio-Nummer des Benutzers? – kyle

+1

Dies ist eine Twilio-Nummer oder eine bestätigte Nummer in Ihrem Twilio-Konto, mit der Sie telefonieren können. – philnash

Verwandte Themen