Mostrando las entradas con la etiqueta asterisk. Mostrar todas las entradas
Mostrando las entradas con la etiqueta asterisk. Mostrar todas las entradas

sábado, septiembre 19, 2015

Proxy SIP Repro

Repro es un proxy SIP simple de implementar y de configurar. Este proxy esta incluido en los repositorios de Debian 8.

Instalación


La instalacion es simple, solo debemos instalar como cualquier paquete con aptitude:

sudo aptitude install repro

Y lo iniciamos:

sudo /etc/init.d/repro start

la administracion es el siguiente:

http://127.0.0.1:5080/index.html

Los datos para ingresar son Usuario: admin y pass: admin


Configurar dominio


 Ingresamos a la pagina DOMAINS y agregamos la IP de computador con repro:


En este caso agregamos la IP 192.168.0.111 y el puerto 5060

Al agregar un nuevo dominio es necesario reiniciar Repro:

sudo /etc/init.d/repro restart

Configurar usuarios (extensiones)



Ahora de agregamos los usuarios para esto ingresamos a ADD USER



Agregamos los usuarios en el dominio 192.168.0.111 con los siguientes datos:

Usuario1
User Name: 100
Password: 100

Usuario2
User Name: 101
Password: 101




Configurar clientes


Primero configuraremos Linphone en nuestro escritorio Linux:

Opciones -> Preferencias ->  Gestionar Cuentas SIP -> Añadir




Ahora configuraremos linphone es nuestro android


Ahora podemos realizar llamadas entre el teléfono y el computador

domingo, enero 25, 2015

Codec g729 en FreeSWITCH

G729 es el codec bajo consumo de ancho de banda mas utilizado en los teléfonos IP físicos, para poder utilizarlo en FreeSWITCH se puedo utilizar en modo passthrough, utilizando el modulo mod_com_g729, de manera gratuita, pero si necesitamos transcoding o buzon de voz con g729 necesitaremos utilizar el modulo mod_g729 por el cual hay que pagar 10 dolares por canal, esto debido a que el codec g729 esta patentado y hay que pagar royalty por uso. 
Pero ahora existe otro modulo que no esta en los repositorios oficiales de FreeSWITCH, que utiliza g729 con la implementacion open source de Belledonne Communications, los creadores de nuestro querido Linphone, el cual nos permite utilizar g729 para transcoding y otras aplicaciones sin pagar. 


Instalación


 cd /u sr/src/freeswitch/src/mod/codecs/ 
git clone https://github.com/xadhoom/mod_bcg729.git 
cd mod_bcg729 

Modificamos el archivo Makefile

FS_INCLUDES=/usr/local/freeswitch/include

FS_MODULES=/usr/local/freeswitch/mod

Despues compilamos e instalamos

make & make install

Entramos a FreeSWITCH y cargamos el nuevo modulo

unload mod_g729

load mod_bcg729

Ahora ya tenemos corriendo g729 en FreeSWITCH


===============ACTUALIZACIÓN====================

Para FreeSWITCH 1.6 se debe modificar las variables de Makefile asi:

FS_INCLUDES=/usr/local/freeswitch/include/freeswitch

FS_MODULES=/usr/local/freeswitch/mod


domingo, junio 01, 2014

Configuracion de Extensiones en FreeSWTICH


Continuamos con los artículos de FreeSWITCH ya hemos dados los primeros pasos:

Instalación de FreeSWITCH

Archivos de configuracion de FreeSWTICH

Ahora comenzaremos con la configuración de extensiones de FreeSWITCH. Estas se encuentran en el directorio /usr/local/freeswitch/conf/directory/ en una instalación por defecto. Dentro de este directorio encontramos lo siguiente:

default.xml : Archivo que contiene informacion general de la extensiones como el dominio, variables generales y grupos de llamados.

default/  : Directorio donde se guardan los archivos de las extensiones configuradas en nuestro freeswitch, por defecto trae extensiones creadas del 1000.xml en adelante y la estructura es la siguiente:


















En FreeSWITCH cada archivo xml incluido dentro de esta carpeta corresponde a una extension o  numero telefonico, los parametros mas importantes son:

user id:  Este corresponde al usuario y el numero telefonico del telefono.

password: es la clave del teléfono, la variable $${default_password} corresponde a la clave definida en el archivo vars.xml que por defecto es 1234, por seguridad este campo en producción debe ser una clave fuerte.

vm-password: clave del buzón de voz.

toll_allow: esta variable se utiliza para permitir acceso a rutas telefónicas.

user_context: Aqui se define el contexto en el cual las llamadas seran procesadas, por defecto FreeSWITCH  solo tiene el contexto default.


Con esto ya podemos configurar un telefono, en este caso utilizaremos el linphone (compatible con Linux, Windows, Mac y Android entre otros)

 debemos ingresar a Opciones→Manage SIP Accounts

Y seleccionamos añadir


 Al aceptar nos pedirá la clave de la extensión.

Para probar puedes llamar a la extensión 9198 y debería sonar la música de tetris con tonos. Ademas puedes configurar otra extensión y llamar entre ellas y ademas enviar mensajes!

sábado, mayo 31, 2014

Nueva version estable de FreeSWITCH, la version 1.4.5




El equipo de desarrollo de FreeSWITCH, anuncio el cambio de estado de la rama 1.4 de beta a estable, lo cual lo habilita a utilizar en ambientes de produccion(en general en FreeSWITCH estable es estable). Esta nueva version incluye las siguientes mejoras:

Soporte estable para WebRTC incluyendo Opus, DTLS y mas.
Desacoplamiento del RTP de la  Pila de SIP.
La eliminación de varias dependencias de librerías de terceros. actualizaciones relacionadas con este cambio de las librerías que dependen SQLite, OpenSSL, entre otras.
Un gran número de mejoras de seguridad y estabilidad.


Anuncio en la lista:
 http://lists.freeswitch.org/pipermail/freeswitch-users/2014-May/105420.html

Todavia no esta completa la documentación de instalacion para la nueva version, existen algunas dependencias nuevas, pero eso no impide instalar la nueva version.

Guia de instalacion
https://confluence.freeswitch.org/display/FREESWITCH/Linux+Quick+Install+Guide

Otro punto importante  es que ahora recomiendan Debian para las implementaciones de FreeSWITCH, no significa que las otras distribuciones no se pueda, debido a que los desarrolladores la utilizan.

Para descargar la ultima version estable de la rama 1.4 via git el comando es el siguiente:

martes, diciembre 24, 2013

Archivos de configuracion de FreeSWITCH

Esto se basa en lo publicado en este blog

FreeSWITCH es configurado en base ha archivos XML, los cuales se encuentran  ubicados por defecto en la carpeta conf del directorio de FreeSWITCH. ejemplo:

/usr/local/freeswitch/conf/

En la carpeta conf tendremos como principales archivos de configuracion los siguientes:


freeswitch.xml

Es el archivo maestro de la configuración de FreeSWITCH, éste incluye los demas archivos de configuración convirtiéndose en el punto de entrada en la carga de la configuración y pre-procesamiento de variables.

vars.xml

Define variables globales al sistema que pueden ser accedidas desde un plan de marcación, este archivo contiene algunas líneas con la marca especial X-PRE-PROCESS, estas líneas no pueden ser comentados.

La sintaxis usada para definir una variable es:



El valor de una variable previamente definida se obtiene así:

${nombre_variable} o $${nombre_variable}

La diferencia entre $ y $$ es el tipo de acceso, con $ el valor se obtiene
cuando se usa la variable, con $$ se maneja como valor de pre-procesador y se obtiene durante la carga de FreeSWITCH o se recarga la configuración del archivo freeswicth.xml con el comando relaodxml. La diferencia básica es que el valor con $ es expandido en el uso mientras con $$ es expandió en la carga del sistema.

base_dir: define el directorio raíz donde se ejecuta FreeSWITCH
sound_prefix: define el direcotrio donde se encuentran los archivos de audio (esta variable esta en revisión todavia aunque se usa en la actualidad)
local_ip_v4: dirección IP local, esta variable la define automáticamente FreeSWITCH
domain: define el dominio por defecto para identificar las extensiones registradas, asignado por defecto como $${local_ip_v4}
global_codec_prefs: codecs disponibles para la negociación con las extensiones registradas
outbound_codec_prefs: ocedecs disponibles para la negociación con gateways
outbound_caller_name: este nombre se usa para mostrarlo en el teléfono cuando se hace una llamada
outbound_caller_id: número usado para mostrarlo en el teléfono cuando se hace una llamada

dialplan/


Los planes de marcación se definen en el directorio dialplan, esto lo veremos en mas detalle en otra entrada del blog.

directory/


Las extensiones que pueden registrarse con FreeSWITCH se encuentran en el directorio directory, esto lo veremos en mas detalle en otra entrada del blog.


autoload_configs/

  El directorio autoload_configs contiene los archivos de configuración basicos de FreeSWITCH y  de los distintos modulos se utilizar por FreeSWITCH como pueden ser el call center, lua, etc

modules.conf.xml



Este archvio determina que módulos se van a carga durante el inicio de FreeSWITCH

sofia.conf.xml


Archivo de configuración para definiciones SIP

sábado, octubre 08, 2011

Presentacion de Telefonia IP

  Esto es una prueba de  las presentaciones con audio de slideshare, muy bueno.  Telefonia
View another webinar from Julio Saldivar

viernes, septiembre 16, 2011

Grabar llamadas en Asterisk y administrarlas via Web



Aqui les mostre un pequeño sistema de grabacion hecho en Asterisk y con administracion Web. El diagrama del sistema es el siguiente:



Dialplan

En el dialplan necesitamos ejecutar la aplicacion MixMonitor la cual creara el archivo de audio de la llamada, esta sera guardar en un disco RAM, cuando concluye la grabacion ejecutamos el script grabacion y le entregamos varios datos entre ellos la ubicacion de la grabacion.

[grabacion]
;Prueba de grabacion
exten=>20,1,set(tiempo=${UNIQUEID})
exten=>20,n,set(GRABACION=/mnt/ramdisk/${tiempo}.wav)
exten=>20,n,set(LLAMANTE=${CALLERID(num)})
exten=>20,n,set(LLAMADO=${EXTEN})
exten=>20,n,set(FECHA=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
exten=>20,n,MixMonitor(/mnt/ramdisk/${tiempo}.wav||python /var/lib/asterisk/agi-bin/grabacion.agi ${LLAMANTE} ${LLAMADO} ${CDR(duration)} ${GRABACION})
exten=>20,n,Dial(SIP/${EXTEN},30,hrtT)
exten=>20,n,hangup()

Script

El Script se ejecuta al finalizar mixmonitor, y su trabajo en subir la informacion a la base de datos.

#!/usr/bin/python
#utilizaremos las librerias para manejo de SQL de Web2py
from gluon.sql import DAL, Field
import sys
# Definimos la base de datos
db=DAL("mysql://root:password@127.0.0.1/grabaciones")
# Definimos la tabla
db.define_table('trabajos',Field('llamante'),Field('llamado'),Field('fecha'),Field('grabacion','upload',uploadfolder='/home/www-data/web2py/applications/grabacion/uploads'),migrate=False)
llamante=sys.argv[1]
llamado=sys.argv[2]
fecha=sys.argv[3]
grabacion=sys.argv[4]
audiograbacion = open(grabacion,'rb')
# insertamos los datos en la base de datos
db.trabajos.insert(llamante=llamante,llamado=llamado,fecha=fecha,grabacion=db.trabajos.grabacion.store(audiograbacion,grabacion))
db.commit()

Aplicacion Web

Para realizar la aplicacion web utilizamos Web2py. Esta aplicacion lo que hace es conectarse a la misma base de datos que utiliza el script y asi se puede visualizar. Adjunto la aplicacion, eso si para utilizarla debes tener instalado Web2py.

Descarga Aplicacion