2015-11-06 7 views
3

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

То, что я достиг до сих пор, - это циферблат, в который пользователь звонит, и он набирает агенты последовательно, пока кто-то не заберет, или не предоставит пользователю возможность оставить сообщение или остаться на линии, пока слушая это кольцо. И простая регистрация с музыкой.

Я просто не могу понять, как объединить эти две системы.

Ближайший я нашел this post, и это полезно, но он замалчивает, как вызывать, как только вызывающий абонент находится в очереди.

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

Любая помощь очень ценится.

Спасибо.

Edit:

Решение

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

Это где Caller перенаправляется после того, как дерево 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']. В моем случае я набрал один агент из скрипта enqueue, и в этом скрипте либо продолжайте набирать следующих агентов, либо устанавливая флаг.

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

Jeff, я Меган из Twilio.

Вы можете использовать атрибут workflowSid<Enqueue> для настройки задачи, которая инициирует поток вызовов доступному агенту с использованием TaskRouter. В PHP есть TaskRouter quickstart, и я думаю, что, учитывая то, что вы до сих пор получили, вы можете забрать на third part.

Дайте мне знать, если найдёте это полезным.

+1

Hi Megan! Спасибо за ссылку и ответ. После того, как большую часть моего дня я ударил головой о стену, я понял, просто используя PHP API, и поместив account-> calls-> create _after_ response-> enqueue, работал точно так, как мне было нужно. Он подключил звонки отлично. Это работает, потому что вызов create не использует twiml, как это делает enqueue, поэтому происходит очередь, а затем любой PHP после этого происходит так, как обычно. После публикации и очистки приложения на следующей неделе я опубликую отчет. Приветствия и еще раз спасибо. –

+0

Отлично, рад это слышать! Хороших выходных. –

Смежные вопросы