FESOL/201801/Especializacion/proyectos/Planta Telefonica con Asterisk

De FESOL. Proyectos de Software Libre ULS
Saltar a: navegación, buscar

UNIVERSIDAD LUTERANA SALVADOREÑA

Logoulsfull oficial web.jpg

FACULTAD CIENCIAS DEL HOMBRE Y LA NATURALEZA

TEMA: IMPLEMENTACIÓN DE PLANTA TELEFÓNICA CON TECNOLOGIA ASTERISK

MATERIA: SEMINARIO DE ESPECIALIZACION

CATEDRATICO: ING. MANUEL FLORES

ESTUDIANTES:

CRISTIAN JAVIER AMAYA AGUILAR CARNET: AA01121087

GUILLERMO ANTONIO OSEGUEDA CARNET: OG01121492


INTRODUCCIÓN

El presente documento: “IMPLEMENTACIÓN DE UNA PLANTA TELEFÓNICA CON ASTERISK” se basa en las aplicaciones y funcionamientos de llamadas de vos sobre una red IP. El objetivo es de implementar una planta telefónica con Asterisk usando las tecnologías de software libre. Cabe mencionar que el montaje de la central telefónica IP será sobre una versión de GNU/Linux usando una máquina virtual la cual servirá como el servidor donde se conectaran los teléfonos IP, que en este caso usaremos smartphone con la aplicación zoiper instalada y configurada para que estos funcionen como sotfphone. Asterisk es un programa de código abierto cuya implantación en el sector de las comunicaciones se remonta a 1999. Su desarrollo continúo desde aquel momento, sus actualizaciones periódicas y sus más que contrastadas posibilidades le han convertido en el principal motor de las centralitas basadas en tecnología IP en todo el mundo. Creado originalmente como el motor de una centralita, el software Asterisk incluye todos los componentes necesarios para construir un sistema de comunicaciones potente y escalable. Asterisk se adapta a las necesidades de cualquier empresa, desde una pyme que necesite una centralita sencilla para coordinar las llamadas entrantes y salientes de una pequeña oficina hasta una gran compañía que necesite un Call Center de atención al cliente con cientos de operadores.

OBJETIVOS

GENERAL

  • Configurar una planta telefónica con opciones de call center, utilizando la tecnología de Asterisk en su versión 14.13.

ESPECÍFICOS

  • Obtener conocimiento de la tecnología Asterisk.
  • Conocer el protocolo utilizado en transmisión de voz sobre IP (VOIP).

MARCO TEÓRICO

Una central telefónica IP es un equipo telefónico diseñado para ofrecer servicios de comunicación a través de las redes de datos. A esta aplicación se le conoce como voz por IP (VoIP), donde la dirección IP (Internet Protocol) es la identificación de los dispositivos dentro de la web. Con los componentes adecuados se puede manejar un número ilimitado de anexos en sitio o remotos vía internet, añadir video, conectarle troncales digitales o servicios de VoIP (SIP trunking) para llamadas internacionales a bajo costo. Los aparatos telefónicos que se usan les llaman teléfonos IP o SIP y se conectan a la red. Además por medio de puertos de enlaces se le conectan las líneas normales de las redes telefónicas públicas, y anexos analógicos para teléfonos estándar (fax, inalámbricos, contestadoras, etc.). Pero para en esta ocasión lo que nosotros haremos es hacer uso de aplicaciones para teléfonos Android a estas aplicaciones se les llama softphone, y nos permitirá poder simular un teléfono SIP y a la vez nos ahorrara el gasto de cableado ya que al establecer una red wifi los teléfonos se podrán conectar al servidor de manera inalámbrica. Para las corporaciones internacionales que pueden contar con sistemas de punta, estas centrales se han convertido en un equipo indispensable. La apertura de sistemas operativos y software gratuitos han hecho proliferar muchas centrales IP algunos inclusive usan las PC´s como hardware. El tema de la seguridad es muy controversial en estos equipos, ya que al estar conectados a Internet tienen grandes posibilidades de ser atacados por hackers, virus, gusanos y demás. La implementación de una planta telefónica IP resuelta ser una de las opciones de solventar un problema en la comunicación ya que esta se basa en tecnologías que sirven para transmitir voces sobre una red de datos basada en el estándar IP. Con la implementación de una planta telefónica IP una organización o empresa reduce costo integrando sus aplicaciones de voz y datos sobre una única plataforma de red. Siendo esta una opción que servirá para elevar la productividad, reduciendo costos operativos en la organización o empresa mediante la convergencia de las comunicaciones, además de escalar las soluciones de acuerdo con las necesidades de las organizaciones o empresas que implementen esta herramienta de comunicación, siendo instituciones de corporativas medianas o pequeñas. Anteriormente los sistemas propietarios construían sistemas de telefonías supuestamente costosos e incompatibles, con rutinas muy complicadas, con códigos obsoletos y asociados con hardware obsoleto. Como ejemplo, Nortel Business Communications Manager kludges basado en VxWorks, sistema que trabaja en un conmutador telefónico, bajo un PC de 700-MHz Esta arquitectura se podría obtener en un rango entre 5 y 15 mil dólares, no incluyendo los teléfonos. El futuro de la tecnología telefónica va a desprenderse del imperio de las normas y la era de la libertad, para ello el software libre (Asterisk en este caso) converge hacia este tipo de soluciones, enfocándose por la revolución de código abierto. Los estándares abiertos permiten que cualquiera pueda implementar un sistema con garantías de interoperabilidad. Gracias a esa interoperabilidad de nuestro diseño no sólo podemos crear nuestra red telefónica, sino que, además, podemos conectarla a la red telefónica global.

MATERIALES

VIRTUAL BOX:

Oracle VM VirtualBox es un software de virtualización para arquitecturas x86/amd64. Actualmente es desarrollado por Oracle Corporation como parte de su familia de productos de virtualización. Por medio de esta aplicación es posible instalar sistemas operativos adicionales, conocidos como «sistemas invitados», dentro de otro sistema operativo «anfitrión», cada uno con su propio ambiente virtual. Entre los sistemas operativos soportados (en modo anfitrión) se encuentran GNU/Linux, Mac OS X, OS/2 Warp , Microsoft Windows, y Solaris/OpenSolaris, y dentro de ellos es posible virtualizar los sistemas operativos FreeBSD, GNU/Linux, OpenBSD, OS/2 Warp, Windows, Solaris, MS-DOS y muchos otros.

DEBIAN 9 (STRETCH):

Para esta práctica utilizaremos el sistema Debian en su versión 9, eso nos facilitara mucho el trabajo, ya que las versiones de Debian ya traen en sus repositorios la tecnología Asterisk.

ASTERISK:

Es un programa de software libre (bajo licencia GPL) que proporciona funcionalidades de una central telefónica (PBX). Como cualquier PBX, se puede conectar un número determinado de teléfonos para hacer llamadas entre sí dentro de una misma organización e incluso acceder a comunicaciones fuera de la misma a la PSTN o conectando a un proveedor de VoIP o bien a una RDSI tanto básicos como primarios.

CELULARES ANDROID:

Para este proyecto utilizaremos nuestros celulares de uso personal y con ayuda de aplicaciones especiales los utilizaremos como teléfonos IP.

SOFTPHONE:

Un softphone es un software que es utilizado para realizar llamadas a otros softphones o a otros teléfonos convencionales usando un VoIP (Voz sobre IP) o ToIP (Telefonía sobre IP), para esta practica utilizaremos Zoiper, X-Lite, 3CX Phone.

PUTTY:

Es un cliente SSH, Telnet, rlogin, y TCP raw con licencia libre. Disponible originalmente sólo para Windows, ahora también está disponible en varias plataformas Unix, y se está desarrollando la versión para Mac OS clásico y Mac OS X.

LAPTOP:

Utilizaremos nuestra laptop personal para convertirlo en un servidor, utilizando máquinas virtuales y softphone.

METODO

Diagrama2.jpeg

PROCESO

INSTALACIÓN Y CONFIGURACIÓN DE ASTERISK 13.14

Lo primero que tenemos que hacer para iniciar la instalación de nuestra central telefónica con asterisk es actualizar nuestro sistema, vale decir que para este proyecto utilizamos una máquina virtual donde instalamos Debian 9 stretch en su estructura de 64 bits, además, no se instaló un entorno gráfico, ya que no es necesario para la configuración que realizaremos.


#apt-get update

#apt-get upgrade


Con el primer comando actualizamos nuestra lista de paquetes, con el segundo instalamos todos los paquetes nuevos en nuestro sistema operativo. Ahora solo nos queda realizar la instalación de nuestra central telefónica, para ello ejecutamos el siguiente comando, también es de mencionar que todas las versiones de debían tienen disponible entre sus repositorios la plataforma Asterisk, por lo cual es muy fácil de instalar.


#apt-get install asterisk


Al ejecutar el comando se iniciara el proceso de instalación, se mostrara en pantalla todo el proceso, solamente debemos de ser pacientes, una vez termine la instalación nos dirigiremos a la siguiente ruta.


#cd /etc/asterisk


Cuando estemos en la ruta /etc/asterisk, hacemos un “ls” para ver todo los archivos que podemos editar de nuestra centralita telefónica, para esta práctica solamente necesitaremos editar los archivos asterisk.conf, sip.conf, extensions.conf, voicemail.conf y queues.conf.

CONFIGURACION ARCHIVO SIP.CONF

Para esta práctica se ha utilizado la configuración que trae por defecto el archivo sip.conf, solamente se eliminan todas las líneas que están comentadas, y solamente dejamos activas las siguientes opciones.

SIP.CONF.jpg

Ahora configuramos nuestros números telefónicos, esto siempre en el archivo sip.conf Lo primero que aremos será una macro, que contenga nuestra configuración por defecto para nuestras líneas telefónicas, para esto utilizamos el signo “!”, el nombre de nuestra macro será [tel]!.


[tel]!

Type = friend

Secret=12345

Host = dynamic

Insecure =port,invite

Context = users

Quality =yes


Ahora solo necesitamos definir los nombres o números que tendrán nuestras líneas telefónicas, para esta práctica utilizamos la siguiente configuración.


[100](tel) ;En este apartado definimos el nombre de la línea e invocamos la macro.

Callerid = “Teléfono 1”<100>; Definimos el nombre del usuario.

Mailbox = 100@default  ;En esta línea definimos el buzón de voz asociado.

[101](tel)

Callerid = “Teléfono 2”<101>

Mailbox = 101@default

[102](tel)

Callerid = “Teléfono 3”<102>

Mailbox = 102@default


CONFIGURACION ARCHIVO EXTENSIONS.CONF

Ahora vamos a configurar el plan de llamadas, para esto es importante el conocer el contexto en el cual hemos creado nuestras líneas, para esta práctica hemos definido el contexto “users”, para los usuarios normales y tenemos la siguiente información.


[users] ;Este es el contexto que definimos en el sip.conf.

Exten = _1XX,1,Dial(SIP/${EXTEN},10)

Exten = _1XX,n,Voicemail(${EXTEN}@default)

Exten = _1XX,n,Hangup()


Todas las líneas comienzan con “exten” son configuraciones del plan de llamadas, donde ponemos _1XX estamos incluyendo las líneas de la 100 a la 199. Con el comando Dial, definimos que puede llamar y recibir llamadas usando el protocolo SIP, es de aclarar que solo puede recibir llamadas de extensiones que estén en el mismo contexto. El comando Voicemail(${EXTEN}@default), estamos definiendo que al estar ocupada o no disponible la extensión los permitirá dejar un mensaje en su buzón de voz. Con Hangup(), simplemente cortamos la llamada.

CONFIGURACION ARCHIVO VOICEMAIL.CONF

En este archivo configuramos los buzones de voz que utilizaran nuestras líneas telefónicas, para esto se crea un contexto, el cual vemos relacionado cuando definimos nuestras extensiones y dialplan, en esta práctica el contexto que hemos creado es “default”, la configuración es la siguiente.


[default] ;Definimos el contexto en el cual funcionara nuestro buzón de voz.

100 => 12345, telefono1, tel@gmail.com

101 => 12345, telefono2, tel@gmail.com

102 => 12345, telefono3, tel@gmail.com


Lo primero que tenemos que hacer es definir el contexto, luego se agrega la línea o extensión a la cual se le creara el buzo de voz, a este se le introduce una contraseña, y el nombre del propietario de la línea, y al final su correo. Con estas simples líneas ya hemos definido nuestro buzón de voz, totalmente funcional.

CONFIGURACION DELA EXTENCION PARA ESCUCHAR EL BUZO DE VOZ

Las siguientes configuraciones se realizan en el archivo extensions.conf lo primero que aremos será definir una línea a la cual podamos llamar, para escuchar nuestros mensajes de voz, la configuración es la siguiente.


[buzon]

exten => 80,1,Answer()

exten => 80,n,VoiceMailMain(${CALLERID(num)}@default)

exten => 80,n,Hangup()

Luego solo tenemos que incluir el contexto [buzon] en los usuarios, para esto solamente colocamos la siguiente línea dentro del contexto [users].

Include = buzon


CONFIGURAR CALL CENTER EN NUESTRA CENTRAL TELEFONICA

Este apartado es el más complejo dentro de nuestra práctica, lo primero que tendremos que definir será las líneas que ocuparemos como agentes que recibirán las llamadas, esta configuración se realiza de la misma manera en la que definimos las líneas para los usuarios normales, solamente cambiamos el contexto, esto dentro del archivo sip.conf


[agent]!

type = friend

secret=12345

host=dynamic

insecure=port,invite

context=ivr-agents

quality=yes


[200](agent)

callerid="agente1"<200>

mailbox=200@default

[201](agent)

callerid="agente2"<201>

mailbox=201@default

[202](agent)

callerid="agente3"<202>

mailbox=202@default


Cuando ya tengamos definidos las líneas que utilizaremos como agentes pasamos a definir las colas, estas son de suma importancia, ya que son las que se encargaran de poner las llamadas en espera y de trasladar las llamadas a los agentes disponibles. La siguiente configuración se realiza en queues.conf


[general]

persistentmembers = yes

autofill = no

monitor-type = MixMonitor

updatecdr = no

shared_lastcall=no


En el contexto [general] de este archivo definimos la persistencia y el monitoreo. Luego de esto definimos todos los parámetros de nuestra cola, como la música de espera, el nombre de la cola, la cantidad de extensiones que puede tener en línea de espera, etc.


[Tecnicos]

musicclass = default

strategy = rrmemory

timeout = 10

retry = 1

timeoutpriority = app

wrapuptime=10

announce-frequency = 90

min-announce-frequency = 15

periodic-announce-frequency=60

random-periodic-announce=no

relative-periodic-announce=yes

announce-holdtime = once

announce-position = yes

announce-to-first-user = no

announce-position-limit = 5

announce-round-seconds = 10


De manera igual se definirían otras colas, solamente se le cambia el nombre a la cola, ahora vamos a logear a los agentes en las colas, para esto debemos de agregar las siguientes líneas en el archivo extensions.conf


;Logear a los agentes de la cola de SOPORTE

exten => *300,1,NoOp(metemos a un agente en la cola de Tecnicos)

same => n,Answer()

same => n,AddQueueMember(Tecnicos)

same => n,Playback(agenteregistrado)

same => n,HangUp()

exten => *301,1,NoOp(Sacamos a un agente de cola de Tecnicos)

same => n,Answer()

same => n,RemoveQueueMember(Tecnicos)

same => n,Playback(adios)

same => n,HangUp()


Con estas líneas agregamos y removemos a los agentes de la cola Tecnicos, para agregar a un agente solamente necesitamos llamar a la línea *300 y cuando ya no estaremos en tal cola solamente marcamos a la extensión *301.

Ahora solo nos faltaría crear el menú para que los usuarios marquen y se dirijan según sus necesidades al departamento y cola de llamada que necesiten, para esto agregamos las siguientes líneas siempre en el archivo extensions.conf


[ivr-menu]

exten => 900,1,Answer()

exten => 900,n,Wait(6)'

exten => 900,n,Record(agenteregistrado.gsm)

exten => 900,n,Wait(2)

exten => 900,n,Playback(agenteregistrado)

exten => 900,n,Hangup()

exten => 777,1,Answer()

exten => 777,n,Goto(s,1)

exten => s,1,Answer()

exten => s,n,Wait(1)

exten => s,n,Background(menu-ivr2)

exten => s,n,WaitExten(7)

exten => s,n,PlayBack(adios)

exten => s,n,Hangup()

exten => 1,1,Queue(Tecnicos)

exten => 2,1,Queue(Ventas)

exten => 3,1,Queue(Humanos)

exten => *,1,Goto(s,1)

exten => i,1,PlayBack(pbx-invalid)

exten => i,n,Goto(s,1)


Con las primeras líneas, cuando marcamos a la extensión 900 vamos a gravar el menú de que escuchara el usuario cuando llame a nuestra call center. Al llamar a la extensión 777 entraremos a la contestadora de nuestro call center, al escuchar el menú, el usuario puede elegir a que departamento dirigirse y a partir de esa decisión, entrara en una de las colas que hemos definido. Ahora ya tenemos configuradas las extensiones, el plan de llamadas, el buzón de voz y las colas de llamadas.


CONFIGURAR EL IDIOMA

Por defecto todas las voces de asterisk están en inglés, pero las podemos cambiar a español de una manera muy sencilla, solamente debemos de conocer la ruta en la cual se guardan las voces de nuestro asterisk, la ruta para esta versión es la siguiente.


#cd /usr/share/asterisk/sounds/


Una vez estemos en la ruta anterior ejecutamos un “ls” para ver los idiomas que tenemos disponibles. Sound.jpg

Podemos identificar el idioma que tenemos en nuestra central telefónica observando los diferentes directorios, por ejemplo, vemos que en este momento solo tenemos disponible el idioma inglés que se identifica con “en” “en_US” la fuente o core es el inglés de Estados Unidos, ahora instalaremos el idioma español, ejecutamos el siguiente comando.


#apt-cache search asterisk sounds


Al ejecutar el comando podemos ver todos los paquetes de sonidos que tenemos disponibles en los repositorios de debían para nuestra central telefónica.

Sound2.jpg

Ahora que ya tenemos identificados los nombres de los paquetes que necesitamos, los instalamos con el siguiente comando.


#apt install asterisk-core-sounds-es asterisk-core-sounds-es-g722 asterisk-core-sounds-es-gsm asterisk-core-sounds-es-wav


Ahora que ya tenemos instalados los paquetes que deseamos, lo verificamos haciendo un “ls” en la carpeta donde se almacenan los sonidos de asterisk, se mostrara algo como lo siguiente.

Sound3.jpg

Cuando ya tenemos los paquetes instalados, solamente debemos de configurar nuestra central telefónica para que tome los paquetes “es” y “es_MX”, para eso editamos el archivo asterisk.conf y modificamos el apartado “defaultlanguage” y “documentation_language”.

Sound4.jpg

Y con esto ya tendríamos configurados los sonidos en español.