VoIP2DAY 2011 · 2011

Profundizando en el Manager de Asterisk

Profundizando en el Manager de Asterisk™ Elio Rojano http://www.sinologic.net/ Qué es el Manager (AMI) Elio Rojano http://www.sinologic.net/ Qué es el Manager (AMI) AMI : Asterisk Manager Interface Manager > Gestión…

Presentación sobre Asterisk, desarrollo impartida en VoIP2DAY 2011 · 2011.

Asterisk, desarrollo 📄 62 páginas ⏱ 9 min de lectura 👁 3 vistas

Este PDF no está enlazado desde ningún artículo publicado.

Página 1 — Profundizando en el Manager de Asterisk

Página 1 de 62

Profundizando en el Manager de Asterisk™ Elio Rojano http://www.sinologic.net/

Página 2 — Profundizando en el Manager de Asterisk

Página 2 de 62

Qué es el Manager (AMI) Elio Rojano http://www.sinologic.net/

Página 3 — Profundizando en el Manager de Asterisk

Página 3 de 62

Qué es el Manager (AMI) AMI : Asterisk Manager Interface Manager > Gestión > Interfaz de Gestión de Asterisk Permite manejar Asterisk desde una aplicación externa Es un ‘entorno’ de comunicación con una aplicación Elio Rojano http://www.sinologic.net/

Página 4 — Profundizando en el Manager de Asterisk

Página 4 de 62

Qué es el Manager (AMI) No está orientado al usuario, si no a aplicaciones Nos permite enviar comandos y recibir eventos Actuar, Monitorizar e Intermediar en tiempo real Está basado en la idea del TAPI (aunque 1000 veces mejor) Elio Rojano http://www.sinologic.net/

Página 5 — Profundizando en el Manager de Asterisk

Página 5 de 62

Qué es el Manager (AMI) No es difícil aprender a utilizarlo.

Nos permite desarrollar aplicaciones que interaccione con nuestro Asterisk.

Toda aplicación que se utilice con Asterisk, debería hacerlo utilizando el Manager.

Elio Rojano http://www.sinologic.net/

Página 6 — Profundizando en el Manager de Asterisk

Página 6 de 62

Tecnicismos del Manager Elio Rojano http://www.sinologic.net/

Página 7 — Profundizando en el Manager de Asterisk

Página 7 de 62

Tecnicismos del Manager El AMI es un puerto TCP (por defecto el 5038) Toda la información se transmite en texto plano.

Perfectamente estructurada (ideal para parsear) Por seguridad, también puede ir cifrada “TLS / SSL” Es un puerto muy importante, así que CUIDADO!!!

Elio Rojano http://www.sinologic.net/

Página 8 — Profundizando en el Manager de Asterisk

Página 8 de 62

Tecnicismos del Manager Una vez conectado, debemos ver la versión.

Asterisk Call Manager/1.x En Asterisk 1.4, pasó por una pequeña crisis.

El Manager de 1.6.x, 1.8 y Asterisk 10 son estables Elio Rojano http://www.sinologic.net/

Página 9 — Profundizando en el Manager de Asterisk

Página 9 de 62

Tecnicismos del Manager Asterisk 1.6.2, 1.8 y 10, el Manager soporta TLS y SSL La instalación no puede ser más sencilla.

Elio Rojano http://www.sinologic.net/

Página 10 — Profundizando en el Manager de Asterisk

Página 10 de 62

Tecnicismos del Manager mkdir -p /etc/asterisk/keys cd /usr/src/asterisk/contrib/scripts ./ast_tls_cert -C voip2day11.sinologic.net -O "Sinologic" -d /etc/asterisk/keys Elio Rojano http://www.sinologic.net/

Página 11 — Profundizando en el Manager de Asterisk

Página 11 de 62

Tecnicismos del Manager El archivo /etc/asterisk/manager.conf [general] enabled = yes webenabled = no port = 5038 bindaddr = 0.0.0.0 timestampevents = yes displayconnects = no tlsenable = yes tlsbindport = 5039 tlsbindaddr = 0.0.0.0 tlscertfile= /etc/asterisk/keys/asterisk.pem Elio Rojano http://www.sinologic.net/

Página 12 — Profundizando en el Manager de Asterisk

Página 12 de 62

Tecnicismos del Manager Y para conectarnos… un poco de #!/usr/bin/php <?php $sock = fsockopen("tls://localhost",5039); if ($sock){ $salida=fgets($sock,1024); print_r($salida); Elio Rojano http://www.sinologic.net/

Página 13 — Profundizando en el Manager de Asterisk

Página 13 de 62

Cómo funciona el Manager Elio Rojano http://www.sinologic.net/

Página 14 — Profundizando en el Manager de Asterisk

Página 14 de 62

Cómo funciona el Manager El Manager se encuentra en el Core de Asterisk™.

Por sí solo no permite hacer nada. Los comandos y los eventos se encuentran en sus módulos:

Ejemplo: Comando Originate se encuentra en app_dial.so Elio Rojano http://www.sinologic.net/

Página 15 — Profundizando en el Manager de Asterisk

Página 15 de 62

Cómo funciona el Manager Comandos Elio Rojano http://www.sinologic.net/

Página 16 — Profundizando en el Manager de Asterisk

Página 16 de 62

Cómo funciona el Manager Eventos Elio Rojano http://www.sinologic.net/

Página 17 — Profundizando en el Manager de Asterisk

Página 17 de 62

Cómo funciona el Manager

SIP/200

SIP/201

Evento Dial Manager Elio Rojano http://www.sinologic.net/ Event: Dial Privilege: call,all Source: SIP/200-2dbf Destination: SIP/201-4c21 CallerID: 200 CallerIDName: Elio Rojano SrcUniqueID: 1149161705.2 DestUniqueID: 1149161705.4

Página 18 — Profundizando en el Manager de Asterisk

Página 18 de 62

Cómo funciona el Manager

SIP/200

SIP/201

Comando Dial Action: Originate Channel: SIP/200 Context: internas Exten: 201 Priority: 1 Callerid: “Elio Rojano” <200> Timeout: 30000 Elio Rojano http://www.sinologic.net/

Página 19 — Profundizando en el Manager de Asterisk

Página 19 de 62

Conectándonos al Manager Elio Rojano http://www.sinologic.net/

Página 20 — Profundizando en el Manager de Asterisk

Página 20 de 62

Conectándonos al Manager Necesitamos: Usuario Contraseña Permisos para recibir eventos y enviar comandos Elio Rojano http://www.sinologic.net/

Página 21 — Profundizando en el Manager de Asterisk

Página 21 de 62

Conectándonos al Manager [test] secret = test deny = 0.0.0.0/0.0.0.0 permit = 127.0.0.1/255.255.255.0 read = call,reporting,command write = call,reporting,command Elio Rojano http://www.sinologic.net/

Página 22 — Profundizando en el Manager de Asterisk

Página 22 de 62

Conectándonos al Manager system - Información general sobre el sistema y ejecutar comandos básicos como “Reload”, “Shutdown”, “Restart”, etc.

call - Información sobre canales ya existentes.

verbose - Información de lo que se ve en la consola. (solo eventos).

agent - Información sobre agentes y colas y manipular estados de estos.

user - Permite enviar y recibir eventos personalizados: UserEvent.

config - Permiten leer y escribir archivos de configuración de Asterisk.

command - Permiten ejecutar comandos de la consola CLI. (solo comandos).

dtmf - Recepción de tonos DTMF. (solo eventos).

reporting - Permiten obtener información sobre llamadas y sistema.

cdr - Información sobre el contenido del CDR tras una llamada (solo eventos).

dialplan - Permiten recibir las líneas del dialplan que se ejecutan (solo eventos).

originate - Permiten realizar llamadas. (solo comando).

Elio Rojano http://www.sinologic.net/

Página 23 — Profundizando en el Manager de Asterisk

Página 23 de 62

Conectándonos al Manager La conexión se puede hacer desde cualquier lenguaje.

Tan solo hay que conectarse vía TCP. Se utiliza el comando: Login Ya hemos visto un ejemplo en PHP <?php $sock = fsockopen("localhost",5038); if ($sock){ $salida=fgets($sock,1024); print_r($salida); Elio Rojano http://www.sinologic.net/

Página 24 — Profundizando en el Manager de Asterisk

Página 24 de 62

Conectándonos al Manager Pero también lo podemos hacer sin utilizar ninguna aplicación, en la consola de Linux.

exec 3<>/dev/tcp/localhost/5038 && echo -e "Action: Login nUsername:testnSecret:testnEvents: offnnAction: Command nCommand: sip show peersnnAction: Logoffnn" >&3 && cat <&3 Que devolvería algo como esto:

Response: Follows Privilege: Command Name/username Host Dyn Forcerport ACL Port Status 200 (Unspecified) D 0

UNKNOWN

201 (Unspecified) D 0

UNKNOWN

2 sip peers [Monitored: 0 online, 2 offline Unmonitored: 0 online, 0 offline]

--END COMMAND--

Elio Rojano http://www.sinologic.net/

Página 25 — Profundizando en el Manager de Asterisk

Página 25 de 62

Conectándonos al Manager Incluso podemos utilizar el comando Telnet:

telnet localhost 5038 Trying 127.0.0.1...

Connected to localhost. Escape character is '^]'.

Asterisk Call Manager/1.1 Action: Login Username: test Secret: test Events: off Escrito por nosotros o nuestra aplicación Enviado por el Manager Response: Success Message: Authentication accepted Action: Command Command: sip show peers Response: Follows Privilege: Command Name/username Host Dyn Forcerport ACL Port Status 200 (Unspecified) D 0

UNKNOWN

201 (Unspecified) D 0

UNKNOWN

2 sip peers [Monitored: 0 online, 2 offline Unmonitored: 0 online, 0 offline] --END COMMAND-Action: Logoff Response: Goodbye Message: Thanks for all the fish.

Elio Rojano http://www.sinologic.net/

Página 26 — Profundizando en el Manager de Asterisk

Página 26 de 62

Ejemplos básicos Elio Rojano http://www.sinologic.net/

Página 27 — Profundizando en el Manager de Asterisk

Página 27 de 62

Ejemplos básicos Si utilizamos eventos, podemos crearnos una aplicación que busque todos los eventos Bridge y Hangup para mostrar las llamadas que hay en curso en tiempo real.

Un sencillo monitor de llamadas se puede hacer en muy poco tiempo.

Elio Rojano http://www.sinologic.net/

Página 28 — Profundizando en el Manager de Asterisk

Página 28 de 62

Ejemplos básicos Elio Rojano http://www.sinologic.net/

Página 29 — Profundizando en el Manager de Asterisk

Página 29 de 62

Ejemplos básicos Elio Rojano http://www.sinologic.net/

Página 30 — Profundizando en el Manager de Asterisk

Página 30 de 62

Ejemplos básicos Elio Rojano http://www.sinologic.net/

Página 31 — Profundizando en el Manager de Asterisk

Página 31 de 62

Ejemplos básicos Elio Rojano http://www.sinologic.net/

Página 32 — Profundizando en el Manager de Asterisk

Página 32 de 62

Ejemplos básicos Elio Rojano http://www.sinologic.net/

Página 33 — Profundizando en el Manager de Asterisk

Página 33 de 62

Ejemplos básicos Elio Rojano http://www.sinologic.net/

Página 34 — Profundizando en el Manager de Asterisk

Página 34 de 62

Ejemplos básicos Elio Rojano http://www.sinologic.net/

Página 35 — Profundizando en el Manager de Asterisk

Página 35 de 62

Ejemplos básicos Elio Rojano http://www.sinologic.net/

Página 36 — Profundizando en el Manager de Asterisk

Página 36 de 62

Ejemplos básicos Elio Rojano http://www.sinologic.net/

Página 37 — Profundizando en el Manager de Asterisk

Página 37 de 62

Ejemplos básicos Elio Rojano http://www.sinologic.net/

Página 38 — Profundizando en el Manager de Asterisk

Página 38 de 62

Ejemplos básicos Todas las llamadas se inician con el evento Bridge y finalizan con eventos Hangup.

Si hay transferencias (de cualquier tipo) también se muestran con eventos Redirect o Transfer.

Si hay pulsación de DTMF también se muestran con eventos.

Si hay … cualquier cosa que ocurra, se muestra con eventos… Por lo tanto podemos monitorizarlo todo.

Elio Rojano http://www.sinologic.net/

Página 39 — Profundizando en el Manager de Asterisk

Página 39 de 62

Ejemplos básicos Podemos utilizar los comandos de un callcenter para monitorizar una cola sin problemas:

Llamadas en espera, llamadas contestadas, agentes ocupados, agentes disponibles, tiempo medio de contestación, y un largo etcétera.

O bien utilizar el Manager para loguear agentes, pausarlos, desloguearlos, insertarlos en una cola o en otra, etc… Redireccionar la llamada entrante cuando queramos al punto del dialplan que queramos… Elio Rojano http://www.sinologic.net/

Página 40 — Profundizando en el Manager de Asterisk

Página 40 de 62

Ejemplos básicos Todo esto simplemente pulsando un botón en una aplicación que se conecte al Manager.

Elio Rojano http://www.sinologic.net/

Página 41 — Profundizando en el Manager de Asterisk

Página 41 de 62

Más ejemplos básicos Elio Rojano http://www.sinologic.net/

Página 42 — Profundizando en el Manager de Asterisk

Página 42 de 62

Más ejemplos básicos Un interfaz web de gestión: GUI, se basa en modificar la configuración de Asterisk.

Puede hacerlo utilizando “RealTime” o bien “archivos de configuración”.

Elio Rojano http://www.sinologic.net/

Página 43 — Profundizando en el Manager de Asterisk

Página 43 de 62

Más ejemplos básicos Si utiliza RealTime, cualquier cambio que efectúe en la base de datos, se llevará a cabo instantáneamente.

Si utiliza “archivos de configuración”, hay que modificar el contenido y recargar dicha información.

El Manager nos ofrece herramientas para modificar esta configuración sin tener que acceder localmente al sistema.

Elio Rojano http://www.sinologic.net/

Página 44 — Profundizando en el Manager de Asterisk

Página 44 de 62

Más ejemplos básicos CreateConfig: Creates an empty file in the configuration directory (Priv:

config,all) UpdateConfig: Updates a configuration file, used mainly by AJAM/Asterisk-gui.

(Privilege: config,all) ListCategories: List categories in configuration file (Priv: config,all) GetConfig: Retrieve configuration (Priv: system,config,all) GetConfigJSON: Retrieve configuration (JSON format) (Priv: system,config,all) etc...

Elio Rojano http://www.sinologic.net/

Página 45 — Profundizando en el Manager de Asterisk

Página 45 de 62

Más ejemplos básicos Con estos comandos, se pueden crear y modificar archivos de configuración utilizando un interfaz web que utilice el Manager.

Asterisk-DEV™ ya hizo una prueba de concepto llamada Asterisk-GUI que utilizaba el Manager a través de Ajax.

Para ello inventaron el AJAM: (Asyncronous Javascript Asterisk Manager) Un servidor web que aceptaba peticiones JSON para enviar comandos al Manager.

Elio Rojano http://www.sinologic.net/

Página 46 — Profundizando en el Manager de Asterisk

Página 46 de 62

Más ejemplos básicos AJAM aún no ha tenido mucha aceptación, pero la idea es muy buena.

Objetivo: aumentar la seguridad, evitando tener acceso local al sistema. Utilizando TLS/SSL. Modificando la configuración directamente desde el Manager sin acceso a los archivos.

Posibilidad de utilizar WebSocket HTML5 para la conexión remota desde el propio navegador.

Elio Rojano http://www.sinologic.net/

Página 47 — Profundizando en el Manager de Asterisk

Página 47 de 62

Haciendo un interfaz web Elio Rojano http://www.sinologic.net/

Página 48 — Profundizando en el Manager de Asterisk

Página 48 de 62

Haciendo un interfaz web Los interfaces suelen ser la cara del sistema para el usuario final.

FreePBX es el más completo (de los interfaces libres), pero eso no significa que sea el mejor.

La mayoría de las funciones de un interfaz como FreePBX son innecesarias para un usuario final.

Elio Rojano http://www.sinologic.net/

Página 49 — Profundizando en el Manager de Asterisk

Página 49 de 62

Haciendo un interfaz web ¿Un comercio debe saber qué es un Trunk SIP? ¿Qué protocolo debe configurar? ¿A qué puerto debe conectarse el teléfono?

Para ofrecerle un interfaz web a un usuario final, ¿es necesario que el integrador también se vea obligado a utilizarlo?

Elio Rojano http://www.sinologic.net/

Página 50 — Profundizando en el Manager de Asterisk

Página 50 de 62

Haciendo un interfaz web Con un tiempo mínimo, podemos crearnos nuestro propio interfaz web adaptado a las necesidades de nuestros clientes.

Elio Rojano http://www.sinologic.net/

Este PDF tiene 62 páginas. Se muestran las primeras 50.

Regístrate para descargar el PDF completo