Servidor FastAGI - iperfex-team/webinar_irv_con_esteroides_en_asterisk GitHub Wiki

Arquitectura

Webinar hands-on de cómo desarrollar aplicaciones a través del dialplan de Asterisk con FastAGI. Se mostrará además un ejemplo práctico de cómo desarrollar un IVR utilizando FASTAGI.

Para ellos vamos a utilizar :

La distro Issabel (issabel.org), con su motor de PBX Asterisk y que tendrá un deploy en una maquina virtual. Issabel nos permite interconectarnos con la PSTN, registrar troncales, internos (anexos) con softphones o webphones, etc.

Contenedor Docker en Debian con FASTAGI, que permite la comunicación con sistemas terceros en forma directa. Con FASTAGI el proceso se establece a través de una conexión TCP/IP y de esta forma es posible liberar los recursos de la máquina Asterisk (Issabel) de forma bastante eficiente.

Nota: La diferencia entre AGI (Asterisk Gateway Interface, sirve de pasarela entre los distintos lenguajes de programación y Asterisk) y FASTAGI es que el proceso se ejecuta en otra maquina o contenedor a través de comunicaciones TCP/IP, liberando los recursos que son cruciales para IVRs o aplicaciones que tengan muchos impactos.

estructura

Pantalla de inicio de Debian.

debian_console.png

Nos logueamos con el usuario que creamos.

Paquetes instalados

Lista de paquetes a instalar:

  • vim
  • curl
  • screen
  • mc
  • git
  • unzip
  • net-tools
  • links2
  • sudo
  • nmap
  • make
  • mycli
  • docker
  • docker-compose
  • nfs-kernel-server

Ejecutamos los siguientes comandos.

apt update
apt -y install vim curl screen mc git unzip net-tools links2 sudo nmap make mycli nfs-kernel-server

Acceso ssh con root (por default esta desactivado)

sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
/etc/init.d/ssh restart

Instalando Docker

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
sudo usermod -aG docker TU_USUARIO
docker info

Customización docker

cat > /etc/docker/daemon.json <<ENDLINE
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m"
  }
}
ENDLINE

Instalado docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Personalizando el Prompt

> /root/.bashrc && vim /root/.bashrc

Pegamos lo siguiente:

# ~/.bashrc: executed by bash(1) for non-login shells.

# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
PS1='\[\033[1;36m\]\u\[\033[1;31m\]@\[\033[1;32m\]\h:\[\033[1;35m\]\w\[\033[1;31m\]\$\[\033[0m\] '
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
# umask 022

# You may uncomment the following lines if you want `ls' to be colorized:
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'

#
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'

export HISTTIMEFORMAT="%d/%m/%y %T "

export LC_CTYPE=C
export LC_MESSAGES=C
export LC_ALL=C

clonamos repositorio GIT y desplegamos Deploy

cd /root/ 
git clone https://github.com/iperfex-team/webinar_irv_con_esteroides_en_asterisk.git
cd /root/webinar_irv_con_esteroides_en_asterisk/
docker-compose up -d

Configuración Servidor NFS (para compartir los audios)

vim /etc/exports

/root/webinar_irv_con_esteroides_en_asterisk/audio        172.16.0.57(rw,sync,no_root_squash,no_subtree_check)

restart servicio

sudo systemctl restart nfs-kernel-server