Я работаю над созданием функциональности центра обработки вызовов, чтобы при получении входящего вызова он набирал список телефонных номеров оператора (как определено отдельным фрагментом кода) и соединение первого номера, которое мы разрывали изкод и запустить отдельную функцию для подключения агента в очередь, где клиент ждет.Он создается в 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, которую вызывает маршрут connect-agent.
public function connectAgent() {
$response = new Twiml\VoiceResponse;
$dequeue = $response->dial('');
$dequeue->queue('main');
}
Я подумал, что в основном нужно перевести «statusCallback» в новый метод, когда мы прочитали, что был «нет ответа», и позвонили по следующему номеру в строке.Я не знаю, как отслеживать, какие числа остались, передавая переменную через обратный вызов.Было бы лучше установить его в базу данных и сделать что-то вроде поиска оставшихся массивов, где записи еще существуют, и набрать следующий номер?Я мог бы установить массив и его параметры в базе данных при первом вызове функции.
Я мог бы избежать проблемы, когда два человека звонят одновременно и портят код, просто создавая различные идентификаторы массива и выполняя только одинустанавливается за раз.
Любые указания приветствуются!
ОБНОВЛЕНИЕ Сервер PHP вызывал бесконечные циклы.Перемещение тестирования в мой бродячий ящик решило эту проблему, и теперь я могу без проблем вызывать маршрут Laravel с того же сервера.Это вместе с ответом прохождения массива через обратный вызов помогло мне решить эту проблему.Обновленный код для справки.
Эта следующая проблема помогла мне выяснить проблему с зависанием второго запроса: Вызов маршрута с того же сервера вызывает бесконечный цикл