2016-12-25 35 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> 

注:這將是很好使用會議功能。可能與<Enqueue>有什麼關係?

回答

4

Twilio開發人員在這裏傳播。

你可以用<Enqueue>來做到這一點。以下是它的工作方式:

您需要替換<Play>s然後<Dial>s的TwiML。這將是一個動態的行動,因爲您需要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> 

http://example.com/dial_queue你就需要返回TwiML該用戶撥打被叫用戶到原始調用者的URL。您的原始示例中有一個低語網址,您可以通過將其內聯到TwiML中來實現。

您撥打您在原 <Enqueue>使用的 <Queue>
<Response> 
    <Say>Your custom message</Say> 
    <Dial> 
    <Queue>dialling</Queue> 
    </Dial> 
</Response> 

注意。如果該系統將用於多個調用者,那麼您可能需要爲他們生成唯一的隊列名稱。

最後要做的事情是在呼叫連接時取消另外兩個呼叫,如果沒有呼叫應答,取消隊列。我會把它留給你,因爲我確信有很多方法可以用你自己的設置來實現它。

讓我知道這是否有幫助。

+0

'$ YOUR_CALLER_ID'是什麼?它是原始呼叫者的號碼(被重定向的號碼),還是用戶的Twilio號碼? – kyle

+1

這是一個Twilio號碼,或者它可以是您的Twilio帳戶中可用於撥打電話的經過驗證的號碼。 – philnash