我正在尝试创建一个电话系统,以使呼叫者入队,理想情况下,系统将呼叫一个座席,座席然后接听并修改呼叫以桥接队列顶部。
到目前为止,我已经完成的工作是拨号循环,在该循环中,用户进行呼叫,并按顺序拨打座席,直到有人接听,或让用户选择在听到铃声时留下消息或留在线路上。和简单的入队音乐。
我似乎无法弄清楚如何结合这两个系统。
我发现的最接近的帖子是这篇文章,它很有帮助,但是它掩盖了呼叫者入队后如何进行呼叫的方法。
不幸的是,到目前为止,我发现的唯一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 …Run Code Online (Sandbox Code Playgroud)