Skip to content

chechojgb/FrontEstadoColas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Documentación Tablero StateSkill

El tablero StateSkill está diseñado para monitorear el estado de las colas de Asterisk, brindando mayor control sobre agentes y llamadas.

Sección de Skills

El código se estructura en múltiples métodos privados para mejorar la organización y flexibilidad. La actualización de los datos ocurre cada 8 segundos dinámicamente.

Funcionamiento

  1. El usuario selecciona una skill desde un selector.
  2. El índice de la skill se extrae de un array dentro del controlador.
  3. Este índice se almacena en la variable $selectedCampaign y en una sesión.
  4. Se genera dinámicamente un comando que se ejecutará en el servidor:
rasterisk -rx 'queue show q{$campaignIndex}' | sort

Conexión con el Servidor

Para ejecutar el comando en el servidor, se utiliza la librería phpseclib, permitiendo una conexión momentánea para obtener los datos.

Procesamiento de Datos

Los datos devueltos suelen ser extensos y técnicos, por lo que se realiza una limpieza y procesamiento para mejorar la comprensión de la información mostrada en el tablero.

Sección de Todas las Colas

Además del monitoreo por skill, el tablero muestra un resumen general de todas las colas, proporcionando una visión completa del estado del sistema.


Explicación del Código

executeCommand(Request $request)

Este método gestiona la ejecución de comandos en el servidor para obtener información sobre las colas.


public function executeCommand(Request $request) {
    $timing = [];
    $campaignIndex = $request->input('campaign');
    session(['selectedCampaign' => $campaignIndex]);
    $command = "rasterisk -rx 'queue show q{$campaignIndex}' | sort";

    $output = $this->getSSHOutput($command);
    $cleanOutput = $this->removeAnsiCharacters($output);
    
    return view('campaigns', [
        'calls' => $this->extractCallsInQueue($cleanOutput),
        'members' => $this->extractQueueMembersSummary($cleanOutput),
        'agents' => $this->getAgentDetails($cleanOutput),
    ]);
}

validateCampaign(Request $request) y validateOperation(Request $request)

Estos métodos validan los parámetros recibidos en la solicitud:


return $request->validate([
    'campaign' => 'required|integer|min:1|max:' . count(self::CAMPAIGN_OPTIONS),
]);

getSSHOutput(string $command): ?string

Establece conexión con el servidor usando phpseclib:


$user = env('USER_SERVER');
$password = env('PASSWORD_SERVER');
$host_server = env('HOST_SERVER');
$ssh = new SSH2($host_server);
if (!$ssh->login($user, $password)) {
    return null;
}
return $ssh->exec($command);

removeAnsiCharacters(string $output): string

Elimina caracteres ANSI de la salida:


$ansiEscape = '/\x1B\[.*?m/';
return preg_replace($ansiEscape, '', $output);

extractCallsInQueue(string $output): array

Extrae las llamadas en espera, incluyendo SIP e IAX2:


$queueCallsPattern = '/\d+.\s+(?:SIP|IAX2)\/\S+\s+\(.*?\)/m';
preg_match_all($queueCallsPattern, $cleanOutput, $matches);

extractQueueMembersSummary(string $output): array

Obtiene el resumen de miembros en la cola:


$membersPattern = '/^Q\d+\s+.*?strategy.*?$/m';
preg_match_all($membersPattern, $output, $matches);

extractQueueAll(string $output): array

Extrae el estado de todas las colas:


$pattern = '/Q(\d+).*?has\s+(\d+)\s+calls/';
preg_match_all($pattern, $output, $matches, PREG_SET_ORDER);

About

Revisar el estado de las colas en operacion, informando todos los detalles necesarios o solicitados en el promt

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published