2013-07-10 221 views
4

我沒有從Twilio文檔找到明確的答案。我正在嘗試構建一個電話系統,可以在通話時和通過電話暫停對方。例如:有兩名特工在現場陪我一起工作。我接到手機上的電話(遠離計算機),發現其他座席需要與正在通話的人通話。我希望能夠將某些東西壓入電話中,直接將其他人轉移到座席,或將他們放入隊列中。然後,我可以打電話給其他代理人,他可以從隊列中檢索這個人。所有這些都需要從我們的手機中發生。Twilio呼叫轉移來電

我發現了一些這方面的文檔,但它似乎都需要我在一臺計算機,這是不可能的。

這是甚至可能與Twilio?

回答

5

Twilio福音傳教士在這裏。

這聽起來像它可能是use some <Conference>s的好地方。

讓我們來定義場景中的參與者:Agent1,Agent2,Field。

可以說現場調用Agent1。您可以將<Dial>字段直接連接到<Conference>(我們稱之爲ConferenceA),然後使用REST API啓動對Agent1的出站呼叫,而不是直接與<Dial>連接。當他們回答<Dial>他們到相同的<Conference>。系統需要獲取Agent1和Field的CallSid以及<Conference>的Sid,並將它們保留在稍後使用的某種類型的存儲中。

在這種情況下使用<Conference>可讓您更靈活地操縱呼叫的每一個獨立於其他呼叫的路徑,而不是使用<Dial>連接Field和Agent1。

所以現在Agent2調用Field。 Agent2會經歷相同的過程,恰恰相反。 Agent2將被撥入<Conference>(讓我們稱它爲ConferenceB),你的系統將使用REST API調用Field。當Field應答時,他們將<Dial>編入與Agent2相同的會議中。同樣,系統需要獲取Agent2和Field的CallSid以及<Conference>的Sid,然後將它們保留在稍後使用的某種類型的存儲中。

現在,Field需要一種方法來告訴系統將Agent2與Agent1連接起來。要做到這一點,您可以在Twiio中使用TwiML中的<Dial>的hangupOnStar屬性,當您將Field撥入ConferenceB時。該<Dial>動詞看起來是這樣的:

<Dial hangupOnStar="true" action="[process_hangup_url]"> 
    <Conference>ConferenceB</Conference> 
</Dial> 

hangupOnStar告訴Twilio,斷開誰,他們<Dial> ED(會議),但仍使在<Dial>動詞動作屬性定義的URL請求調用者(現場) 。這很重要,因爲當Field需要告訴系統使用Agent1將Agent2重定向到ConferenceA時,並且對s action屬性中的URL的請求使系統有機會提示Field以查看他是否想要執行此操作。所以,你可能有Twilio執行一些TwiML這樣的:

<Response> 
    <Gather action=[gather_handler]> 
     <Say>Press 1 to connect this caller to another<Say> 
    </Gather> 
</Response> 

如果現場按下一個,系統(誰知道所有的CallSids所有這裏涉及各方的,以及會議SIDS),可以使用REST API將Agent2從ConferenceB重定向到ConferenceA。

它使一個系統更復雜一點,但它應該爲你工作。

希望幫助

0
Redirect an incoming call to new url:  

<?php 
// Get the PHP helper library from twilio.com/docs/php/install 
require_once '/path/to/vendor/autoload.php'; // Loads the library 
use Twilio\Rest\Client; 
// Your Account Sid and Auth Token from twilio.com/user/account 
$sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
$token = "your_auth_token"; 
$client = new Client($sid, $token); 
// Get an object from its sid. If you do not have a sid, 
$call = $client 
    ->calls("CAe1644a7eed5088b159577c5802d8be38") 
    ->update(
     array(
      "url" => "your_url/test.xml", 
      "method" => "POST" 
     ) 
    ); 

echo $call->to; 

XML Code: 
--------- 
<Response> 
    <Redirect method="POST">url goes here</Redirect> 
</Response> 
+0

你能解釋一下爲什麼這個代碼工作,以幫助未來的讀者? – WhatsThePoint