https://a.storyblok.com/f/270183/1368x665/61f7aeead8/build-your-own-call-center_asterisk-sip-trunking.png

Cree su propio centro de llamadas con Asterisk y SIP Trunking de Vonage

Publicado el October 30, 2024

Tiempo de lectura: 5 minutos

Introducción

Los centros de llamadas son un aspecto importante de cualquier negocio que implique la comunicación con el cliente. Para las pequeñas y medianas empresas, los centros de llamadas pueden alojarse internamente para ahorrar costes de alojamiento en la nube y reducir la latencia de la red entre el servidor y los agentes del centro de llamadas. Además, proporciona un control total sobre todas las operaciones y permite gestionar y realizar cambios sin complicaciones.

En este artículo, vamos a configurar una versión minimalista de un centro de llamadas para marcar y recibir llamadas con unos requisitos mínimos.

Arquitectura

SIP Trunking es un método de prestar servicios telefónicos y comunicaciones unificadas a los clientes utilizando Internet en lugar de las líneas telefónicas tradicionales. SIP Trunking permite a las empresas sustituir las líneas PRI (Primary Rate Interface) tradicionales y utiliza VoIP (Voice over Internet Protocol) para gestionar sus comunicaciones a un coste mucho menor.

SIP Trunking requiere un proveedor de troncales SIP (por ejemplo, Vonage) que esté conectado a un sistema IP-PBX (por ejemplo, Asterisk) para gestionar las llamadas VoIP. El sistema IP-PBX puede instalarse y alojarse internamente sin ninguna complicación. Para hacer una llamada telefónica, un softphone (por ejemplo, Zoiper) instalado en un ordenador se conecta a un sistema IP-PBX con un número de extensión dedicado y credenciales de autenticación. Todo este sistema puede visualizarse en el siguiente diagrama:

Diagram of the architecture to implement the call center using Asterisk and Vonage SIP trunkingFig-1.1 Sip trunking architecture overview

Requisitos previos

Para configurar una solución completa de centro de llamadas interno, se necesitarán algunas cosas que facilitarán el proceso de instalación y configuración.

En primer lugar, necesitarás obtener una clave de API y un número de marcación entrante directa (DID) de Vonage. Vonage es un proveedor líder de comunicaciones que ofrece a los desarrolladores acceso a API para enviar voz, Video y mensajes con funciones avanzadas como controles de fraude e identidad.

Por abrir una Account gratuitatendrá acceso a créditos gratuitos y a una sencilla documentación para usar las API de Vonage.

Una vez completado el registro, proceda a adquirir un número de marcación directa entrante (DID) con tu código de país preferido. Esto también se conoce como número virtual largo (LVN) de Vonage y ayuda a las empresas a expandir su presencia local.

Además, necesitarás un servidor Linux, preferiblemente Debian o Ubuntu, para alojar la instalación de Asterisk. Asterisk puede instalarse con un sistema que tenga una CPU x86 de 1 GHz y 512 MB de RAM, pero para un mejor rendimiento, se recomienda una CPU de 3 GHz y 1 GB de RAM.

Para que las llamadas VoIP tengan éxito, es necesario abrir los siguientes puertos en el cortafuegos:

  • SIP: 5060 (UDP)

  • RTP: 10000 a 20000 (UDP)

Hay algo más opcional, pero lo recomendable es obtener un nombre de dominio o una dirección IP estática. Este nombre de dominio o dirección IP estática siempre apuntará al servidor Asterisk para desviar las llamadas fácilmente. Si no tienes un nombre de dominio o una dirección IP estática, puedes probar otras opciones posibles como DynDNS o Duck DNS

Vonage API Account

To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.

Configurar Asterisk

Instalar el servidor Asterisk

El servidor Asterisk es muy ligero y tiene requisitos mínimos de hardware en un servidor Linux. He aquí un breve resumen de comandos para instalar el servidor Asterisk en Debian 11 (bullseye):

sudo apt update # updates the package list from the repositories
sudo apt install wget build-essential subversion # install essential tools
cd /usr/src
sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz # download asterisk
sudo tar -xvf asterisk-18-current.tar.gz # extract files
# following set of commands will compile and install asterisk
# with example configuration files
cd asterisk-18*/
sudo contrib/scripts/install_prereq install
sudo ./configure
sudo make
sudo make install
sudo make samples
sudo make config # start asterisk automatically when system boots
sudo ldconfig # updates the system's shared library cache
sudo systemctl start asterisk # starts asterisk service
sudo systemctl enable asterisk # auto-start asterisk at boot time

Configurar el servidor Asterisk

Inicia sesión en tu cuenta de SIP Trunking de Vonage para obtener la clave API, por ejemplo, Master (c85.....), y el secreto API que se usará como nombre de usuario y contraseña SIP. Para el servidor SIP (proxy), consulta la documentación para elegir el punto final más cercano a su ubicación (por ejemplo, sip-eu-3.vonage.com).

Para conectarte al punto final SIP de Vonage, accede mediante SSH al servidor Asterisk y agrega la siguiente configuración SIP en /etc/asterisk/sip.conf:

[general]
  context=public
  allowguest=no
  udpbindaddr=0.0.0.0
  tcpenable=no
  transport=udp
  srvlookup=yes
  nat=force_rport,comedia
  register => SIP_USERNAME:SIP_PASSWORD@ip.nexmo.com

[outbound]
  type=friend
  context=from-internal
  host=sip-eu-3.vonage.com
  username=SIP_USERNAME
  secret=SIP_PASSWORD
  insecure=port,invite
  canreinvite=no
  disallow=all
  allow=ulaw
  nat=force_rport,comedia

Sustituya SIP_USERNAME y CONTRASEÑA_SIP con tus credenciales de Vonage.

El siguiente paso es añadir un plan de marcación, que permitirá a los usuarios conectarse a Asterisk y empezar a hacer llamadas salientes. Para ello, edita /etc/asterisk/extensions.conf:

[globals]
  TRUNK=SIP/outbound

[from-internal]
; Extension for making an outgoing call
exten => _9.,1,NoOp(Outgoing call through SIP trunk)
 same => n,Dial(${TRUNK}/${EXTEN:1})
 same => n,Hangup()

En este ejemplo:

  • La dirección globales define una variable global TRONCAL que apunta a la troncal SIP de salida definida en sip.conf.

  • El interno se utiliza para las extensiones que realizan llamadas salientes.

  • El patrón _9. coincide con cualquier número que empiece por 9 y vaya seguido de uno o más dígitos. Se suele utilizar para diferenciar entre llamadas internas y externas.

  • ${EXTEN:1} elimina el 9 inicial antes de enviar el número al troncal SIP.

Configurar Softphone

Configurar un softphone requiere tanto la configuración del servidor como la del cliente. Primero, vamos a añadir un usuario de softphone con extensión '1001' añadiendo la siguiente configuración en /etc/asterisk/sip.conf😀

[1001]
  type=friend
  context=from-internal
  host=dynamic
  secret=yourpassword
  disallow=all
  allow=ulaw
  nat=force_rport,comedia

Reinicie Asterisk para aplicar todos los cambios utilizando sudo systemctl restart asterisk .

Para configurar el cliente, descargue un softphone como Zoiper o linphone. Una vez completada la descarga, ejecute el instalador en su ordenador e inicie el softphone. En el siguiente ejemplo, estamos utilizando la aplicación de escritorio Zoiper como cliente. Para registrar el softphone Zoiper con el servidor Asterisk, introduzca 1001 como nombre de usuario, seguido de sucontraseña

Zoiper configuration wizard to set up a username and passwordFig-5.1 Zoiper username and passwordA continuación, indique la dirección IP local del servidor Asterisk (normalmente empieza por 192.168.x.x)

The Zoiper configuraiton wizard to stablish the hostname (IP)Fig-5.2 Zoiper IP configurationHaga clic en omitir para otras opciones y finalmente se mostrará Zoiper cliente está conectado:


The screen shows the main screen of ZoiperFig-5.3 Zoiper main screen
Para probar la configuración de la llamada saliente, marque un número prefijado con 9, por ejemplo, para marcar 18012312312, marcaría 918012312312

Configurar el desvío de llamadas

Hasta ahora hemos configurado nuestro softphone para marcar llamadas salientes. Para comenzar a recibir llamadas en el softphone, debemos configurar el número de marcación entrante directa (DID) proporcionado por Vonage, o a veces denominado número virtual largo (LVN), para recibir llamadas entrantes y reenviarlas a la URI SIP alojada en el servidor Asterisk.

Para ello, vaya a Panel de Numbers y edita el número para ver la ventana de configuración. En la ventana de configuración, seleccione SIP en la opción Reenviar. e introduzca el URI SIP que está alojado en el servidor Asterisk y haga clic en "Guardar".

The image shows the dialog of the Vonage dashboard to set up a voice call forwardingFig-6.1 Vonage Voice Forwarding

Una vez guardada la configuración, las llamadas se desviarán automáticamente al servidor Asterisk. Aquí necesitamos editar /etc/asterisk/extensions.conf para describir que extensión manejará las llamadas entrantes. En este ejemplo, estamos desviando las llamadas entrantes al agente con extensión 1001.

[provider]
exten => _X.,1,NoOp(Someone is calling from provider)  ; dial any number
same => n,Answer()
same => n,Wait(1)
same => n,Dial(SIP/1001,30,r)

Reinicie Asterisk para aplicar todos los cambios utilizando sudo systemctl restart asterisk . A partir de ahora, si una persona que llama marca el número LVN (como se describe en la Fig-6.1), la llamada será desviada al agente del centro de llamadas con la extensión 1001 utilizando el softphone.

The image shows Zoiper receiving a phone callFig-6.2 Testing the call center

Configuración adicional

Aunque no se trata aquí, es posible habilitar más configuraciones si es necesario. Por ejemplo, grabación de llamadas, sistema IVR, supervisión e informes. Todas estas funciones se activan mediante planes de marcación. Para más detalles, por favor consulte documentación de Asterisk.

Conclusión

En este artículo, hemos instalado y configurado con éxito una versión minimalista de Asterisk con la capacidad de manejar llamadas así como hacer llamadas salientes. Esta configuración del servidor se puede ampliar para añadir funciones adicionales sin problemas. Para utilizar la máxima eficiencia de los servicios SIP, es muy recomendable visitar la solución elástica de SIP Trunking que ofrece Vonage.

Ponte en contacto

¿Tienes preguntas o comentarios sobre este tutorial? Comparte tus opiniones con nosotros en Twitter) o en nuestro canal Slack de la comunidad de Vonage citando este artículo para obtener una respuesta rápida. También puedes conectar conmigo conmigo en Twitter.

¡Buena suerte y feliz SIP Trunking!


Compartir:

https://a.storyblok.com/f/270183/400x400/620f535ce9/atique-khan.jpg
Atique Khan

Atique is a computer graduate and proficient Python developer with a passion for exploring new technologies. With a strong background in programming and system engineering, he holds over 10 years of experience in automation, testing, and integration. His interests span single-board computers, software-defined radios, and continuous experimentation with generative AI tools.