我正在建设一个接收呼入呼叫时,拨通过代理人的电话号码列表(由一个单独的一段代码确定)呼叫中心的功能和第一数字连接上,我们打出来的代码和运行一个单独的函数到代理连接成其中客户等待的队列。这是正在兴建中Laravel 5.7,因为有正在创造一些其他未来的仪表板,我想将它放在球队将要使用的代码。
最初的客户排队和连接代理的号召似乎是工作。
我在寻找与下面的代码帮助:
public function findAgentByPriority($agentCount) {
$twilio = new Client(env('TWILIO_SID'),env('TWILIO_SECRET'));
// test numbers
$agentArr[] = ["agent" => env('TWILIO_TEST_AGENT1')];
$agentArr[] = ["agent" => env('TWILIO_TEST_AGENT2')];
// $agentArr = json_encode($agentArr);
//build the array by querying /api/v1/agile/users
$numbers = $agentArr;
// this part of the code will call one person after the next
// call the next number
if($agentCount == NULL){
$agentCount = count($numbers);
echo "in if<br>";
$call = $twilio->calls
->create(
$numbers[0],
env('TWILIO_MAIN_NUMBER'),
[
"url" => "https://{$_SERVER['HTTP_HOST']}/ivr/connect-agent",
"statusCallback" => "https://{$_SERVER['HTTP_HOST']}/ivr/next-agent?c=$agentCount",
"timeout" => 20
]
);
}elseif($agentCount > 0){
// when we run out of numbers move out of the loop
$agentCount = 0;
}else{
// when we run out of numbers move out of the loop
}
// once there are no more agents that were logged in today we
// will move to dial cell phone fallback for 40s
// and last we'll call on the voicemail function
}
而这里的是,连接代理路由调用我们connectAgent功能。
public function connectAgent() {
$response = new Twiml\VoiceResponse;
$dequeue = $response->dial('');
$dequeue->queue('main');
}
我想主要有“statusCallback”拍摄到一个新的方法,当我们读到,有“无应答”,并呼吁在行的下一个数字。我不知道如何跟踪的号码留下什么用传递变量通过回调。将它设置成一个数据库更好,做一些像寻找任何剩余arrayIDs其中的记录仍然存在,并拨下来的下一个?我可以建立阵列,它是在第一个函数调用数据库参数。
我能够避免两个人叫一次,并通过刚刚建立了不同arrayIDs只有通过一组在同一时间去搞乱了代码的问题。
任何指导表示赞赏!
UPDATE PHP的服务器造成无限循环。移动测试,以我的无业游民箱所以现在我可以从同一个服务器的Laravel路线上叫无问题已经解决了这一点。这与通过回调数组的答案一起帮我解决这个问题。更新代码以遵循参考。
此以下问题帮我找出第二个请求被卡住的问题:Calling route from same server causes an infinite loop
Twilio开发者传道这里。
你可以做的是添加当前编号作为查询参数statusCallback
URL。这样,当回调被调用时,你可以找到你的号码列表号码,然后移动到下一个。这样你就不需要在数据库中存储任何东西。
让我知道这是否有助于在所有。