viernes, 18 de septiembre de 2020

campaña call center

 Lo primero que debemos hacer es modificar el archivo index en :


/var/www/html/modules/agent_console


 Debemos modificar desde la linea 846 :


Agregamos esto :


-----------------------------------------------------------------------------------------------

        $comboContactos = array();

        $comboselect = array();

        $id_contactado=(isset($infoLlamada['contact_id']) ? 'c'.$infoLlamada['contact_id'] : (isset($infoLlamada['callid']) ? $infoLlamada['callid'] : $infoLlamada['call_id']));

        //BD

        $conexion = mysql_connect("localhost","root","R8S8r8dpZr");

        mysql_select_db("call_center",$conexion);

        //$cConsulta = 'SELECT id,phone FROM calls where id_contacto="'.$id_contactado.'" AND contactado!="0"';

        $cConsulta = 'SELECT id,phone,contactado,id_contacto FROM calls WHERE id_contacto=(IF((SELECT id_contacto FROM calls where id="'.$id_contactado.'")="A","'.$id_contactado.'", (SELECT id_contacto FROM calls where id="'.$id_contactado.'" AND id_contacto!="0" ))) OR id=(SELECT id FROM calls where id_contacto="A" AND id="'.$id_contactado.'") OR id=(SELECT id_contacto FROM calls where id="'.$id_contactado.'" AND id_contacto!="0") ORDER BY FIELD(id,"'.$id_contactado.'") DESC';


        $rsConsulta = mysql_query($cConsulta);

        while ($fila = mysql_fetch_array($rsConsulta, MYSQL_NUM)) {

            $comboContactos[] = $fila;

        }


        foreach ($comboContactos as $key => $value) {


            $comboselect[$comboContactos[$key][0]] = $comboContactos[$key][1];

        }

-------------------------------------------------------------------------------------------



Muy importante poner la clave root 
($conexion = mysql_connect("localhost","root","claverootMySQL");

Aquí entramos al MySQL a verificar si el numero fue contactado o no 
Después vamos a agregar estos label en el mismo archivo :

linea 875 aproximadamente 

-----------------------------------------------------------------------------------------    
        'LBL_CONTACTO_SELECT'       =>  'Contactado',
            'LISTA_CONTACTOS'           =>  $comboselect,
            'BTN_CONFIRMAR_CONTACTO'    =>  'Contactado',
            'BTN_CONFIRMAR_CONTACTO2'    =>  'No Contactado',
-----------------------------------------------------------------------------------------



después de esto vamos a la linea 1.058 mas o menos del mismo archivo y agregamos esta función :



------------------------------------------------------------
// Agregado 18 09 2020 Funcion verificar base de datos no Contactado 
 
function manejarSesionActiva_confirm_contact_outgoing($module_name, $smarty, $sDirLocalPlantillas, $oPaloConsola, $estado)
{
    $respuesta = array(
        'action'    =>  'confirmed',
        'message'   =>  _tr('Contact successfully confirmed'),
    );
    $idContact = getParameter('id_contact');
    $confirma = getParameter('confirma');

    if (is_null($idContact) || !ctype_digit($idContact)) {
        $respuesta['action'] = 'error';
        $respuesta['message'] = _tr('Invalid or missing contact ID');
    } else {
        $bExito = $oPaloConsola->confirmarContacto_outgoing($idContact, $confirma);
        if ($bExito==='NOT') {
            $respuesta['action'] = 'confirmed';
            $respuesta['message'] = 'Cliente no contactado, se intentara llamar a otro numero';
        }
        elseif (!$bExito) {
            $respuesta['action'] = 'error';
            $respuesta['message'] = _tr('Error while confirming contact').' - '.$oPaloConsola->errMsg.$idContact;
        }
    }

    $json = new Services_JSON();
    Header('Content-Type: application/json');
    return $json->encode($respuesta);
}

// Agregado 18 09 2020 Función verificar base de datos no Contactado 
----------------------------------------------
Después casi al final del archivo agregamos esto 

------------------------------------------------------------
        $comboContactos = array();
        $comboselect = array();
        $id_contactado=(isset($infoLlamada['contact_id']) ? 'c'.$infoLlamada['contact_id'] : (isset($infoLlamada['callid']) ? $infoLlamada['callid'] : $infoLlamada['call_id']));
        //BD
        $conexion = mysql_connect("localhost","root","R8S8r8dpZr");
        mysql_select_db("call_center",$conexion);
        //$cConsulta = 'SELECT id,phone FROM calls where id_contacto="'.$id_contactado.'" AND contactado!="0"';
        $cConsulta = 'SELECT id,phone,contactado,id_contacto FROM calls WHERE id_contacto=(IF((SELECT id_contacto FROM calls where id="'.$id_contactado.'")="A","'.$id_contactado.'", (SELECT id_contacto FROM calls where id="'.$id_contactado.'" AND id_contacto!="0" ))) OR id=(SELECT id FROM calls where id_contacto="A" AND id="'.$id_contactado.'") OR id=(SELECT id_contacto FROM calls where id="'.$id_contactado.'" AND id_contacto!="0") ORDER BY FIELD(id,"'.$id_contactado.'") DESC';

        $rsConsulta = mysql_query($cConsulta);
        while ($fila = mysql_fetch_array($rsConsulta, MYSQL_NUM)) {
            $comboContactos[] = $fila;
        }

        foreach ($comboContactos as $key => $value) {

            $comboselect[$comboContactos[$key][0]] = $comboContactos[$key][1];
        }
-------------------------------------------------------------------------------------


 

luego después de eso un par de reglones abajo agregamos esto :

-----------------------------------------------------------------
        $registroCambio['lista_contactos'] = $comboselect;
        $registroCambio['puede_confirmar_contacto'] = (count($comboselect) > 1);
-----------------------------------------------------------------------


BIEN ESO ES TODO POR ESA PARTE ! ... 

Ahora vamos a este archivo :

/var/www/html/modules/agent_console/themes/default/agent_console_atributos.tpl
y agregamos estos reglones :

-------------------------------------------------------
        <tr>
            <td><label for="llamada_entrante_contacto_id">{$LBL_CONTACTO_SELECT}: </label></td>
            <td>
              <select
                  name="llamada_entrante_contacto_id"
                  id="llamada_entrante_contacto_id"
                  class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only">
                  {html_options options=$LISTA_CONTACTOS}
              </select>
              <button id="btn_confirmar_contacto1">{$BTN_CONFIRMAR_CONTACTO}</button>
              <button id="btn_confirmar_contacto2">{$BTN_CONFIRMAR_CONTACTO2}</button>
            </td>
        </tr> 
--------------------------------------------------------



bueno hay un archivo que nosotros manejamos con las actualizaciones pertinentes para generar el descanso automático :

Ahora generamos esta opción :
Vamos a /var/www/html/modules/agent_console/libs/paloSantoConsola.class.php

y en el reglon 813 aproximadamente agregamos esto :

---------------------------------------------

    function confirmarContacto_outgoing($idCall, $confirma)
    {
        try {
            $oDB = $this->_obtenerConexion('call_center');
            if ($confirma=='YES') {
              $sPeticion ='SELECT id_contacto FROM calls WHERE id_contacto=(IF((SELECT principal_contact FROM calls where id="'.$idCall.'")="A","'.$idCall.'", (SELECT id_contacto FROM calls where id="'.$idCall.'" AND id_contacto!="0" ))) LIMIT 1;';
              $recordset = $oDB->fetchTable($sPeticion, TRUE);
              
              $id_confirmed=$recordset[0]['id_contacto'];
              //Actualizar si es primera llamada:
              $sUPDATE='UPDATE calls SET id_contacto="'.$id_confirmed.'" WHERE id="'.$idCall.'" AND id_contacto="A";';
              $updateset = $oDB->genQuery($sUPDATE,TRUE);

              //actualizar todos los demas a Terminados
              $sUPDATE='UPDATE calls SET contactado="T" WHERE id_contacto="'.$id_confirmed.'";';
              $updateset = $oDB->genQuery($sUPDATE,TRUE);

              //actualizar id actual como contactado
              $sUPDATE='UPDATE calls SET contactado="C" WHERE id="'.$idCall.'";';
              $updateset = $oDB->genQuery($sUPDATE,TRUE);

              return TRUE;
            }
            elseif ($confirma=='NOT') {

              $sPeticion ='SELECT id_contacto FROM calls WHERE id_contacto=(IF((SELECT principal_contact FROM calls where id="'.$idCall.'")="A","'.$idCall.'", (SELECT id_contacto FROM calls where id="'.$idCall.'" AND id_contacto!="0" ))) LIMIT 1;';
              $recordset = $oDB->fetchTable($sPeticion, TRUE);
              $id_confirmed=$recordset[0]['id_contacto'];
              //Actualizar si es primera llamada:
              $sUPDATE='UPDATE calls SET id_contacto="'.$id_confirmed.'" WHERE id="'.$idCall.'" AND id_contacto="A";';
              $updateset = $oDB->genQuery($sUPDATE,TRUE);

              //actualizar ID de sigiente registro como pendiente si no hay mas volver a poner el primero como Pendiente
              $sPeticion ='SELECT id FROM calls WHERE id_contacto=(SELECT id_contacto FROM calls where id="'.$idCall.'") AND contactado="E" ORDER BY FIELD(id,"'.$idCall.'") DESC LIMIT 1;';
              $recordset = $oDB->fetchTable($sPeticion, TRUE);

              if (isset($recordset[0]['id'])) {
                $id_espera=$recordset[0]['id'];
                $sUPDATE='UPDATE calls SET contactado="P" WHERE id="'.$id_espera.'";';
                $updateset = $oDB->genQuery($sUPDATE,TRUE);              
              }
              else{
                $sPeticion ='SELECT id FROM calls WHERE id_contacto=(SELECT id_contacto FROM calls where id="'.$idCall.'") AND contactado="T" ORDER BY FIELD(id,"'.$idCall.'") DESC LIMIT 1;';
                $recordset = $oDB->fetchTable($sPeticion, TRUE);
                //var_dump($recordset);
                $id_espera=$recordset[0]['id'];
                $sUPDATE='UPDATE calls SET contactado="P" WHERE id="'.$id_espera.'";';
                $updateset = $oDB->genQuery($sUPDATE,TRUE);

              }
              
              //actualizar registro actual
              $sUPDATE='UPDATE calls SET contactado="T" WHERE id="'.$idCall.'";';
              $updateset = $oDB->genQuery($sUPDATE,TRUE);

              return 'NOT';
            }


            
        } catch (Exception $e) {
            $this->errMsg = '(internal) setcontact: '.$e->getMessage();
            return FALSE;
        }
    } 
-----------------------------------------------------------


sigue 2 parte

No hay comentarios:

Publicar un comentario