2015-11-06 66 views
3

我正在嘗試創建一個呼叫方入隊的電話系統,理想情況下,系統會向代理髮出呼叫,然後代理將接聽並修改呼叫橋接隊列的頂部。Twilio - 將入隊呼叫連接到代理

到目前爲止,我所完成的工作是撥號循環,用戶呼入時按順序撥打座席,直到有人接聽,或者讓用戶選擇留言或留在線路上聽到它響。和一個簡單的入隊音樂。

我似乎無法弄清楚如何組合這兩個系統。

我發現的最接近的是this post,它很有幫助,但它掩蓋了一旦調用者入隊後如何調用。

不幸的是,我迄今爲止唯一發現的Twilio文檔告訴我如何撥入隊列,這不是我想要的這個系統。我希望這個系統能夠將一個呼叫者放入一個持有音樂的隊列中,然後系統撥打代理號碼,直到代理人接聽。

任何和所有的幫助,非常感謝。

謝謝。

編輯:

解決方案

的index.php

這是一般的IVR樹呼叫者最初命中。

<Say>This hits your general IVR tree</Say> 
<Say>As the last action, since the caller hasn't pressed anything and should be enqueued, redirect the caller to EnqueueCaller.php</Say> 
<Redirect>./EnqueueCaller.php</Redirect> 

由於PHP是一種預處理,有睡覺或超時通話的撥號沒有真正的方法。 IVR樹中的重定向是必要的,這樣當用戶仍在IVR樹中時,代理不會被撥打。

EnqueueCaller.php

這是一次IVR樹已經完成了來電被重定向和用戶選擇等待的代理。調用實際發生在Enqueue之前,因爲PHP在讀取TwiML xml之前首先加載(我認爲?)。但是由於調用時存在固有的延遲,因此調用者總是會在代理可以拿起之前排隊(我希望)。

<Enqueue waitUrl="wait_file.xml">name_of_queue</Enqueue> 
$call = $client->account->calls->create($from, $to, "http://example.com/DialQueueHandler.php", array("StatusCallback" => "DialQueueEventHandler.php"); 

DialQueueHandler.php

這簡單地橋接劑和whoevers在隊列的頂部。

<Say>Connecting to caller now.</Say> 
<Dial><Queue>name_of_queue</Queue></Dial> 

DialQueueEventHandler.php

此腳本容納了會發生什麼邏輯時從$ _REQUEST [ 'CallStatus']撥打的代理狀態變化(回答,完整,發起,振鈴)。就我而言,我從入隊腳本中撥出了一個代理,並且在這個腳本中,通過設置一個標記繼續撥打下一個代理。

switch($_REQUEST['CallStatus'] { 
    case 'answered': 
    case 'completed': 
     $next = false; 
     break; 
    default: 
     $next = true; 
     break; 
} 
if($next) { $call = $client->account->calls->create($from, $nextAgentNumber, "http://example.com/DialQueueHandler.php", array("StatusCallback" => "DialQueueEventHandler.php?agentOffset=$num"); } //same line from EnqueueCaller.php, and track where we are in agent array. 

如果該呼叫未被應答或完成,則撥打下一個座席。否則,當代理人接聽電話時,DialQueueHandler.php文件被擊中並且呼叫被橋接。

回答

0

傑夫,我是來自Twilio的梅根。

您可以利用<Enqueue>workflowSid屬性來配置任務,該任務使用TaskRouter向可用代理啓動呼叫流。 PHP中有一個TaskRouter quickstart,我想給你迄今爲止的地方,你可以拿起third part

讓我知道如果你覺得這是有幫助的。

+1

嗨梅根! 感謝您的鏈接和回覆。 在我大部分時間都把頭撞到牆上後,我簡單地使用了PHP API,並且將account-> calls-> create_after_response-> enqueue的功能完全按照我需要的那樣工作。它連接通話非常好。 這是可行的,因爲創建調用不像使用入隊那樣使用twiml,所以發生入隊,然後任何PHP都會像通常那樣發生。 我會在下週完成並清理應用程序時發佈後續行動。 乾杯,再次感謝。 –

+0

非常好,很高興聽到它!週末愉快。 –