Twilio-将排队呼叫连接到座席

Jef*_*lly 5 twilio twilio-php

我正在尝试创建一个电话系统,以使呼叫者入队,理想情况下,系统将呼叫一个座席,座席然后接听并修改呼叫以桥接队列顶部。

到目前为止,我已经完成的工作是拨号循环,在该循环中,用户进行呼叫,并按顺序拨打座席,直到有人接听,或让用户选择在听到铃声时留下消息或留在线路上。和简单的入队音乐。

我似乎无法弄清楚如何结合这两个系统。

我发现的最接近的帖子这篇文章,它很有帮助,但是它掩盖了呼叫者入队后如何进行呼叫的方法。

不幸的是,到目前为止,我发现的唯一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>
Run Code Online (Sandbox Code Playgroud)

由于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" );
Run Code Online (Sandbox Code Playgroud)

DialQueueHandler.php

这仅是座席和队列顶部的任何人之间的桥梁。

<Say>Connecting to caller now.</Say>
<Dial><Queue>name_of_queue</Queue></Dial>
Run Code Online (Sandbox Code Playgroud)

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.
Run Code Online (Sandbox Code Playgroud)

如果未接听电话或未完成呼叫,请拨打下一个座席。否则,当座席接听电话时,DialQueueHandler.php文件将被命中并且该呼叫将桥接。

Meg*_*eir 0

杰夫,我是来自 Twilio 的梅根。

您可以利用workflowSid的属性<Enqueue>来配置一个任务,该任务使用 TaskRouter 启动到可用代理的呼叫流。PHP 中有一个 TaskRouter快速入门,我认为鉴于您到目前为止所取得的进展,您可以学习第三部分

如果您觉得这有帮助,请告诉我。

  • 嗨梅根!感谢您的链接和回复。在我一天的大部分时间里都在用头撞墙之后,我发现只需使用 PHP API,并将帐户-&gt;调用-&gt;在响应之后创建-&gt;排队就可以完全按照我需要的方式工作。通话连接得很好。这是可行的,因为 create 调用不像 enqueue 那样使用 twiml,因此会发生 enqueue,然后之后的任何 PHP 都会像平常一样发生。下周完成并清理应用程序后,我将发布后续内容。再次干杯并感谢。 (3认同)