Está en la página 1de 12

Configuración de Contexto Personalizado en FreePBX de Elastix

Acceder al Módulo FreePBX

Se debe activar previamente en:


Entrar en el módulo destinos personalizados y crear los destinos Personalizados con los cuales serán llamados los
módulos

Crear destino personalizado según ejemplo:

Entrar en el módulo “Aplicaciones Varias” para crear y asignar numeración.


Configurar el número de servicio y asignar la directiva con la cual serán llamados los destinos personalizados.
Acceder al archivo “extensions_custom.conf “ por SSH o por la herramienta Web administración de archivos de Elastix

Modificar el final del archivo con los parámetros que se configuraron previamente y con los cuales serán llamados los
módulos. Guardar y recargar configuración.

Nota: Tener presente que el apuntador de “goto” debe hacer referencia al IVR que corresponda con el de Conexiones
Digital (ivr-8) en nuestro caso cosnignado en el archivo “extensions_additional.conf”.
Se adjunta el archivo completo:

extensions_custom.conf
; This file contains the contexts the agents login for the module call center.
; and contains the context conferences for module conferences of elastix 1.0.

[from-internal-custom]
exten => 1234,1,Playback(demo-congrats) ; extensions can dial 1234
exten => 1234,2,Hangup()
exten => h,1,Hangup()
include => agentlogin
include => conferences
include => calendar-event
include => weather-wakeup

[agentlogin]
exten => _*8888.,1,Set(AGENTNUMBER=${EXTEN:5})
exten => _*8888.,n,NoOp(AgentNumber is ${AGENTNUMBER})
exten => _*8888.,n,AgentLogin(${AGENTNUMBER})
exten => _*8888.,n,Hangup()

[mm-announce]
exten => 9999,1,Set(CALLERID(name)="MMGETOUT")
exten => 9999,n,Answer
exten => 9999,n,Playback(conf-will-end-in)
exten => 9999,n,Playback(digits/5)
exten => 9999,n,Playback(minutes)
exten => 9999,n,Hangup

[conferences]
;Used by cbEnd script to play end of conference warning
exten => 5555,1,Answer
exten => 5555,n,Wait(3)
exten => 5555,n,CBMysql()
exten => 5555,n,Hangup

[calendar-event]
exten => _*7899,1,Answer
exten => _*7899,2,Playback(${FILE_CALL})
exten => _*7899,3,Wait(2)
exten => _*7899,4,Hangup()

[weather-wakeup]
exten => *61,1,Answer
exten => *61,2,AGI(nv-weather.php)
exten => *61,3,Hangup
exten => *62,1,Answer
exten => *62,2,AGI(wakeup.php)
exten => *62,3,Hangup
; BEGIN ELASTIX CALL-CENTER CONTEXTS DO NOT REMOVE THIS LINE

[llamada_agendada]
exten => _X.,1,NoOP("Elastix CallCenter: AGENTCHANNEL=${AGENTCHANNEL}")
exten => _X.,n,NoOP("Elastix CallCenter: QUEUE_MONITOR_FORMAT=${QUEUE_MONITOR_FORMAT}")
exten => _X.,n,GotoIf($["${QUEUE_MONITOR_FORMAT}" = ""]?skiprecord)
exten => _X.,n,Set(CALLFILENAME=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${UNIQUEID})
exten => _X.,n,MixMonitor(${MIXMON_DIR}${CALLFILENAME}.${MIXMON_FORMAT},,${MIXMON_POST})
exten => _X.,n,Set(CDR(userfield)=audio:${CALLFILENAME}.${MIXMON_FORMAT})
exten => _X.,n(skiprecord),Dial(${AGENTCHANNEL},300,tw)
exten => h,1,Macro(hangupcall,)

; END ELASTIX CALL-CENTER CONTEXTS DO NOT REMOVE THIS LINE


[custom-TestVa1] ; Uso Para Test
exten => s,1,NoOp(#######################################)
exten => s,n,NoOp(########### 8000 - Encuesta ###############)
exten => s,n,NoOp(#######################################)
exten => s,n,Answer
exten => s,n,Playback("welcome")
exten => s,n,Playback("one-moment-please")
exten => s,n,Playback(vm-goodbye)
exten => s,n,NoOp(############# Fin App ##################)
exten => s,n,Hangup

[custom-RegZona1]
exten => s,1,NoOp(#######################################)
exten => s,n,NoOp(######### 8001 SISTECO V1 ###############)
exten => s,n,NoOp(#######################################)
exten => s,n,AGI(CDII/agi-RegRegionCDii.php,SISTECO,${CALLERID(num)},${CHANNEL(channeltype)},${STRFTIME(${EPOCH},America/Bogota,%Y%m
%d-%H%M%S)})
exten => s,n,Goto(ivr-4,s,1)
exten => s,n,NoOp(############# Fin 8001 ##################)
exten => s,n,Hangup

[custom-RegZona2]
exten => s,1,NoOp(#######################################)
exten => s,n,NoOp(######### 8002 BAUMTIC V1 ###############)
exten => s,n,NoOp(#######################################)
exten => s,n,AGI(CDII/agi-RegRegionCDii.php,BAUMTIC,${CALLERID(num)},${CHANNEL(channeltype)},${STRFTIME(${EPOCH},America/Bogota,%Y
%m%d-%H%M%S)})
exten => s,n,Goto(ivr-4,s,1)
exten => s,n,NoOp(############# Fin 8002 ##################)
exten => s,n,Hangup
;

Garantizar la creación del módulo API dentro de la planta. Ruta: “/var/lib/asterisk/agi-bin”


Instalar los archivos necesarios para realizar las consultas e inserción de datos a la Base de Datos
Ejemplo del archivo

Ejemplo del archivo:


agi-RegRegionCDii.php
#!/usr/bin/php -q
<?php
// Zona Horaria
date_default_timezone_set('America/Bogota');
// librerias AGI
require ('phpagi.php') ;
#Conexion Mysql
require ('connectBDcall.php');
// AGI
//$agiCallR = new AGI();
ob_implicit_flush(true) ;
set_time_limit(30) ;

//argumentos recibidos de asterisk


$id1 = $_SERVER['argv'][2]; //valor 1: Call ID
$id2 = $_SERVER['argv'][1]; //valor 3: Region Llamada
$id3 = $_SERVER['argv'][3]; //valor 4: Troncal
$id4 = $_SERVER['argv'][4]; //valor 2: date Time Text
$idTabla = 'call_region_cdii'; // Tabla Base de Datos
//
// INSERT INTO `call_center`.`call_region_cdii` (`RefCont`, `CalliD`, `Region_Dep`, `Troncal`, `DataTime_Reg`, `Time_Dat_TS`) VALUES (NULL, '8765',
'BAUMTIC', 'SIP/34567098', '20170912-235412', CURRENT_TIMESTAMP);
//
//insertar datos segun valores recibidos del asterisk
$sql = "INSERT INTO $idTabla (CalliD,Region_Dep,Troncal,DataTime_Reg) VALUES ('$id1', '$id2', '$id3', '$id4')";
//$agiCallR->verbose("Datos Query :" . $sql);
//echo "Consulta Query L20 : \n" . $sql ;
error_log($sql."\n", 3, "/var/lib/asterisk/agi-bin/survey.log");
//
$retval = mysql_query( $sql, $link );
if(!$retval) {
//$agiCallR->verbose("Error MySQL: No Pudo Registrar Datos.");
die('Error Retornado : ' . mysql_error());
} else {
//$agiCallR->verbose("Registro de Zona OK.");
}
//echo "Datos ingresados con exito. Fin.\n";
mysql_close($link);
?>

AGIGuardarRegion.php
#!/usr/bin/php -q
<?php
require("phpagi.php");
date_default_timezone_set('America/Bogota');

// MYSQL Properties
$servername = "localhost";
$username = "root";
$password = "********";
$dbname = "ccdsurvey";

// AGI
$agi = new AGI();
$agi->answer();

// Connection MYSQL
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
$agi->verbose("Error MySQL: ".mysqli_connect_error(), 1);
}

// Extract Vars
$AGENT = $agi->get_variable("AGENTE");
$AGENT = $AGENT["data"];

$FROMDID = $agi->get_variable("FROM_DID");
$FROMDID = $FROMDID["data"];

$NODEST = $agi->get_variable("NODEST");
$NODEST = $NODEST["data"];

$YEAR = $agi->get_variable("YEAR");
$YEAR = $YEAR["data"];

$MONTH = $agi->get_variable("MONTH");
$MONTH = $MONTH["data"];

$DAY = $agi->get_variable("DAY");
$DAY = $DAY["data"];

$CALLFILENAME = $agi->get_variable("CALLFILENAME");
$CALLFILENAME = $CALLFILENAME["data"];

$UNIQUEID = substr($CALLFILENAME, strrpos($CALLFILENAME, "-")+1);

$ANSWER01 = $agi->get_variable("PREGUNTA01");
$ANSWER01 = $ANSWER01["data"];

$ANSWER02 = $agi->get_variable("PREGUNTA02");
$ANSWER02 = $ANSWER02["data"];

// INSERT MYSQL
if ($conn) {
$sql = "INSERT INTO surveystats (`did`, `destination`, `year`, `month`, `day`, `uniqueid`, `callfilename`, `answer1`, `answer2`,`agent`)";
$sql.= " VALUES('".$FROMDID."', '".$NODEST."', '".$YEAR."', '".$MONTH."', '".$DAY."', '".$UNIQUEID."', '".$CALLFILENAME."', '".$ANSWER01."', '".
$ANSWER02."', '".$AGENT."') ";

error_log($sql."\n", 3, "/var/lib/asterisk/agi-bin/survey.log");

if (mysqli_query($conn, $sql)) {
$agi->verbose("Registrada.", 1);
} else {
$agi->verbose("Error MySQL: No Pudo Registrar Encuesta. ", 1);
}
mysqli_close($conn);
}

?>

Crear en la Base de Datos “call_center” una tabla y su respectiva estructura para insertar los datos que serán
contabilizados posteriormente.
Ejemplo de registros
Instalar los archivos necesarios dentro del servidor para poder acceder al módulo de consultas. Y configurar las
credenciales adecuadas dentro del sistema.

Ingresar al Modulo previamente instalado para descargar y visualizar los registros. Crear o asignar las credenciales
necesarias para realizar consultas dentro de la base de datos.

https://xxx.xxx.xxx.xxx/Consulta_Proyecto/Consulta_ZonaLlamada.php

También podría gustarte