Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Configuración avanzada de Asterisk (página 2)




Enviado por Pablo Turmero



Partes: 1, 2

Monografias.com

ENUM

Ejemplo:
Llamada desde un teléfono IP al +34944991234
1. Consulta del teléfono al servidor DNS sobre la dirección 4.3.2.1.9.9.4.4.9.4.3.e164.arpa
2. El DNS responde:
sip:fulano@foo.com
mailto:fulano@gmail.com
3. El teléfono llama a sip:fulano@foo.com

Monografias.com

ENUM

Estado del arte:
ENUM soportado por algunos proxies, Asterisk y algunos teléfonos SIP.
El DNS .e164.arpa no tiene aún las zonas subdelegadas en muchos países.
Alternativa: e164.org
Servidor DNS privado independiente. Permite al usuario asociar su número de teléfono convencional a una dirección VoIP, correo, web, etc.

Monografias.com

Registro de llamadas
Asterisk permite llevar un control exhaustivo de todas las llamadas que se han realizado o recibido.
Es interesante para control propio de facturación, independiente del proveedor (si no se es uno de ellos).
Permite realizar estadísticas.
Este control se denomina CDR: Call Detail Record.

Monografias.com

Registro de llamadas

El registro del CDR se escribe por defecto en el archivo
/var/log/asterisk/cdr-csv/Master.csv
Existen extensiones al cdr: cdr_mysql por ejemplo, que
permiten almacenar los registros en una base de datos.
cdr_mysql está disponible en asterisk-addons
El CDR se configura en el archivo cdr.conf, para el módulo de MySQL, se utiliza cdr_mysql.conf
Para confirmar el estado del CDR desde el CLI, se puede ejecutar:
CLI> cdr status

Monografias.com

Registro de llamadas

Asterisk genera un CDR (registro) para cada llamada.
Algunos de los campos más importantes son:
accountcode: código de la cuenta a utilizar.
src: número del caller ID.
dst: extensión destino.
dcontext: contexto destino.
start: comienzo de la llamada (fecha/hora).
answer: respuesta de la llamada (fecha/hora).
end: fin de la llamada (fecha/hora).
duration: duración de la llamada en segundos, desde que fue discada hasta el corte.
billsec: duración de la llamada en segundos, desde que fue atendida hasta el corte.
disposition: estado de la llamada (atendida, no atentendida, ocupado, fallida).

Monografias.com

Registro de llamadas
Existen muchas aplicaciones que permite gestionar el CDR. Desarrollar una propia no es realmente muy complejo.
Algunas aplicaciones open source son:
Astbill: es una de las mejores aplicaciones opensource para tarificación, control de cuentas y llamadas.
Areski Stat v2: se trata de una aplicación para listar y realizar estadísticas de las llamadas realizas o enviadas.
A2Billing

Monografias.com

Sistema de logs

En el archivo /etc/asterisk/logger.conf se encuentra la configuración del sistema de logging de Asterisk.

Los distintos niveles de información a capturar en los logs son:

Verbose: mensajes generales sobre lo que está ocurriendo en el sistema (por ej, si el valor de verbosity es mayor a 3, muestra las instrucciones del plan de marcación).
Debug: mensajes con información extendida, en general utilizados por programadores.
Notice: notificaciones no críticas.
Warning: mensajes de alerta posiblemente críticos.
Error: mensajes indicando que ocurrió algo grave.

Monografias.com

Sistema de logs

En el contexto [logfiles] del archivo logger.conf se indican los archivos y mensajes a loguear en c/u, la sintaxis es: archivo => nivel1,…,niveln
Los archivos de log se crean por defecto en /var/log/asterisk/ (esto se puede cambiar /etc/asterisk/asterisk.conf).
Ejemplos:
debug => debug
full => notice,warning,error,debug,verbose

Monografias.com

Sistema de logs

Para enviar a la consola, hay que definir el archivo especial console:
console => notice,warning,error,debug

También se pueden enviar al syslog:
syslog.local0 => debug, warning, error, notice, verbose
Configurando además en /etc/syslog.conf:
local0.* @ip_servidor

Monografias.com

Sistema de logs: CLI
Los comandos relacionados con el manejo del log del CLI son:
logger reload: reabre los archivos de log del Asterisk y recarga la configuración del logger .
logger rotate: rota los archivos de log y luego hace un logger reload.
core set verbose: cambia el nivel de información a mostrar en la consola. Por ej:
set verbose 999.

Monografias.com

AGI

La AGI (o Asterisk Gateway Interface) provee una interfaz estándar para que programas externos puedan controlar el plan de marcación.
Generalmente, los scripts AGI se utilizan para realizar lógica avanzada, comunicarse con base de datos relacionales, etc.
Los lenguajes más comunes de programación de scripts AGI son: PHP, Python y Perl, aunque se puede utilizar cualquier otro lenguaje.

Monografias.com

AGI

El intercambio de información del script con Asterisk se realiza vía los canales de comunicación: STDIN, STDOUT y STDERR.
Lee desde STDIN para obtener información.
Escribe en STDOUT para enviar información.
Escribe en STDERR para enviar información de debugging.
El script AGI envía comandos a Asterisk escribiendo en el STDOUT. Seguidamente Asterisk envía una respuesta por cada uno de ellos que es leída por el script.

Monografias.com

AGI

Algunos ejemplos de comandos son:

ANSWER: atiende.
HANGUP: cuelga.
SAY [NUMBER | DIGITS | ALPHA | PHONETICS]: dice un número, dígito, caracter o una cadena fonéticamente.
SET [CONTEXT | EXTENSION | PRIORITY]: establece un nuevo contexto, extensión o prioridad luego de finalizada la ejecución de script.
VERBOSE: imprime un mensaje en el log.
WAIT FOR DIGIT: espera que se presione un dígito.
[SET | GET] VARIABLE: asigna u obtiene el valor de una variable del plan de marcación.

Monografias.com

AGI

El programa debe:
Tener derechos de ejecución y presentar un intérprete válido
Ej yum –y install php; chmod 755 mi_cript.php
Ser localizado por defecto en /var/lib/asterisk/agi-bin

Cómo llamar al script desde el dialplan:
exten => 123,1,Answer()
exten => 123,2,AGI(mi_script.php|argumentos)

Monografias.com

AGI: ejemplo en PHP

El siguiente script está escrito en PHP y dicta los números que se encuentran en el archivo que se le pasa como parámetro:

#!/usr/bin/php -q
< ?php
// Esta línea es para que que haga no mantenga en un buffer el output
ob_implicit_flush(true);
set_time_limit(6);
error_reporting(0);

// Se abren los diferentes archivos (STDIN, STDOUT y un archivo de log del AGI)
$in = fopen("php://stdin","r");
$out = fopen("php://stdout","w");
$stdlog = fopen("/var/log/asterisk/my_agi.log", "w");

// Si debug es true, escribe en el archivo de log definido anteriormente
$debug = true;

Monografias.com

AGI: ejemplo en PHP
// Toma el nombre del archivo con los números a dictar del primer parámetro
$archivo = $argv[1];

// Define la funcion read, que lee el input del STDIN
function read() {
global $in, $debug, $stdlog;
$input = str_replace("n", "", fgets($in, 4096));
if ($debug) fputs($stdlog, "read: $inputn");
return $input;
}

// Define la funcion write, que escribe el output en el STDOUT
function write($line) {
global $debug, $stdlog, $out;
if ($debug) fputs($stdlog, "write: $linen");
fputs($out,$line."n");
fflush($out);
}

Monografias.com

AGI: ejemplo en PHP
// Lee el archivo que se paso como parametro
$lines = file($archivo);

// Reproduce los digitos contenidos en cada linea del mismo
// informando en el log del Asterisk la accion realizada
foreach ($lines as $line) {
$line=trim($line);
for ($i=0;$i< strlen($line);$i++) {
write("VERBOSE "REPRODUCIENDO DIGITO $line[$i]"");
read();
write("SAY DIGITS $line[$i] """);
read();
sleep(1);
}
}
// Se cierran todos los handlers de archivos
fclose($in);
fclose($out);
fclose($stdlog);
exit; ?>

Monografias.com

AGI: ejemplo en PHP

Por ejemplo, si se quiere asociar el script a la extensión 200, se debe agregar al dialplan:

exten => 200,1,Answer();
exten => 200,2,AGI(dicta.php|/tmp/numeros.txt)
exten => 200,3,Hangup()

Monografias.com

CLI

Más allá de los comandos que se vieron a través del curso, se revisarán algunos otros adicionales:
Canal de consola (console channel)
console dial: permite hacer un llamada desde la consola.
console answer: permite contestar una llamada desde la consola.
console hangup: cuelga la llamada en curso en la consola.

Monografias.com

CLI

Administración del servidor:
stop/restart gracefully: parar/recomenzar Asterisk cuando no haya llamadas en curso y sin aceptar nuevas llamadas.
stop/restart now: parar/recomenzar inmediatamente.
stop/restart when convenient: parar/recomenzar Asterisk cuando no haya llamadas en curso.
reload: recarga toda la configuración .
module load/unload: cargar/descargar un módulo específico.
module show: mostrar todos los módulos levantados.

Monografias.com

CLI

Generales:
show applications: mostrar aplicaciones registradas en Asterisk.
show channels: listar los canales definidos.
show codecs: mostrar información sobre los codecs instalados.
show translation: mostrar un cuadro de doble entrada con los tiempos de conversión entre formatos de codecs.
soft hangup: colgar una llamada en un canal.
debug channel: realizar un debug de un canal.

Monografias.com

CLI
Plan de marcación:
dialplan show: mostrar el plan de marcación actual.
dialplan save: guardar los cambios realizados.
dialplan add/remove extension: agregar / eliminar una extensión en un contexto dado al plan de marcación.
dialplan add/remove include: incorporar / eliminar un include en un contexto dado en el plan de marcación.

Monografias.com

ASTERISK MANAGER API

Permite a una aplicación cliente conectarse a una instancia de Asterisk vía TCP/IP y ejecutar comandos o leer eventos.
Generalmente, se utiliza el puerto 5038.
Utiliza un protocolo en modo texto que consiste en líneas de tipo "clave: valor".
Conjunto de líneas: paquete.

Monografias.com

MANAGER: PROTOCOLO

1) Se debe establecer una sesión con el manager antes de ejecutar comandos.
2) Los paquetes pueden ser transmitidos en ambas direcciones.
3) El orden de las líneas dentro del paquete es indistinto.
4) Las líneas se delimitan con CRLF y una línea en blanco (2 CRLF consecutivos) indica el final del paquete.

Monografias.com

MANAGER: TIPOS DE PAQUETE

El tipo de paquete está dado por las siguientes claves:
Action: paquete originado en el cliente requiriendo llevar a cabo una acción particular. Contiene el nombre de la acción y los parámetros de la misma.
Response: la respuesta del Asterisk a la Acción requerida por el cliente.
Event: datos correspondientes a un evento generado dentro del núcleo de Asterisk o módulo.

Monografias.com

MANAGER: AUTENTICACIÓN

Las cuentas de usuario se configuran en /etc/asterisk/manager.conf. Por ej:

[general]
enabled=yes

[admin]
secret = claveadmin
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user

En este caso, "admin" es el nombre de usuario, la clave es "claveadmin" y sólo se permiten conexiones para este usuario vía localhost. El resto de las líneas establecen permisos (r,w,r/w) para cada clase (system, call, etc.).

Monografias.com

MANAGER: CONEXIÓN

Enviar un mensaje con acción "Login", junto con el usuario y la clave como parámetros. Por ej:

Action: login
Username: admin
Secret: adminclave
Events: off

(La última línea indica que la conexión no recibirá eventos por parte del Asterisk.)

Monografias.com

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter