View
238
Download
1
Embed Size (px)
Citation preview
7/30/2019 Introduccion a La VoIP y Asterisk
1/286
http://www.irontec.com
Introduccin a la VoIP yAsterisk
irontec
Irontec VoIP
http://www.irontec.com
mailto:[email protected]:[email protected]7/30/2019 Introduccion a La VoIP y Asterisk
2/286
Curso: Introduccin a la VoIP y Asterisk
2
Antes de empezar
Conocimientos previos recomendados: Manejo bsico de la consola de GNU/Linux. Inters Ganas de aprender C
8
H10
N4
O8
Qu sabes de Asterisk? Lo has utilizado?
Qu intenciones de uso tienes?
7/30/2019 Introduccion a La VoIP y Asterisk
3/286
Introduccin
7/30/2019 Introduccion a La VoIP y Asterisk
4/286
Curso: Introduccin a la VoIP y Asterisk
4
Conceptos bsicos sobre telefona tradicional
Telefona Tradicional
Telfono Inventado en 1876 por AntonioMeucci (atribuido a Alexander Graham Bellhasta el 2002).
Idea principal: Hacer audible la palabra hablada a largas
distancias
Originalmente: Transmisin sobre un hilo dehierro, comunicacin punto a punto.
Hoy en da: 1000 millones de telfonosrepartidos por todo el mundo.
7/30/2019 Introduccion a La VoIP y Asterisk
5/286
Curso: Introduccin a la VoIP y Asterisk
5
Conmutacin de circuitos
La telefona tradicional se basaba enconmutacin de circuitos.
Desde el comienzo hasta el final de unallamada se estableca un camino fsico. Consumo de recursos.
Inicialmente -> redes totalmente malladas 0% escalable. Cambio a estructura en estrella.
7/30/2019 Introduccion a La VoIP y Asterisk
6/286
Curso: Introduccin a la VoIP y Asterisk
6
Conmutacin de circuitos (2)
7/30/2019 Introduccion a La VoIP y Asterisk
7/286
Curso: Introduccin a la VoIP y Asterisk
7
Conmutacin de circuitos (3)
I ownyou...
?
7/30/2019 Introduccion a La VoIP y Asterisk
8/286
Curso: Introduccin a la VoIP y Asterisk
8
Conmutacin de circuitos (4)
Al principio, telefona 100% analgica. Gestin del crecimiento
Analgico: FDM Digital: TDM
Posteriormente los switches se sustituyeronpor switches digitales. Digital vs. Analgico
Digital es ms barato.
Digital tiene mejor calidad. Analgico ms rpido (switching). Complejidad de los terminales digitales.
Solucin: terminales analgicos y red troncaldigital.
7/30/2019 Introduccion a La VoIP y Asterisk
9/286
Curso: Introduccin a la VoIP y Asterisk
9
Sealizacin
Necesidad de comunicacin entre distintossistemas.
Ligado a la evolucin de centrales/terminalesde usuario
Sealizacin analgica Inband
Sealizacin digital Access signalling (del terminal a la central)
Ex. DTMF
Trunk signalling (entre centrales) CAS (sealizacin asociada al canal) CCS (sealizacin por canal comn)
7/30/2019 Introduccion a La VoIP y Asterisk
10/286
Curso: Introduccin a la VoIP y Asterisk
10
Sealizacin (2)
Actualmente se usa SS7 (CCS) Sealizacin asociada al circuito
Relativa a la llamada
Sealizacin no asociada al circuito Consulta de tablas de encaminamiento
Servicios suplementarios Desvos de llamada...
Paradigma de SS7 La inteligencia reside en la red (terminales
'tontos') El acceso a la red determina los servicios
disponibles
7/30/2019 Introduccion a La VoIP y Asterisk
11/286
Curso: Introduccin a la VoIP y Asterisk
11
Conmutacin de paquetes
En conmutacin de circuitos raramente seutilizaba todo el ancho de banda disponible.
TDM ineficiente gestionando el uso de la red. El contenido del paquete determina la ruta.
7/30/2019 Introduccion a La VoIP y Asterisk
12/286
Curso: Introduccin a la VoIP y Asterisk
12
Conmutacin de paquetes VS. Conmutacin de circuitos
C. de circuitos Ms rpida No se examina el contenido de los paquetes
C. de paquetes Mejor gestin de recursos Precio
C d i l i k
7/30/2019 Introduccion a La VoIP y Asterisk
13/286
Curso: Introduccin a la VoIP y Asterisk
13
El paradigma IP
Su NICO propsito es proporcionarconectividad.
La red es independiente de la tecnologasubyacente.
Las aplicaciones pueden utilizar unainfraestructura comn IP.
Ethernet | ATM | ...
Conectividad IP
Aplicaciones
C I t d i l V IP A t i k
7/30/2019 Introduccion a La VoIP y Asterisk
14/286
Curso: Introduccin a la VoIP y Asterisk
14
El paradigma IP (2)
Protocolos de extremo a extremo IP solo 'lleva' cosas La INTELIGENCIA esta en los extremos
Internet es idiota :)
Justo lo contrario que en la telefonatradicional...
7/30/2019 Introduccion a La VoIP y Asterisk
15/286
Qu es la VoIP?
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
16/286
Curso: Introduccin a la VoIP y Asterisk
16
Conceptos bsicos sobre VozIP
Voz sobre IP: Qu es ?
Utilizar redes de datos IP para realizarllamadas de Voz.
En particular: Realizar llamadas porInternet (IP = Internet Protocol).
Internet: La mayor red de datos delmundo.
La tecnologa Voz sobre IP se encuentraahora mismo en su madurez, perocomenz por los aos 90.
Tecnologa conocida como 'VoIP'.
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
17/286
Curso: Introduccin a la VoIP y Asterisk
17
Conceptos bsicos sobre VozIP
Voz sobre IP: Caractersticas Principales
Se utiliza una nica red. Si dos empresas estnunidas a travs de Internet, Porqu noaprovecharlo?
Se administra una nica red. Finalmente se puede hablar de: Estndaresabiertos e internacionales. Interoperabilidad,Bajada de precios en proveedores y fabricantesde hardware VoIP.
Calidad: Es posible conseguir la misma calidade incluso mayor gracias a nuevos codecs.
Fiabilidad: En LAN, se puede lograr una granfiabilidad. En Internet tambin, pero existenquizs demasiados factores.
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
18/286
Curso: Introduccin a la VoIP y Asterisk
18
Razones del xito de VoIP
Gran expansin actual de las redes de
datos LAN, WAN... Internet: ADSL, ADSL2+, VDSL WIFI, WiMax...
Posibilidad de desarrollar nuevosservicios rpidamente.
Menor inversin inicial para losproveedores..
Costes ms bajos para los clientes.
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
19/286
Curso: Introduccin a la VoIP y Asterisk
19
Problemas de la VoIP
VoIP: Problemas
NAT: El cncer de la VoIP. Distintos tipos, no esfcilmente manejable.
QoS: Necesidad de ofrecer calidad de servicio, al
ser la voz crtica en tiempo real. Latencia: Tiempo que tarda la voz en llegar al
destino. Jitter: Variacin de la latencia. Ancho de banda: En Espaa conexiones
asimtricas. El ancho de banda es muy caro.
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
20/286
Curso: Introduccin a la VoIP y Asterisk
20
Conceptos bsicos sobre VozIP
Voz sobre IP: Elementos Implicados
Telfonos IP: Fsicamente, son telfonosnormales, con apariencia tradicional.Incorporan un conector RJ45 paraconectarlo directamente a una red IP enEthernet. No pueden ser conectados alineas telefnicas tradicionales.
SNOM 360 SIPURA 841
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
21/286
Cu so oducc a a o y s e s
21
Conceptos bsicos sobre VozIP
Voz sobre IP: Elementos Implicados (II)
Adaptadores anlogicos IP: Permitenaprovechar los telfonos analgicos
actuales, transformando su seal analgicaen los protocolos de VozIP.
LINKSYS PAP2
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
22/286
y
22
Conceptos bsicos sobre VozIP
Voz sobre IP: Elementos Implicados (III)
Softphones: Programas que permitenllamar desde el ordenador utilizandotecnologas VozIP.
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
23/286
y
23
Conceptos bsicos sobre VozIP
Voz sobre IP: Elementos Implicados (IV)
Centralitas IP: Centralitas de telefonaque permiten utilizar de forma combinadala tecnologa VozIP (mixtas) o
exclusivamente IP (puras).
Avaya IP Office
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
24/286
24
Conceptos bsicos sobre VozIP
Voz sobre IP: Visin General
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
25/286
25
Proveedores de Servicios VozIP
Funcin Principal
El principal servicio de los diferentesproveedores de Voz sobre IP es el de hacerde pasarela hacia la red telefnica pblica
(conocida como PSTN/POTS) a costes muyreducidos.
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
26/286
26
Proveedores de Servicios VozIP
Caractersticas Principales
Soportan determinados protocolos estndar(SIP,H323 normalmente).
Algunos tienen protocolos propietarios:
Skype, ... Soportan determinados codecs (GSM, G.729
normalmente). Casi siempre permiten realizar ms de una
llamada a la vez. Las llamadas entre usuarios de un mismo
proveedor son gratuitas, en algunos casosexisten 'prefijos' para saltar entre redes de
proveedores conocidos.
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
27/286
27
Proveedores de Servicios VozIP
Caractersticas Avanzadas
Enlace PSTN -> VoIP Numeracin geogrfica: 944, 91... Numeracin 902, 700 ...
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
28/286
28
Proveedores de Servicios VozIP
Algunos Proveedores
Mercado parcialmente sin regular! Dependencia de Internet.
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
29/286
29
Tecnologas Voz sobre IP
Tecnologas Voz sobre IP
Protocolo: Es el 'lenguaje' que se utilizapara negociar y establecer lascomunicaciones de voz sobre IP. Los ms
importantes: SIP, H323 e IAX2.
Codec: Es la forma de digitalizar la vozhumana para ser enviada por las redes de
datos. Algunos ejemplos: G.711, G729,GSM, iLBC, Speex, G.723.
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
30/286
30
Tecnologas Voz sobre IP
Codecs
Los codecs se utilizan para transforma laseal de voz analgica en una versindigital.
Los softphones, hardphones o centralitas IPsoportan una serie de codecs cada uno.Cuando hablan entre si negocian un codeccomn.
Aspectos a tener en cuenta por codec: Calidad de sonido Ancho de banda requerido Coste de computacin
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
31/286
31
Tecnologas Voz sobre IP
Comparativa de Codecs
Fuentes: cisco.com (ID:7934),terracal.com (FAQ), asteriskguru.comBandwith calculator)
CODEC Codec Bitrate Intervalo A.Banda(Ethernet)
G.711 64 Kbps 10ms 87 Kbps
G.729 8 kbps 10ms 31,2 Kbps
Speex 4-44,2 Kbps 30 17,63 59,63 Kbps
ILBC 13,3 Kbps 30 30,83 KbpsG.723.1 6,3 Kbps 37 21,9 Kbps
GSM 13,2 Kbps 20 28,63Kbps
7/30/2019 Introduccion a La VoIP y Asterisk
32/286
El protocolo SIP
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
33/286
33
Arquitectura de Conferencias Multimedia en Internet
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
34/286
34
RTP y RTCP
Protocolo de transporte en Tiempo Real. Requerimiento de aplicaciones con
retardo ~ 0. Internet es un medio hostil
Latencias Jitter
Para solucionarlo: Timestamps Nmeros de secuencia
Si tenemos varios streams de audio/vdeo, esnecesaria la sincronizacin RTCP
Asocia los tiemstamps con un RealTime Clock
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
35/286
35
SAP
Session Announcement Protocol Sirve para 'anunciar' una sesin multimedia
Hoy a las 8, pelcula de noseke... Como la revista de la TV
No se encarga de describir la sesin,
para eso tenemos SDP
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
36/286
36
SDP
Session Description Protocol Contiene toda la informacin que un usuario
puede necesitar para unirse a una sesinmultimedia.
Ofrece la siguiente informacin IP para conectarse a la sesin Codecs soportados Informacin descriptiva ...
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
37/286
37
Recapitulando...
Hasta ahora sabemos hacer 2 cosas Anunciar una sesin multimedia Describirla
Pero... como indicamos a alguien que seuna? Hay que INVITARLE a inicial una sesin
SIP: Session Initiation Protocol
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
38/286
38
Origen
Para cubrir la carencia de no poder iniciar
una sesin multimedia con alguien, surgiSIP.
Estndar de la IETF, recogido en el RFC3261(SIPv2)
'Merge' entre SIPv1 (Session Invitation Protocol) SCIP (Simple Conference Invitation Protocol)
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
39/286
39
Funcionalidades
SIP proporciona un mecanismo para iniciar,
modificar y finalizar una sesin.
Independiente del tipo de sesin multimediay de su descripcin. Podemos invitar a alguien a una partida online de
mus mediante SIP, utilizando MGDP (Mus GameDescription Protocol) para describir la sesin. XD
Movilidad del usuario Necesidad de conocer su localizacin. SIP URIs: identificar a usuario SIP.
Los usuarios registran su ubicacin en el servidor.
Curso: Introduccin a la VoIP y Asterisk
mailto:[email protected]:[email protected]7/30/2019 Introduccion a La VoIP y Asterisk
40/286
40
Entidades SIP
User-Agent: entidad con la que interacta el
usuario. Telfono SIP Softphone
Servidor Proxy: servidor que gestiona las
invitaciones a las sesiones Sabe donde esta el usuario destino, as que le
enruta el mensaje. Registrar: servidor que acepta peticiones de
registro, y guarda la ubicacin del usuario. Location Server: no es una entidad SIP, pero
es necesario para localizar al usuario. Normalmente los 3 anteriores son el mismo
software.
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
41/286
41
Porqu SIP es el camino a seguir
Diferencia entre el establecimiento y la
descripcin de la sesin Extensible
Protocolo de extremo a extremo Un usuario ES DUEO DE SU SESIN Paradigma IP vs. Paradigma SS7
Favorece la interoperabilidad El 'core' es relativamente sencillo: 6
mtodos
Funcionalidades adicionales mediante extensiones Es escalable
La inteligencia esta en los extremos La red guarda muy pocos datos del estado
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
42/286
42
Mtodos SIP INVITE
Invita a un usuario a una sesin multimedia Modifica una sesin multimedia existente
ACK Proporciona un 3-way-handshake en el INVITE, sirve para
confirmar la recepcin de una respuesta final a un
INVITE CANCEL
Cancela una transaccin en curso BYE
Se utilizan para abandonar una sesin REGISTER
Sirven para informar al servidor de la ubicacin delusuario
OPTIONS
Nos permite consultar qu mtodos soporta un usuario.
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
43/286
43
Transacciones Cliente-Servidor
Un cliente GENERA peticiones.
Un servidor RECIBE peticiones. El UA que genera peticiones se conoce como
UAC: User Agent Client. El UA que responde a las peticiones se
conoce como UAS: User Agent Server. Una peticin, junto con las respuestas que
genera, es una TRANSACCIN.
Curso: Introduccin a la VoIP y Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
44/286
44
Respuestas SIP
100 199: provisional e informativa
200 299: afirmativa 300 399: redireccin 400 499: error del cliente 500 599: error del servidor 600 699: fallo global
Las respuestas incluyen un mensajedescriptivo, pero lo importante es el cdigonumrico.
Curso: Introduccin a la VoIP y Asterisk
INVITEAli B b
7/30/2019 Introduccion a La VoIP y Asterisk
45/286
45
INVITE
INVITE
180 Ringing
Alice Bob
200 OK
Curso: Introduccin a la VoIP y Asterisk
ACKAlice B b
7/30/2019 Introduccion a La VoIP y Asterisk
46/286
46
ACK
INVITE
180 Ringing
ACK
200 OK
Conversacin
Alice Bob
Curso: Introduccin a la VoIP y Asterisk
ACK (2)
7/30/2019 Introduccion a La VoIP y Asterisk
47/286
47
ACK (2)
INVITE es el nico mtodo que utiliza 3 way
handshake. El resto de mensajes esperan una respuesta
veloz, pero en el caso del INVITE, esta puedetardar.
El UAC manda al UAS un ACK, indicando queha recibido su respuesta.
Aseguramos el correcto establecimiento dela sesin sobre un medio no fiable: UDP
Curso: Introduccin a la VoIP y Asterisk
CANCELAlice Bob
7/30/2019 Introduccion a La VoIP y Asterisk
48/286
48
CANCEL
INVITE
180 Ringing
ACK
200 OK
Alice Bob
CANCEL
487 Transaction Cancelled
Curso: Introduccin a la VoIP y Asterisk
BYEAlice Bob
7/30/2019 Introduccion a La VoIP y Asterisk
49/286
49
BYE
INVITE
180 Ringing
ACK
200 OK
Alice Bob
BYE
200 OK
Conversacin
Curso: Introduccin a la VoIP y Asterisk
REGISTERAlice Servidor SIP
7/30/2019 Introduccion a La VoIP y Asterisk
50/286
50
REGISTER
REGISTER
401 Unauthorized
REGISTER
200 OK
Alice Servidor SIP
Curso: Introduccin a la VoIP y Asterisk
OPTIONSAlice Bob
7/30/2019 Introduccion a La VoIP y Asterisk
51/286
51
OPTIONS
OPTIONS
Alice Bob
200 OK
Curso: Introduccin a la VoIP y Asterisk
Cabeceras SIP
7/30/2019 Introduccion a La VoIP y Asterisk
52/286
52
Cabeceras SIP From
Identifica al que origina una peticin. Call-ID
Representa una relacin entre 2 dispositivos SIP,relacionando un INVITE y todas las transaccionesasociadas.
Contact Incluye una SIP URL, indicando donde se puede
contactar con el usuario. To
Identifica al receptor de una peticin. Va Contiene todos los proxys que han gestionado una
peticin. Hace que las respuestas sigan el mismo camino
que las peticiones Curso: Introduccin a la VoIP y Asterisk
Conceptos importantes: Transaccin y DilogoNB
7/30/2019 Introduccion a La VoIP y Asterisk
53/286
53
Conceptos importantes: Transaccin y Dilogo
Transaccin Una peticin + respuesta, SI la respuesta esafirmativa (INVITE + 200 OK) Una peticin + respuesta negativa + ACK
(INVITE + 404 Not Found + ACK) Identificado unvocamente por el 'branch' de la
cabecera Va. Dilogo
Concepto de 'llamada' Identificado unvocamente por el From tag, To tag
y Call-ID.
NB
Curso: Introduccin a la VoIP y Asterisk
Tipos de proxys SIP
7/30/2019 Introduccion a La VoIP y Asterisk
54/286
54
Tipos de proxys SIP
Stateful Proxy Su mbito es la transaccin. No entiende de dilogos, pero s de transacciones.
Stateless Proxy No guardan ningn tipo de estado.
IMPORTANTE: Asterisk NO es un proxy SIP!!
Curso: Introduccin a la VoIP y Asterisk
Routing de mensajes SIP
7/30/2019 Introduccion a La VoIP y Asterisk
55/286
55
Routing de mensajes SIPAlice BobServidor SIP
INVITE INVITE180 Ringing180 Ringing
200 OK200 OK
ACK
Conversacin
BYE
200 OK
Curso: Introduccin a la VoIP y Asterisk
Routing de mensajes SIP (2)
7/30/2019 Introduccion a La VoIP y Asterisk
56/286
56
ou g de e sajes S ( )
Despus del 200 OK, Alice ya sabe donde esta
Bob (Contact) Las transacciones siguientes (ACK y BYE-200
OK) van directamente de extremo a extremo. Podemos alterar este comportamiento con las
cabeceras Record-Route y Route Si queremos facturar, queremos estar al tanto de la
sealizacin...
Curso: Introduccin a la VoIP y Asterisk
Routing de mensajes SIP (3)
7/30/2019 Introduccion a La VoIP y Asterisk
57/286
57
g j ( )
INVITE INVITE180 Ringing
180 Ringing
200 OK200 OK
Conversacin
ACK ACK
BYEBYE
200 OK200 OK
Alice Servidor SIP Bob
Curso: Introduccin a la VoIP y Asterisk
Routing de mensajes SIP (4)
7/30/2019 Introduccion a La VoIP y Asterisk
58/286
58
g j
Cada proxy que quiere quedarse 'en medio'
aade una cabecera Record-Route al inviteque pasa a travs de l. Las cabeceras se mantienen y se envan de
vuelta en la respuesta.
Las siguientes transacciones se generan conla cabecera Route (en orden inverso que lasReord-Route).
En mensaje se enva al proxy que indica su
primera cabecera Route y el proxy la elimina.
Curso: Introduccin a la VoIP y Asterisk
Extensiendo SIP
7/30/2019 Introduccion a La VoIP y Asterisk
59/286
59
Con lo visto hasta ahora, solo podemos hacer
y recibir llamadas :-O PEEEERO, SIP se dise para ser extensible,
por lo que se le han aadido serviciosmediante extensiones al protocolo.
Mensajera Notificaciones Asncronas de Eventos Transferencia de sesiones ...
Curso: Introduccin a la VoIP y Asterisk
Mensajera Instantnea
7/30/2019 Introduccion a La VoIP y Asterisk
60/286
60
INVITE
180 Ringing
Alice Bob
200 OKACK
MESSAGE Como mola SIP!!
200 OK
Curso: Introduccin a la VoIP y Asterisk
Notificaciones Asncronas de Eventos
7/30/2019 Introduccion a La VoIP y Asterisk
61/286
61
INVITE484 Busy Here
Alice Bob
200 OK
ACK
SUBSCRIBE Estado de Bob
200 OK
NOTIFY Bob esta ocupado200 OK
NOTIFY Bob esta disponible
INVITE
Curso: Introduccin a la VoIP y Asterisk
Transferencia de sesiones
7/30/2019 Introduccion a La VoIP y Asterisk
62/286
62
Curso: Introduccin a la VoIP y Asterisk
Ejercicio
7/30/2019 Introduccion a La VoIP y Asterisk
63/286
63
Capturar y analizar trazas SIP llamando entre 2
terminales directamente, sin ningnproxy/b2bua entre ellos.
Herramientas necesarias:
Softphone Ngrep
Uso de ngrep:ngrep -d any -W byline -T -P '' port 5060
7/30/2019 Introduccion a La VoIP y Asterisk
64/286
SIP y el NAT
Curso: Introduccin a la VoIP y Asterisk
NAT
7/30/2019 Introduccion a La VoIP y Asterisk
65/286
65
Problema del NAT El 'supuesto' agotamiento de los rangos de
direcciones IP utilizables en Internet ha obligado autilizar direcciones IP privadas dentro de las redesde empresas y usuarios domsticos.
Un equipo IP para ser alcanzado en Internet debe
utilizar una IP pblica para sus comunicaciones. Esnecesario por tanto 'enmascarar' la red interna enuna o varias IPs pblicas (Source NAT).
El proceso de NAT no es nada sencillo: varios tiposde NAT, varios tipos de soluciones.
Tesis Heinz Herlitz: http://www.uct.cl/biblioteca/tesis-on-line/heinz-
herlitz/tesis.pdf
Curso: Introduccin a la VoIP y Asterisk
NAT y SIP
7/30/2019 Introduccion a La VoIP y Asterisk
66/286
66
Esquema Base
Red localIP's privadas:
192.168.0.0/16172.16.0.0/12
10.0.0.0/8
InternetRouter NAT
Proceso NAT:conversin
IP privada IPpblica
Problema en entrada:mapeo de puertos
Problema en salida:encapsulacin IPy puerto de RTP
a nivel de aplicacin
Curso: Introduccin a la VoIP y Asterisk
NAT y SIP
7/30/2019 Introduccion a La VoIP y Asterisk
67/286
67
Tipos de NAT (I)
NAT full cone: Todas las peticiones desde lamisma IP/puerto de la LAN son mapeadas a lamisma IP/puerto pblico. Cualquier mquina puedeenviar paquetes a la mquina interna por esa
IP/puerto mediante redireccin de puertos.
Router NAT
Irontec
2050 4702
80
4702
3590
2050
Mquina interna
Curso: Introduccin a la VoIP y Asterisk
NAT y SIP
7/30/2019 Introduccion a La VoIP y Asterisk
68/286
68
Tipos de NAT (II)
NAT restringido: Lo mismo, pero una mquinaexterna con IP X puede enviar paquetes a lamquina interna slo si sta le ha enviadopaquetes previamente. No importa el puerto.
Router NAT
Irontec
2050 4702
80
1025
3590
1025
Mquina interna
1025
2231
Curso: Introduccin a la VoIP y Asterisk
NAT y SIP
7/30/2019 Introduccion a La VoIP y Asterisk
69/286
69
Tipos de NAT (III)
NAT puerto restringido: Lo mismo que NATrestringido, pero la mquina externa con IP X ypuerto P slo puede enviar paquetes a la mquinainterna si sta le ha enviado previamente paquetes
al puerto P.
Router NAT
Irontec
2050 4702
80
125
3590Mquina interna
125
2231
Curso: Introduccin a la VoIP y Asterisk
NAT y SIP
7/30/2019 Introduccion a La VoIP y Asterisk
70/286
70
Tipos de NAT (IV)
NAT simtrico: Todas las peticiones desde la mismaIP/puerto de la LAN a una IP/puerto externos especficosson mapeadas a la misma IP/puerto pblico. Si lamquina interna enva un paquete a una IP/puertodistintos el mapeo cambia. Por lo tanto, slo la mquinaexterna que recibe un paquete puede devolverpaquetes a la mquina interna.
Router NAT
Irontec
2050470
2
80
Mquina interna 1252231
2050 905580
Curso: Introduccin a la VoIP y Asterisk
NAT y SIP
7/30/2019 Introduccion a La VoIP y Asterisk
71/286
71
Tipos de NAT (V)
La clasificacin anterior est abandonadahoy en da. Muchas implementaciones NAToscilan entre varios de los tipos. Preservacin de puerto: Se mapea la mismaIP/puerto externo para la misma IP/puerto interno.
Si dos mquinas internas tratan de conectar conla misma IP/puerto externo, el puerto exteriormapeado a la segunda mquina se elige
aleatoriamente. Tambin se conoce como NATrestricted cone.
Curso: Introduccin a la VoIP y Asterisk
NAT y SIP
7/30/2019 Introduccion a La VoIP y Asterisk
72/286
72
Cmo nos afecta el NAT?
El paquete SIP que enviamos contiene Ipsprivadas:
Cabecera 'Via'
Cabecera 'Contact' Campo 'c' en el SDP
Curso: Introduccin a la VoIP y Asterisk
NAT y SIPINVITE sip:[email protected] SIP/2.0
7/30/2019 Introduccion a La VoIP y Asterisk
73/286
73
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP 192.168.1.33:5060;rport;branch=z9hG4bKjyofoqmp
Max-Forwards: 70
To:
From: "Iaki" ;tag=nrrrx
Call-ID: [email protected]
CSeq: 800 INVITE
Contact:
Content-Type: application/sdpAllow:INVITE,ACK,BYE,CANCEL,OPTIONS,PRACK,REFER,NOTIFY,SUBSCRIBE,INFO,MESSAGE
Supported: replaces,norefersub,100rel
User-Agent: Twinkle/1.1
Content-Length: 312
v=0
o=ibc 1090098764 894503441 IN IP4 192.168.1.33
c=IN IP4 192.168.1.33
t=0 0
m=audio 8000 RTP/AVP 98 97 8 0 3 101
Curso: Introduccin a la VoIP y Asterisk
NAT y SIP
7/30/2019 Introduccion a La VoIP y Asterisk
74/286
74
Soluciones para NAT
Solucin por parte del cliente: Utilizacin de servidores STUN. SIP ALG
Soluciones de en los equipos decomunicaciones IP: VPN Mapeo de puertos
Soluciones en los servidores SIP: NAT helpers.
Curso: Introduccin a la VoIP y Asterisk
STUN: Simple Traversal of UDP through NATs
T d F i i t
7/30/2019 Introduccion a La VoIP y Asterisk
75/286
75
Teora de Funcionamiento Protocolo de red que permite a clientes detrs de
NAT averiguar su IP pblica, tipo de NAT y puertoexterior.
El cliente STUN solicita a un servidor STUN la IP ypuerto por los que ha salido a Internet. En funcin
de varios test contra el servidor STUN el clienteaverigua el tipo de NAT en el que se encuentra. El servidor STUN dispone de dos IPS pblicas. No soluciona el problema del NAT simtrico.
Por qu? En VoIP se utiliza para facilitar la recepcin de los
datos de voz RTP (UDP). Servidores STUN pblicos:
stun.fwd.net, stun.xten.com, ...
Curso: Introduccin a la VoIP y Asterisk
STUN: Simple Traversal of UDP through NATs
Ejemplo
7/30/2019 Introduccion a La VoIP y Asterisk
76/286
76
Ejemplo
El control SIP ya sabe qu IP y puerto encapsular
en la negociacin con el extremo para el canalRTP: IP: 80.55.212.49 Puerto: 14560
Telfono IPdentro de
NATRouter NAT
Servidor STUN
1. Cul es mi IP y puerto externo?ControlSIP
puerto5060
2. IP: 80.55.212.49 Puerto: 1234
Control
RTPpuerto16384
3. Cul es mi IP?Responde a 80.55.212.49:1234
4. IP: 80.55.212.49 Puerto: 14560
Curso: Introduccin a la VoIP y Asterisk
STUN: Simple Traversal of UDP through NATs
Test cliente-servidor (I)
7/30/2019 Introduccion a La VoIP y Asterisk
77/286
77
Test cliente-servidor (I)
Test I: El cliente STUN solicita al servidor STUN (UDP
port 3478) la IP y puerto exterior suyas (delcliente).
Test II: El cliente STUN repite la peticin pero solicitando
al servidor STUN que responda desde otra IP ypuerto.
Test III: Igual que el Test II pero solicitando slo que
responda desde otro puerto.
Curso: Introduccin a la VoIP y Asterisk
STUN: Simple Traversal of UDP through NATs
7/30/2019 Introduccion a La VoIP y Asterisk
78/286
78
contina...
Test I
Respuesta
?
Misma IP
?
Test II
Test II
Respuesta?
S
S
No
BloqueoUDP
No
FirewallUDP
simtrico
Internetdirecto
SNo
Curso: Introduccin a la VoIP y Asterisk
STUN: Simple Traversal of UDP through NATs
7/30/2019 Introduccion a La VoIP y Asterisk
79/286
79
Test II
Test I[2da IP STUN]
Test III
Respuesta?
Misma IP?
Respuesta?
NATfull cone
NATsimtrico
NATrestringido
NATpuerto
restringido
No
S
No
S
No S
Curso: Introduccin a la VoIP y Asterisk
SIP ALG
SIP Application Level Gateway
7/30/2019 Introduccion a La VoIP y Asterisk
80/286
80
SIP Application Level Gateway
Implementado en routers de todas lasgamas Comtrend de Telefnica SpeedTouch de Orange
El 99,99% de los ALG no funcionan Es necesario deshabilitarlo para poder
utilizar VoIP
http://www.voip-info.org/wiki/view/Routers+SIP
http://www.voip-info.org/wiki/view/Routers+SIP+ALGhttp://www.voip-info.org/wiki/view/Routers+SIP+ALG7/30/2019 Introduccion a La VoIP y Asterisk
81/286
El protocolo IAX2
Curso: Introduccin a la VoIP y Asterisk
Tecnologas Voz sobre IP
7/30/2019 Introduccion a La VoIP y Asterisk
82/286
82
Protocolo IAX2
IAX2: Inter Asterisk eXchange Creado y estandarizado por la centralita
Asterisk. Utiliza el puerto 4569 UDP. Caractersticas Principales:
Media y sealizacin por el mismo flujo de
datos. Trunking Cifrado
Curso: Introduccin a la VoIP y Asterisk
Tecnologas Voz sobre IP
7/30/2019 Introduccion a La VoIP y Asterisk
83/286
83
Protocolo IAX2: Ventajas
NAT: Al enviar tanto sealizacin comostreaming por el mismo flujo de datos
(flujo UDP), se evitan los problemasderivados del NAT. No es necesario abrirrangos de puertos para RTP.
Trunking: Es posible enviar varias
conversaciones por el mismo flujo, lo cualsupone un importante ahorro de ancho debanda (overhead de la capas IP ytransporte UDP).
7/30/2019 Introduccion a La VoIP y Asterisk
84/286
Asterisk
Curso: Introduccin a la VoIP y Asterisk
Qu es Asterisk?
Software
7/30/2019 Introduccion a La VoIP y Asterisk
85/286
85
Cumple todas las funcionalidades de unacentralita tradicional y ms.
Open Source. Asterisk is an OpenSource Multiprotocol
PBX Distintos tipos de uso
Para uso domstico. Uso empresarial Operadores de telefona IP. etc...
Curso: Introduccin a la VoIP y Asterisk
Historia
7/30/2019 Introduccion a La VoIP y Asterisk
86/286
86
Inicialmente desarrollado por Mark Spencer(creador de GAIM). Tena una empresa (Linux Support Services
Inc.) y necesitaba una centralita.
Decidi hacerla l mismo. Se junt con Jim Nixon, originalmente
soportaba las tarjetas de Zapata Telephony Liber el cdigo bajo licencia GPL.
Curso: Introduccin a la VoIP y Asterisk
Historia (2)
7/30/2019 Introduccion a La VoIP y Asterisk
87/286
87
Viendo la evolucin de Asterisk, la empresacambi de nombre a Digium. Actualmente Mark no es el CEO, es el CTO. Adquisiciones y alianzas con diversas
empresas para aumentar el ecosistema.
Curso: Introduccin a la VoIP y Asterisk
Versiones de Asterisk
Principalmente hay 2 versiones
7/30/2019 Introduccion a La VoIP y Asterisk
88/286
88
c pa e e ay e s o es
La versin Open Source. Es posible obtener soporte directo de Digium Asterisk Business Edition: edicin
comercial.
Se basa en la Open Source, pero se eliminantodos aquellos elementos susceptibles de causarproblemas.
Fuertemente probada. Al comprarla incluye soporte durante un ao. Licencias. Va a ser utilizada solo para productos OEM.
Curso: Introduccin a la VoIP y Asterisk
Modelo de desarrollo de Asterisk
Actualmente conviven 3 grandes ramas de
7/30/2019 Introduccion a La VoIP y Asterisk
89/286
89
gdesarrollo:
Asterisk 1.2 Solo se solucionan bugs de seguridad
Asterisk 1.4 Release 'congelada' Se solucionan todo tipo de bugs que no necesiten
cambios en la arquitectura Nada de nuevas 'features'
Asterisk 1.6
Es donde tiene lugar todo el desarrolloactualmente
Curso: Introduccin a la VoIP y Asterisk
Modelo de desarrollo de Asterisk (2)
Asterisk 1.6 admite todo tipo de nuevas
7/30/2019 Introduccion a La VoIP y Asterisk
90/286
90
p'features'
Por cada nuevo 'mayor release' se crea unnuevo branch
1.6.0, 1.6.1, 1.6.2,
Cada una de estas ramas solo admite uncambio importante Se van a mantener 3 'point releases' de cada
branch, y 3 branches al mismo tiempo
Cuando salga Asterisk 1.6.0.4 se deja demantener la 1.6.0.0 (solo bugs de seguridad) Cuando salga Asterisk 1.6.4.0 se dejarn de
mantener Asterisk 1.6.0.X (solo bugs deseguridad)
7/30/2019 Introduccion a La VoIP y Asterisk
91/286
Distintos usos de Asterisk
Curso: Introduccin a la VoIP y Asterisk
Funcionalidades de Asterisk Caractersticas tpicas de centralita:
T f i
7/30/2019 Introduccion a La VoIP y Asterisk
92/286
92
Transferencias
Msica en espera ...
Multiprotocolo y OpenSource!! Extensiones, DIDs para usuarios. Buzones de voz, desvos de llamada, follow-me, ... Colas y agentes. Mens IVR. Protocolos: SIP, IAX2, H.323, MGCP, ... PSTN: T1/E1, ISDN BRI, FXO/FXS.
Curso: Introduccin a la VoIP y Asterisk
Asterisk como PBX normal
7/30/2019 Introduccion a La VoIP y Asterisk
93/286
93
Curso: Introduccin a la VoIP y Asterisk
Una PBX VoIP
7/30/2019 Introduccion a La VoIP y Asterisk
94/286
94
Curso: Introduccin a la VoIP y Asterisk
Complemento/ampliacin de una PBX tradicional
7/30/2019 Introduccion a La VoIP y Asterisk
95/286
95
Curso: Introduccin a la VoIP y Asterisk
Gateway VoIP - PSTN
7/30/2019 Introduccion a La VoIP y Asterisk
96/286
96
Curso: Introduccin a la VoIP y Asterisk
Asterisk fcil-version
Distribuciones con Asterisk:
7/30/2019 Introduccion a La VoIP y Asterisk
97/286
97
AsteriskNow: Basada en CentOS, incluye FreePBXo Asterisk-GUI. TrixBox (antes Asterisk@Home): Basado en
CentOS, incluye FreePBX.
GUIs para Asterisk: Asterisk-GUI: Desarrollada por Digium. Asterisk
Appliance. FreePBX: Desarrollada por terceros.
Curso: Introduccin a la VoIP y Asterisk
Asterisk fcil-version (2)
7/30/2019 Introduccion a La VoIP y Asterisk
98/286
98
Console roolz!!
Curso: Introduccin a la VoIP y Asterisk
Asterisk-GUI
7/30/2019 Introduccion a La VoIP y Asterisk
99/286
99
Curso: Introduccin a la VoIP y Asterisk
FreePBX
7/30/2019 Introduccion a La VoIP y Asterisk
100/286
100
7/30/2019 Introduccion a La VoIP y Asterisk
101/286
Asterisk: Terminologa bsica
Curso: Introduccin a la VoIP y Asterisk
Telefona
PSTN: Public Switched Telephony Network.
7/30/2019 Introduccion a La VoIP y Asterisk
102/286
102
FXS: Foreign eXchange Station. Lo que hay en nuestra pared. Alimenta dispositivos. Utiliza sealizacin FXO.
FXO: Foreign eXchange Office. El conector de nuestro telfono donde entra lalnea.
Recibe alimentacin. Utiliza sealizacin FXS.
Curso: Introduccin a la VoIP y Asterisk
Redes y protocolos
LAN, WAN, ...
7/30/2019 Introduccion a La VoIP y Asterisk
103/286
103
Protocolos: Capa de Transporte:
TCP UDP
Capa de Aplicacin: SIP: Session Initiation Protocol IAX2: Inter Asterisk eXchange
7/30/2019 Introduccion a La VoIP y Asterisk
104/286
Arquitectura de Asterisk
Curso: Introduccin a la VoIP y Asterisk
Arquitectura de Asterisk
Asterisk es muy modular.
7/30/2019 Introduccion a La VoIP y Asterisk
105/286
105
Nos permite ajustarlo a nuestrasnecesidades (escalabilidad). Asterisk en dispositivos empotrados.
Curso: Introduccin a la VoIP y Asterisk
Arquitectura de Asterisk (2)
C l SIP C l IAX2 C l DAHDI
7/30/2019 Introduccion a La VoIP y Asterisk
106/286
106
Canales
Canal SIP Canal IAX2 Canal DAHDI
PBX CoreCDR Aplicaciones y funciones
Recursos Formatos Codecs
CSV
MySQL
Dial
Voicemail
AGI
config
.gsm
.wav
G.729
G.711
Curso: Introduccin a la VoIP y Asterisk
Formatos
Asterisk soporta multitud de formatos: wav,mp3 gsm h 264 etc
7/30/2019 Introduccion a La VoIP y Asterisk
107/286
107
mp3, gsm, h.264, etc ... Los necesitamos para reproducir ficheros,
p.e. en un IVR, Playback, Voicemail, ...
Curso: Introduccin a la VoIP y Asterisk
Llamadas en Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
108/286
108
Dispositivo queorigina la llamada:
SIP, DAHDI,IAX2, ...
Receptor de lallamada.Asterisk recoge la
llamada y la pocesa sulgica de enrutado
(dialplan). Despusse encamina aldestino.
En una llamada hay 2 canales: el que origina la llamada y elque la recibe.
Curso: Introduccin a la VoIP y Asterisk
AstChannels: La mgia
Si asterisk es multiprotocolo, como serealiza una llamada entre 2 dispositivos de
7/30/2019 Introduccion a La VoIP y Asterisk
109/286
109
realiza una llamada entre 2 dispositivos dedistinta tecnologa?
Hay 4 canales!! 2 dependientes de latecnologa utilizada y 2 AstChannels.
Asterisk crea los AstChannels para poderllevar a cabo el bridging.Transferencias. Parking.
Curso: Introduccin a la VoIP y Asterisk
Bridging
7/30/2019 Introduccion a La VoIP y Asterisk
110/286
110
Canal dependientede la tecnologa. SIP,
DAHDI, IAX2,...Canales
independientes de latecnologa. Asterisk losgenera y lleva a cabo
el mecanismo debridging.
Canal dependientede la tecnologa. SIP,
DAHDI, IAX2,...
7/30/2019 Introduccion a La VoIP y Asterisk
111/286
Instalacin de Asterisk
Curso: Introduccin a la VoIP y Asterisk
Asterisk PBX: InstalacinRequisitos Tcnicos del sistema Requisitos: Dependen directamente de:
7/30/2019 Introduccion a La VoIP y Asterisk
112/286
112
Llamadas concurrentes. Conferencias y Aplicaciones complejas
simultneas. Transcodifcaciones necesarias (recodificacin).
Principalmente, Asterisk requieremicroprocesador. Segn Digium: Equipo Dual Intel Xeon 1.8
Ghz 1GB RAM soporta 60 llamadas
concurrentes codificando con el codecG.729. Difcil determinar con exactitud, mejor
apuntar alto para poder escalar.
Curso: Introduccin a la VoIP y Asterisk
Preparando la instalacin
Requisitos Hardware
7/30/2019 Introduccion a La VoIP y Asterisk
113/286
113
PCTarjetas de telefona Caf
Requisitos Software Debian GNU/Linux http://www.voip-info.org San Google
Curso: Introduccin a la VoIP y Asterisk
Asterisk PBX: Instalacin
Instalacin de dependencias Asterisk necesita para su correcta
http://www.voip-info.org/http://www.voip-info.org/7/30/2019 Introduccion a La VoIP y Asterisk
114/286
114
compilacin y funcionamiento los siguientespaquetes: Herramientas de compilacin: gcc, make Cabeceras de C: libncurses5-dev Libreras SSL: libssl-dev Headers de MySQL: libmysqlclient15-dev Libreras opcionales: libnewt-dev Cabeceras del Kernel: linux-headers-$(uname -r)
Adems se recomiendan los siguientespaquetes:
openssh-server, vim, ...
Curso: Introduccin a la VoIP y Asterisk
Asterisk PBX: Instalacin
Instalacin de dependencias (II)
7/30/2019 Introduccion a La VoIP y Asterisk
115/286
115
En una lnea:
# apt-get install build-essential linux-headers-$(uname -r) libncurses5-dev libssl-
dev libmysqlclient15-dev libnewt-dev
Curso: Introduccin a la VoIP y Asterisk
Asterisk PBX: Instalacin
Descarga del cdigo fuente
7/30/2019 Introduccion a La VoIP y Asterisk
116/286
116
Asterisk: Ncleo (core) del sistema. Asterisk-addons: Software adicional que por
motivos de licencias no ha sido incluido en elpaquete principal.
Libpri: Librera para gestionar sealizacin RDSI. DAHDI-linux: Drivers del Kernel para acceder a
tarjetas de comunicaciones para lineasanalgicas o digitales.
DAHDI-tools: Herramientas para interactuar
con los drivers de las tarjetas decomunicaciones.
Curso: Introduccin a la VoIP y Asterisk
Asterisk PBX: Instalacin
Descarga del cdigo fuente
7/30/2019 Introduccion a La VoIP y Asterisk
117/286
117
Descargamos los ficheros necesarios:# wgethttp://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.6.0-current.tar.gz
# wget
http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-addons-1.6.0-current.tar.gz
# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/dahdi-linux-current.tar.gz
# wget http://downloads.asterisk.org/pub/telephony/dahdi-
tools/dahdi-tools-current.tar.gz# wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz
Curso: Introduccin a la VoIP y Asterisk
Compilando Asterisk
Descomprimimos todos los ficheros ycomenzamos a compilar:
7/30/2019 Introduccion a La VoIP y Asterisk
118/286
118
# for file in *.tar.gz; do tar zxvf $file; done
#cd libpri-1.4*
#make#make install
#cd dahdi-linux-*
#make#make install
#cd dahdi-tools-*
#./configure
#make menuselect#make
#make install
#make config
Curso: Introduccin a la VoIP y Asterisk
Compilando Asterisk
7/30/2019 Introduccion a La VoIP y Asterisk
119/286
119
#cd asterisk-addons-1.6*
#./configure
#make menuselect
#make
#make install#make samples
#cd asterisk-1.6*
#./configure
#make menuselect
#make
#make install#make samples
#make config
Curso: Introduccin a la VoIP y Asterisk
Estructura de directorios
/etc/asterisk: Contiene los ficheros deconfiguracin. Si al compilar ejecutamos make
7/30/2019 Introduccion a La VoIP y Asterisk
120/286
120
samples, tendremos ejemplos en este directorio. /usr/lib/asterisk/modules: Contiene los mdulos
de Asterisk que hemos compilado. /var/lib/asterisk: Contiene diferentes libreras de
Asterisk. /var/lib/asterisk/agi-bin: Directorio para contener
los AGI. /var/spool/asterisk: Directorio para archivos que
genera Asterisk (voicemail, etc.)
/var/log/asterisk: Aqu se guardan los log deAsterisk.
Curso: Introduccin a la VoIP y Asterisk
Ejecutando Asterisk
Hay que ser root. Modificadores de arranque:
7/30/2019 Introduccion a La VoIP y Asterisk
121/286
121
-c: Modo consola. Asterisk se inicia en primerplano.
-v: Verbose. Cuantas ms uves se aadanms mensajes descriptivos veremos en la
consola. -d: Debug. Cuantas ms des, ms mensajes
de debug. -r: Remote console. Si hemos ejecutado
Asterisk en segundo plano, nos permiteconectarnos al CLI.
Curso: Introduccin a la VoIP y Asterisk
Ejecutando Asterisk (2)
Para lanzar Asterisk en segundo plano:
7/30/2019 Introduccion a La VoIP y Asterisk
122/286
122
# asterisk Para lanzar Asterisk en primer plano:
# asterisk -vvvvvvvvvvc Para conectarnos a la consola si
Asterisk esta en segundo plano:# asterisk -vvvvvvvvvvr
Curso: Introduccin a la VoIP y Asterisk
El CLI
El CLI (Command Line Interpreter) es laconsola de Asterisk.
7/30/2019 Introduccion a La VoIP y Asterisk
123/286
123
Nos permite interactuar con Asterisk. Auto-completa los comandos pulsandoTAB.
Mltiples comandos nos resultan tilespara ver lo que esta pasando*CLI>sip show channels*CLI>core show application Dial
Curso: Introduccin a la VoIP y Asterisk
Reload/Restart
Ambos sirven para reiniciar Asterisk,pero...
7/30/2019 Introduccion a La VoIP y Asterisk
124/286
124
Reload: No todos los mdulos se reconfiguran
con reload. No corta las llamadas en curso.
Restart: Se cortan las llamadas en curso.
Reconfigura todos los mdulos.
Curso: Introduccin a la VoIP y Asterisk
Ficheros de Configuracin
Todos los ficheros de configuracin deAsterisk tienen una estructura muy similar:
7/30/2019 Introduccion a La VoIP y Asterisk
125/286
125
[general]param=valor
...
[seccion]param=valor
...
7/30/2019 Introduccion a La VoIP y Asterisk
126/286
Configuracin de canalesSIP
Curso: Introduccin a la VoIP y Asterisk
Canales SIP
Configuracin para canales SIP
i l i fi h d j l
7/30/2019 Introduccion a La VoIP y Asterisk
127/286
127
La instalacin crea ficheros de ejemplocon la sintaxis bastante comentada amodo de gua.
sip.conf
En este fichero se definen: Variables generales de SIP. Clientes SIP. Servidores SIP.
Curso: Introduccin a la VoIP y Asterisk
Canales SIP
sip.conf: Seccin General
E i l i l i [ l]
7/30/2019 Introduccion a La VoIP y Asterisk
128/286
128
En primer lugar existe la seccin [general],donde se definen variables globales yaspectos por defecto para todos los canalesSIP.
La sintaxis es la siguiente:
[general]variable1=valor1
variable2=valor2
Curso: Introduccin a la VoIP y Asterisk
Canales SIP
sip.conf: Seccin General Las variables generales ms importantes
7/30/2019 Introduccion a La VoIP y Asterisk
129/286
129
son: allow y disallow: indican los codecs permitidos /
no permitidos. dtmfmode: permite especificar el mtodo por el
cual se enviaran los tonos DTMF valores posibles:rfc2833, INFO, inband. externip: Direccin Pblica del servidor Asterisk. context: Contexto por defecto donde entraran las
llamadas entrantes por SIP. bindaddr: Direccin IP en la que se escucha. bindport: Puerto en el que escuchar (5060 ).
Curso: Introduccin a la VoIP y Asterisk
Canales SIP
sip.conf: Clientes y Servidores En sip.conf se definen tanto los clientes que se
t A t i k l d
7/30/2019 Introduccion a La VoIP y Asterisk
130/286
130
conectarn a Asterisk, como los proveedoresque se utilizaran para encaminar llamadas.Conceptualmente, se distinguen user: Envia llamadas a Asterisk
peer: Recibe llamadas de Asterisk (proveedor). friend: Recibe y Enva llamadas (usuario).
La syntaxis para definir un friend o un peer es:[nombre]
type = friend / peer
variable = valorviarable2 = valor
Curso: Introduccin a la VoIP y Asterisk
Canales SIP
sip.conf: Clientes y Servidores Las variables ms importantes que deben ser
configuradas inicialmente son:
7/30/2019 Introduccion a La VoIP y Asterisk
131/286
131
configuradas inicialmente son: type: peer / friend context: Contexto donde entraran las llamadas
generadas. nat: Indica si el usuario o peer se encuentran tras
NAT. host: IP remota o dynamic. username: nombre de usuario. secret: contrasea de acceso. allow y disallow: Configuraciones de codecs
especficas para cada friend/peer. qualify: Evala el estado del extremo SIP para
conocer su accesibilidad y latencia.
Curso: Introduccin a la VoIP y Asterisk
Canales SIP
sip.conf: Ejemplo: usuario Vamos a declarar de forma bsica dos
clientes en el fichero sip conf
7/30/2019 Introduccion a La VoIP y Asterisk
132/286
132
clientes en el fichero sip.conf:[jon]type = friendsecret = jondisallow=allallow = alawcontext = desde-usuarioshost=dynamic
[leire]type = friendsecret = leire
disallow = allallow = alawcontext = desde-usuarioshost=dynamic
Curso: Introduccin a la VoIP y Asterisk
Canales SIP
sip.conf: Ejemplo: peer Vamos a configurar un proveedor en
sip conf:
7/30/2019 Introduccion a La VoIP y Asterisk
133/286
133
sip.conf:[sarenet]type=peerhost = 1.2.3.4disallow = all
allow = g729allow = alawfromuser= 100fromdomain = 1.2.3.4secret=ghost
Curso: Introduccin a la VoIP y Asterisk
Canales SIP
sip.conf: Verificacin de la configuracin
Mediante el comando module reload en el
7/30/2019 Introduccion a La VoIP y Asterisk
134/286
134
Mediante el comando module reloaden elCLI de Asterisk, le indicamos que recarguela configuracin. Aunque es posible recargarla configuracin SIP de forma
independiente: sip reload Una vez recargada, podemos comprobar los
usuarios y peers que tenermos definidoshaciendo: sip show peers
7/30/2019 Introduccion a La VoIP y Asterisk
135/286
Dialplan: El corazn deAsterisk
Curso: Introduccin a la VoIP y Asterisk
El Dialplan
Como una tabla de enrutado. Cada nmero que marca una extensin va al dialplan,
y ah decidimos que hacer
7/30/2019 Introduccion a La VoIP y Asterisk
136/286
136
y ah decidimos que hacer. Se organiza por contextos, extensiones y prioridades.
exten => extensin, prioridad, aplicacin
Curso: Introduccin a la VoIP y Asterisk
El Dialplan (2)
La extensin puede ser cualquier cosa, nosolo valen nmeros:
exten => saul 1 Dial(SIP/saghul)
7/30/2019 Introduccion a La VoIP y Asterisk
137/286
137
exten => saul,1,Dial(SIP/saghul) Se utilizan patrones de marcado para las
extensiones (no vamos a meter todos losnmeros del mundo!)
_: Comienzo del patrn. X: Cualquier dgito del 0 al 9. Z: Cualquier dgito del 1 al 9. N: Cualquier dgito del 2 al 9.
[12-4]: Cualquier dgito entre los corchetes,1,2,3,4. .(punto): Cualquier cosa.
Curso: Introduccin a la VoIP y Asterisk
El Dialplan (3)
Ejemplos de patrones:
Llamadas nacionales (empiezan por 8 o 9):[89]XXXXXXXX
7/30/2019 Introduccion a La VoIP y Asterisk
138/286
138
Llamadas nacionales (empiezan por 8 o 9):_[89]XXXXXXXX Llamadas a mviles (empiezan por 6):
_6XXXXXXXX Llamadas Internacionales:
_00X. Llamadas a nmeros especiales SIN nmeros de pago
(806, 803, 906, 903)_[89]0[0-2457-9]XXXXXX
Curso: Introduccin a la VoIP y Asterisk
El Dialplan (4)
Las prioridades sirven para decidir el orden de lasacciones al entrar en el dialplan.
Pueden utilizarse nmeros:exten => 1234,1,Answer()
7/30/2019 Introduccion a La VoIP y Asterisk
139/286
139
e e 3 , , s e ()exten => 1234,2,Playback(demo-congrats)
O la prioridad n, que va sumando 1 automticamente:exten => 1234,1,Answer()exten => 1234,n,Playback(demo-congrats)
Si utilizamos nmeros es fcil saltar:exten => 123,1,Goto(1234,1) Si usamos la prioridad n podemos hacer marcas en el
dialplan, para luego poder saltar a ellas:exten => 1234,n(mi-kosa),...
Y podemos hacer:exten => 123,1,Goto(1234,mi-kosa)
Curso: Introduccin a la VoIP y Asterisk
El Dialplan (5)
Las extensiones se agrupan en contextos. Cada dispositivo SIP, IAX o entrada de DAHDI se
define para un contexto.
7/30/2019 Introduccion a La VoIP y Asterisk
140/286
140
define para un contexto. Un dispositivo solo puede llamar a los nmeros
que tiene definidos en el contexto en el que esta. En el ejemplo 1, solo podamos marcar los
nmeros definidos en el contexto default. Un contexto puede incluir a otro:
[micontexto]include => default
Ahora aunque mi dispositivo este definido en el
contexto micontexto tiene acceso a todo elcontexto default.
Curso: Introduccin a la VoIP y Asterisk
El Dialplan (6)
Hay extensiones especiales, que no son paraque nadie marque:
s: Extensin start. Cuando entramos en uncontexto SIN extensin Macros IVRs
7/30/2019 Introduccion a La VoIP y Asterisk
141/286
141
s: Extensin start. Cuando entramos en uncontexto SIN extensin. Macros, IVRs,entrantes DAHDI.
h: Extensin hangup. Se llega a estaextensin al finalizar la llamada.
i: Extensin invlida. Opciones incorrectas enIVRs.
T: Timeout absoluto en Dial. t: Timeout en IVRs fax: Deteccin de fax en canales DAHDI.
Curso: Introduccin a la VoIP y Asterisk
Aplicaciones
Ya hemos visto algunas: Dial, Goto, ...
Se ejecutan directamente desde eldialplan
7/30/2019 Introduccion a La VoIP y Asterisk
142/286
142
Se ejecutan directamente desde eldialplan. Para una lista completa de las
aplicaciones disponibles:
*CLI>core show applications Las aplicaciones en generalhacen algo
con un canal.
Curso: Introduccin a la VoIP y Asterisk
Variables Asterisk tiene distintos tipos de variables
Globales: Afectan a todos los canales De canal: Solo afectan al canal actual Del entorno (entorno UNIX)
7/30/2019 Introduccion a La VoIP y Asterisk
143/286
143
e e o o (e o o U ) Una lista completa de las variables:
http://www.voip-info.org/wiki-Asterisk+variables Las variables se pueden recortar:
${variable:desplazamiento:longitud} por ejemplo: ${variable}=saghul -> ${variable:1} => aghul
${variable:0:2}=sa Se soportan expresiones bsicas, encerrndolas entre
corchetes:
exten => 1234,1,Set(kosa=$[6*5]) Variables globales:
exten => 1234,1,Set(GLOBAL(kosa)=algo)
Curso: Introduccin a la VoIP y Asterisk
Variables (2)
Variables de canal definidas automticamente
Listado de variables ms importantes:
http://www.voip-info.org/wiki-Asterisk+variableshttp://www.voip-info.org/wiki-Asterisk+variables7/30/2019 Introduccion a La VoIP y Asterisk
144/286
144
p ${CALLERID}: Caller ID actual, nombre y nmero. ${CONTEXT}: Contexto actual. ${EXTEN}: Extensin actual.
${CHANNEL}: Canal actual. ${DIALSTATUS}: Estado de la llamada. ${DATETIME}: Hora actual.
Una aplicacin til para ver el contenido es NoOp: NoOp ( ${VARIABLE} )
Nos mostrar en el CLI el valor de la variable.
Curso: Introduccin a la VoIP y Asterisk
Funciones
Se utilizan en el dialplan, pero dentro de lasaplicaciones, sirven para trabajar con datos: LEN: Devuelve la longitud de una cadena
7/30/2019 Introduccion a La VoIP y Asterisk
145/286
145
gNoop(LEN(kosa)) //devuelve 4
CALLERID: Fija o lee el valor del callerid:Set(numero=CALLERID(number))
Para obtener una lista completa de funcionespodemos ejecutar:
*CLI>core show functions En general NO actan sobre un canal y pueden ir en
cualquier sitio en el que pueda ir una variable.
Curso: Introduccin a la VoIP y Asterisk
La aplicacin Dial
La aplicacin Dial permite realizar una llamadaa un dispositivo. Su formato ms sencillo es:Dial(Tecnologa/dispositivo,tiemout,opciones)
Donde opciones puede ser:
7/30/2019 Introduccion a La VoIP y Asterisk
146/286
146
Donde opciones puede ser: t: Permitir que el usuario llamado transfiera
la llamada. T: Permitir que el llamante transfiera la
llamada. r: Generar un tono de ring artificial. w: Permite al usuario llamado grabar la
llamada. W: Permite que el llamante grabe la llamada.
Curso: Introduccin a la VoIP y Asterisk
La aplicacin Dial (2)
Tras un Dial correcto (se contesta la llamada),se termina la ejecucin de acciones en eldialplan y se pasa a la extensin h (si existe):
7/30/2019 Introduccion a La VoIP y Asterisk
147/286
147
exten => 1234,1,Dial(SIP/saghul)exten => 1234,n,NoOp(Algo ha ido mal...)
La variable DIALSTATUS contiene informacinacerca del ltimo Dial realizado. Puede tomarlos siguientes valores, entre otros: BUSY,
NOANSWER, CHANUNAVAIL, ... Nos puede servir para hacer distintas cosas
dependiendo del estado de la ltima llamada.
Curso: Introduccin a la VoIP y Asterisk
La aplicacin Dial (3)
Ms informacin sobre Dial: core show application dial (en el CLI de
Asterisk) http://www.voip-info.org/wiki-Asterisk+cmd+Dial
http://www.voip-info.org/wiki-Asterisk+cmd+Dialhttp://www.voip-info.org/wiki-Asterisk+cmd+Dial7/30/2019 Introduccion a La VoIP y Asterisk
148/286
148
http://www.voip info.org/wiki Asterisk+cmd+Dial http://www.voip-info.org/wiki/view/Asterisk+variable+DIALSTATU
Curso: Introduccin a la VoIP y Asterisk
La aplicacin Goto
Permite realizar saltos dentro del dialplan. Se pueden realizar saltos en base a:
Prioridad o etiqueta.Extensin y prioridad (o etiqueta)
http://www.voip-info.org/wiki-Asterisk+cmd+Dialhttp://www.voip-info.org/wiki/view/Asterisk+variable+DIALSTATUShttp://www.voip-info.org/wiki/view/Asterisk+variable+DIALSTATUShttp://www.voip-info.org/wiki-Asterisk+cmd+Dial7/30/2019 Introduccion a La VoIP y Asterisk
149/286
149
Extensin y prioridad (o etiqueta). Contexto, extensin y prioridad (o etiqueta).
Por ejemplo:
exten => 1234,1,Goto(servicios,1234,1)
Curso: Introduccin a la VoIP y Asterisk
Playback
Esta aplicacin reproduce un fichero deaudio (o vdeo) al usuario.
SintaxisPlayback(nombre-del-fichero)
7/30/2019 Introduccion a La VoIP y Asterisk
150/286
150
Playback(nombre del fichero)
Curso: Introduccin a la VoIP y Asterisk
Echo
Reproduce el sonido de entrada por el canalde salida.
Muy til para comprobar si hay audiobidireccional a la hora de depurar
7/30/2019 Introduccion a La VoIP y Asterisk
151/286
151
bidireccional, a la hora de depurarproblemas...
Curso: Introduccin a la VoIP y Asterisk
Ejercicio
Receta: Crear un contexto internas donde se indica como
llamar a las extensiones internas.C t t i i l i i d
7/30/2019 Introduccion a La VoIP y Asterisk
152/286
152
Crear un contexto servicios con los servicios de ecoy demo.
Crear el contexto telf-internos que incluya los 2contextos anteriores y hacer que los dispositivos SIPutilicen este contexto.
Incluir el contexto internas en el contexto default,para que si permitieramos llamadas entrantes, solopudieran llamar a los telfonos, pero no usar losservicios.
Curso: Introduccin a la VoIP y Asterisk
Ejercicio (solucin)
[default]include => internas
[servicios]exten => 400,1,Answer()exten => 400,n,Playback(beep)
00 h ()
extensions.conf
7/30/2019 Introduccion a La VoIP y Asterisk
153/286
153
exten => 400,n,Echo()exten => 401,1,Answer()exten => 401,n,Playback(demo-congrats)exten => 401,n,Hangup
[internas]
exten => 200,1,Dial(SIP/softphone,45,Tt)exten => 200,n,Goto(200-${DIALSTATUS},1)exten => 200-BUSY,1,Busy(5)exten => _200-.,1,Congestion(5)
exten => 201,1,Dial(SIP/hardphone,45,Tt)exten => 201,n,Goto(201-${DIALSTATUS},1)exten => 201-BUSY,1,Busy(5)exten => _201-.,1,Congestion(5)
[telf-internos]include => internasinclude => servicios
Curso: Introduccin a la VoIP y Asterisk
Ejercicio (solucin) (2)[general]context=default
[softphone]type=friend
sip.conf
7/30/2019 Introduccion a La VoIP y Asterisk
154/286
154
ype e dsecret=1234context=telf-internoshost=dynamic
disallow=allallow=alaw
[hardphone]type=friend
secret=1234context=telf-internoshost=dynamicdisallow=allallow=alaw
A li i d l Di l l
7/30/2019 Introduccion a La VoIP y Asterisk
155/286
Aplicaciones del Dialplan
Curso: Introduccin a la VoIP y Asterisk
Asterisk PBX: Aplicaciones en el dialplan
Aplicaciones Generales
Las aplicaciones generales msimportantes son:
7/30/2019 Introduccion a La VoIP y Asterisk
156/286
156
p Wait (n)
Espera n segundos, ignorando los dgitosmarcados durante.
WaitExten (n) Espera n segundos, pero gestionando los dgitos
marcados.
MusicOnHold(clase, n)
Reproduce msica en espera durante nsegundos.
NoOp (mensaje) Imprime el mensaje en el CLI
Curso: Introduccin a la VoIP y Asterisk
Asterisk PBX: Aplicaciones en el dialplan
Gestin de llamadas
Los comandos de gestin de llamadas ms importantes: Answer()
Acepta la llamada entrante por el canal
7/30/2019 Introduccion a La VoIP y Asterisk
157/286
157
Acepta la llamada entrante por el canal. Busy()
Enva la seal de ocupado al origen.
Congestion() Enva la seal de congestin al origen.
Hangup() Cuelga la llamada.
Ringing() Enva la seal de tono de llamada.
Curso: Introduccin a la VoIP y Asterisk
Asterisk PBX: Aplicaciones en el dialplan
Control de flujo
Algunos comandos de control de flujo ytemporizacin:
7/30/2019 Introduccion a La VoIP y Asterisk
158/286
158
temporizacin: Goto (contexto, extension, prioridad)
Salta al contexto, extensin y prioridad del
argumento. GotoIf ( expresin ? prioridad1 : prioridad2 )
Salta a la prioridad1 si la expresin esverdadera.
Salta a la prioridad2 si la expresin es falsa.
GotoIfTime(|||?[[context|]exten|]priority)
Curso: Introduccin a la VoIP y Asterisk
Asterisk PBX: Aplicaciones en el dialplan
Reproduccin de sonidos
Algunas aplicaciones para la reproduccin: PlayBack (fichero )
7/30/2019 Introduccion a La VoIP y Asterisk
159/286
159
y ( ) Reproduce el fichero, continua la ejecucin cuando
finaliza.
Background (fichero) Reproduce el fichero, pero continua la ejecucin
inmediatamente.
SayDigits (dgitos) Reproduce los dgitos
PlayTones (tonos) Reproduce los tonos indicados
Curso: Introduccin a la VoIP y Asterisk
Asterisk PBX: ExpresionesSyntaxis de las Expresiones
Es posible utilizar expresiones en las llamadas a
aplicaciones (principalmente: GotoIf) Syntaxis:
7/30/2019 Introduccion a La VoIP y Asterisk
160/286
160
y$[expr1 operador expr2]
Operadores Lgicos: |(or) , &(AND) Operadores de Comparacin: =, !=, , = Operadores Aritmticos: +, -, *, /, % [...] , Ejemplos:
exten => 1,1,Set(total=$[1 + 1])
exten => 1,2,GotoIf($[${CALLERID(num)}=123456]?10:20)
Buzones de voz
7/30/2019 Introduccion a La VoIP y Asterisk
161/286
Buzones de voz
Curso: Introduccin a la VoIP y Asterisk
Voicemail
Asterisk dispone de un completo sistema debuzones de voz gestionable mediante 2
aplicaciones: VoicemailMain: Men interactivo desde el
d h l j b
7/30/2019 Introduccion a La VoIP y Asterisk
162/286
162
que podemos escuchar los mensajes, grabarnuestos mensajes personalizados, cambiar lacontrasea,
Voicemail: Aplicacin para dejar un mensajeen el buzn de un usuario.
Se configuran en el fichero voicemail.conf
Curso: Introduccin a la VoIP y Asterisk
Voicemail
Estructura del fichero voicemail.conf
[general]Opciones generales
7/30/2019 Introduccion a La VoIP y Asterisk
163/286
163
Opciones generales
[zonemessages]
Definicin de formatos de hora por zona
[contexto de buzones]Buzones
Curso: Introduccin a la VoIP y Asterisk
Voicemail
voicemail.conf parmetros importantes
Language: Idioma del sistema de buzones. Format: formato en el que se guardarn los
7/30/2019 Introduccion a La VoIP y Asterisk
164/286
164
Format: formato en el que se guardarn losmensajes de voz.
Attach: Indica si se enviar el fichero de audio
como un adjunto en el email de notificacin.
Definicin de un buzn: Nmero => clave, nombre, email 1234 => 1234, Sal Ibarra, [email protected]
Macros
7/30/2019 Introduccion a La VoIP y Asterisk
165/286
Macros
Curso: Introduccin a la VoIP y Asterisk
Macros
Son contextos con un comportamiento distinto. Admiten parmetros. Empiezan siempre con la extensin s. Son como subprogramas, se utilizan para no repetir cdigo
en el dialplan.
7/30/2019 Introduccion a La VoIP y Asterisk
166/286
166
Ejemplo de macro que muestra en el CLI el parmetro quese le pasa:
[macro-prueba]
exten => s,1,Answer()exten => s,n,Playback(demo-congrats)exten => s,n,Noop(${ARG1})exten => s,n,Hangup
Para llamar a la macro:
exten => 1234,1,Macro(prueba,${variable})
Curso: Introduccin a la VoIP y Asterisk
Macros
Todos los argumentos son accesibles mediante ARG1, ARG2,ARG3,
Variables especiales
MACRO_EXTEN: Extensin desde la que se llam a lamacro. EXTEN contendra 's'! MACRO CONTEXT: Contexto desde el que se llam a
7/30/2019 Introduccion a La VoIP y Asterisk
167/286
167
MACRO_CONTEXT: Contexto desde el que se llam ala macro. CONTEXT contendra el nombre de lamacro!
MACRO_PRIORITY: Prioridad desde la que se llam ala macro. PRIORITY contendra la prioridad dentro dela macro!
Las macros finalizan al quedarse sin ms prioridades paraejecutar
Vuelven al contexto desde el que fueron llamadas MacroExit provoca una salida inmediata
Curso: Introduccin a la VoIP y Asterisk
Ejercicio
Disear una macro para llamar a losusuarios tal que si esta ocupado le
mandaremos al buzn dando unmensaje de ocupado y si no responde
7/30/2019 Introduccion a La VoIP y Asterisk
168/286
168
le mandaremos al buzn dando unmensaje de no disponible.
Si hay algn error (ni BUSY niNOANSWER) le damos tonos deocupado.
Curso: Introduccin a la VoIP y Asterisk
Ejercicio
[macro-prueba]exten => s,1,Dial(${ARG1},30,Tt)exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-BUSY,1,Voicemail(${MACRO_EXTEN},b)exten => s-BUSY,n,Hangupexten => s-NOANSWER,1,Voicemail(${MACRO_EXTEN},u)
t NOANSWER H
7/30/2019 Introduccion a La VoIP y Asterisk
169/286
169
exten => s-NOANSWER,n,Hangupexten => _s-.,1,Answer()exten => _s-.,n,Playtones(busy)
exten => _s-.,n,Busy(5)
IVRs
7/30/2019 Introduccion a La VoIP y Asterisk
170/286
IVRs
Curso: Introduccin a la VoIP y Asterisk
IVRs
Un IVR (Interactive Voice Response) es unmen con el que el usuario puede
interactuar mediante pulsaciones DTMF. Tradicionalmente comienza con la
t i
7/30/2019 Introduccion a La VoIP y Asterisk
171/286
171
extensin s. Se comprueba la hora para decidir la
siguiente accin. Se reproduce un mensaje de bienvenida y
se esperan las pulsaciones del usuario. Se controlan las extensiones t e i, por si
el usuario no pulsa nada en el tiempo fijadoo realiza una pulsacin incorrecta.
Curso: Introduccin a la VoIP y Asterisk
IVRs (2)
Para que no se entre en un bucle infinito, sesuelen fijar 2 tipos de retardo: tiempo inter-
digito y el tiempo de respuesta total.Set(TIMEOUT(digit)=3)
7/30/2019 Introduccion a La VoIP y Asterisk
172/286
172
Set(TIMEOUT(digit)=3)Set(TIMEOUT(response)=9)
Curso: Introduccin a la VoIP y Asterisk
IVRs (3)
AplicacinWaitExten
LlamadaEntrada en el men interactivo
7/30/2019 Introduccion a La VoIP y Asterisk
173/286
173
Timeout?
Aplicacin
Salta a EXT t
Existeextensin
?AplicacinSalta a EXT i
Aplicacin
Llamar extensin
S
No No
S
Curso: Introduccin a la VoIP y Asterisk
Ejercicio
Disear un IVR con las siguientescaractersticas:
Al pulsar 1 llame al softphone Al pulsar 2 llame al hardphone Al pulsar 3 reproduzca la locucin de los monos
7/30/2019 Introduccion a La VoIP y Asterisk
174/286
174
Al pulsar 3 reproduzca la locucin de los monos Al pulsar 4 reproduzca msica en espera de
manera infinita Al pulsar 5 dejemos un mensaje en el buzn del
softphone
Curso: Introduccin a la VoIP y Asterisk
Ejercicio
[ivr]
exten => s,1,Answer
exten => s,n,Set(TIMEOUT(digit)=3)exten => s,n,Set(TIMEOUT(response)=6)
t B k d(bi id )
7/30/2019 Introduccion a La VoIP y Asterisk
175/286
175
exten => s,n,Background(bienvenida)
exten => s,n,WaitExten(3)
exten => 1,1,Dial(SIP/softphone)
exten => 2,1,Dial(SIP/hardphone)
exten => 3,1,Playback(tt-monkeys)
exten => 3,n,Hangupexten => 4,1,MusicOnHold()
exten => 5,1,Voicemail(1234,s)
Dialplan avanzado
7/30/2019 Introduccion a La VoIP y Asterisk
176/286
a p a a a ado
Curso: Introduccin a la VoIP y Asterisk
AstDB
Asterisk incorpora una BD tipo Berkley DBv2.
En ella el propio Asterisk guarda diversosvalores:Registros SIP IAX
7/30/2019 Introduccion a La VoIP y Asterisk
177/286
177
Registros SIP, IAX. Informacin sobre colas.
Nosotros tambin podemos guardarinformacin en ella y consultarla desde eldialplan.
Se organiza en familias, y dentro de una
familia puedes tener diversas claves, y paracada clave un solo valor.
Curso: Introduccin a la VoIP y Asterisk
AstDB (2)
Ejemplo desde el CLI:
*CLI> database put mifamilia miclave mivalorUpdated database successfully
*CLI> database show mifamilia
7/30/2019 Introduccion a La VoIP y Asterisk
178/286
178
*CLI> database show mifamilia/mifamilia/miclave : mivalor
*CLI> database put mifamilia miclave mivalor2Updated database successfully
*CLI> database show mifamilia/mifamilia/miclave : mivalor2
Curso: Introduccin a la VoIP y Asterisk
AstDB (3)
Desde el dialplan: Set(var=${DB(familia/clave)}) Set(DB(familia/clave)=${var})
7/30/2019 Introduccion a La VoIP y Asterisk
179/286
179
Curso: Introduccin a la VoIP y Asterisk
Ejercicio
Desarrollar una macro que implemente DND (DoNot Disturb)
Si la extensin a la que llamamos tiene el DNDactivado reproducimos un mensaje de extensinno disponible.Si l ti ti d l ll
7/30/2019 Introduccion a La VoIP y Asterisk
180/286
180
Si no lo tiene activado, le llamamos. Si no contesta o esta ocupado, le mandamos al
buzn. Pistas:
Funcin DB_EXISTS. Aplicacin GotoIf.
Variable MACRO_EXTEN.
Curso: Introduccin a la VoIP y Asterisk
Ejercicio
[macro-llamar]exten => s,1,GotoIf($[${DB_EXISTS(DND/${MACRO_EXTEN})} = 0]?s,llamar)exten => s,n,Playback(vm-extension)exten => s,n,Playback(vm-isunavail)exten => s,n,Hangupexten => s,n(llamar),Dial(${ARG1},45,Tt)exten => s,n,Goto(s-${DIALSTATUS},1)exten > s BUSY 1 Voicemail(${MACRO EXTEN}|b)
7/30/2019 Introduccion a La VoIP y Asterisk
181/286
181
exten => s-BUSY,1,Voicemail(${MACRO_EXTEN}|b)exten => s-BUSY,n,Hangupexten => s-NOANSWER,1,Voicemail(${MACRO_EXTEN}|u)
exten => s-NOANSWER,n,Hangupexten => _s-.,1,Answer()exten => _s-.,n,Playtones(busy)exten => _s-.,n,Busy(5)
Curso: Introduccin a la VoIP y Asterisk
Ejercicio
Ampliar la macro anterior para que implemente CF(Call Forward)
Primero se comprueba el DND, y luego el CF. El desvo puede realizarse a cualquier nmero que
los telfonos internos puedan marcar (contexto telf-internos)
7/30/2019 Introduccion a La VoIP y Asterisk
182/286
182
internos) Pistas:
Funcin DB_EXISTS. Variable DB_RESULT.
Curso: Introduccin a la VoIP y Asterisk
Ejercicio
[macro-llamar]exten => s,1,GotoIf($[${DB_EXISTS(DND/${MACRO_EXTEN})} = 0]?s,comp-cf)exten => s,n,Playback(vm-extension)exten => s,n,Playback(vm-isunavail)
exten => s,n,Hangupexten => s,n(comp-cf),GotoIf($[${DB_EXISTS(CF/${MACRO_EXTEN})} = 0]?s,llamar)exten => s,n,Goto(telf-internos,${DB_RESULT},1)exten => s,n(llamar),Dial(${ARG1},45,Tt)
7/30/2019 Introduccion a La VoIP y Asterisk
183/286
183
exten => s,n,Goto(s-${DIALSTATUS},1)exten => s-BUSY,1,Voicemail(${MACRO_EXTEN}|b)exten => s-BUSY,n,Hangup
exten => s-NOANSWER,1,Voicemail(${MACRO_EXTEN}|u)exten => s-NOANSWER,n,Hangupexten => _s-.,1,Answer()exten => _s-.,n,Playtones(busy)exten => _s-.,n,Busy(5)
Otras funcionalidades dePBX
7/30/2019 Introduccion a La VoIP y Asterisk
184/286
PBX
Curso: Introduccin a la VoIP y Asterisk
Asterisk como PBXAsterisk como PBX
Toda la secuencia y programacin deldialplan es el verdadero ncleo del sistemacentralita, si bien, las siguientesf i lid d fi
7/30/2019 Introduccion a La VoIP y Asterisk
185/286
185
funcionalidades se configuran enfeatures.conf: Transferencias de llamadas: transferencia de
llamadas entre diversos usuarios,independientemente de la tecnologa que usen.
Call Parking: Parking de llamadas.
Call PickUp: Auto-transferencia (o robo dellamada) de un telfono que est sonando.
Curso: Introduccin a la VoIP y Asterisk
Asterisk como PBXTransferencias
En caso de SIP e IAX2: La transferencia DEBE ser nativa. Elusuario SIP es el dueo de su llamada!
En features.conf se especifica: blindxfer => secuencia
Permite realizar una transferencia de llamada a ciegasmarcando la secuencia.
7/30/2019 Introduccion a La VoIP y Asterisk
186/286
186
marcando la secuencia. atxfer => secuencia
Permite realizar una transferencia de llamada atendida.El origen es puesto en espera, mientras el destino secomunica con el nuevo destino para anunciarle lallamada. Si el nuevo destino cuelga, la llamada no setransfiere.
pickupexten => secuencia
Especifica como coger una llamada del grupo (callgroup).
Curso: Introduccin a la VoIP y Asterisk
Asterisk como PBXMsica en Espera
Asterisk puede poner un canal dado en espera ('HOLD'),principalmente en las siguientes situaciones:
Durante una transferencia. Durante una llamada si se ha especificado el
parmetro 'm', que indica que no se oir tono dellamada sino msica en espera
7/30/2019 Introduccion a La VoIP y Asterisk
187/286
187
llamada sino msica en espera. Durante una espera en el parking.
Si la aplicacin MusicOnHold ha sido llamada desde elDialPlan. Si el destino de la llamada ha solicitado
explcitamente que la llamada sea puesta en espera. Es posible tener distintos tipos de msica en espera. La msica en espera se configura en el fichero
musiconhold.conf
Curso: Introduccin a la VoIP y Asterisk
Asterisk como PBXCallParking (I)
El callparking es una funcionalidad que permite
transferir la llamada a un 'parking' virtual. Pudiendocolgar sin que la llamada origen sea desconectadade Asterisk, ya que se encontrar aparcada.
7/30/2019 Introduccion a La VoIP y Asterisk
188/286
188
Usuario: Tienes una llamada por la 3
Para operar, el usuario transfiere la llamada a unaextensin especial (parkext en features.conf),Asterisk aparca la llamada y anuncia la posicin enel parking.
Cualquier usuario que tenga incluido en su contextoel contexto especial 'parkedcalls' puede recuperarla llamada aparcada llamando directamente a suposicin en el parking.
Curso: Introduccin a la VoIP y Asterisk
Asterisk como PBX
CallParking (II)
1) A y B estn en conversacin.
7/30/2019 Introduccion a La VoIP y Asterisk
189/286
189
2) A transfiera al 700 y 'aparca' a B enel Parking 701.
A B
A
3. Ests aparcadoMsica en espera
B
1. Llamar 700
2. Anuncio de *:B aparcado en 701
Curso: Introduccin a la VoIP y Asterisk
Asterisk como PBX
CallParking (III)
3) Desde otro telfono C se puede recoger aB del Parking marcando el 701.
7/30/2019 Introduccion a La VoIP y Asterisk
190/286
190
4) C y B estn en conversacin.
C
1. Llamar 701
C B
Curso: Introduccin a la VoIP y Asterisk
Asterisk como PBXCallPickup 'CallPickup' es el hecho de poder descolgar y
responder a la llamada entrante a un telfono o
grupo de telfonos determinado desde un tercertelfono que no est sonando. La configuracin de los cdigos DTMF para
7/30/2019 Introduccion a La VoIP y Asterisk
191/286
191
'CallPickup' se configura en features.conf Se definen dos conceptos:
callgroup: Toda llamada que entra a unaextensin determinada pertenece al/loscallgroups de la extensin.
pickupgroup: Es el/los callgroups de llamadas
entrantes que el usuario puede hacer 'pickup'. En cada usuario de la centralita se pueden definir
esos dos parmetros.
Curso: Introduccin a la VoIP y Asterisk
Asterisk como PBXCallPickup (II)
La aplicacin PickUp nos permite hacer una
captura 'dirigida' de una llamada Podemos seleccionar cual de las llamadas
queremos capturar.
7/30/2019 Introduccion a La VoIP y Asterisk
192/286
192
q p
exten => *8XXX,1,PickUp(${EXTEN:2}@usuarios)
Curso: Introduccin a la VoIP y Asterisk
DISADISA
La aplicacin DISA nos permite ofrecer un tono de
marcado al usuario para que ste (opcionalmente)se autentique y llame desde el contexto indicado
7/30/2019 Introduccion a La VoIP y Asterisk
193/286
193
exten => 1234,1,DISA(no-password, desde-disa)
Construyendo un dialplansostenible
7/30/2019 Introduccion a La VoIP y Asterisk
194/286
Curso: Introduccin a la VoIP y Asterisk
Escenario sencillo
Muy tpico, una oficina con: Telefona SIP interna. Entrantes va PSTN:
2 numeraciones, 2 departamentos, horario, buzn de voz.
Salientes va PSTN y proveedor VoIP:
7/30/2019 Introduccion a La VoIP y Asterisk
195/286
195
Salientes va PSTN y proveedor VoIP: Segn destino.
Servicios internos: Consulta de buzn, conferencia.
Curso: Introduccin a la VoIP y Asterisk
Dialplan poco mantenible (I)
sip.conf[plantilla-usuarios](!)
type = friendhost = dynamic
secret = ****
canreinvite = yes
context = usuarios
7/30/2019 Introduccion a La VoIP y Asterisk
196/286
196
context usuarios
[200](plantilla-usuarios)
[201](plantilla-usuarios)[202](plantilla-usuarios)
...
Curso: Introduccin a la VoIP y Asterisk
Dialplan poco mantenible (II)
extensions.conf[usuarios]
; A usuarios internos:
exten => _2XX,1,Dial(SIP/${EXTEN}|80|tT)
; Nacionales:
exten => [6789]XXXXXXXX,1,Dial(mISDN/g:bri/${EXTEN}|80|T)
7/30/2019 Introduccion a La VoIP y Asterisk
197/286
197
exten _[6789]XXXXXXXX,1,Dial(mISDN/g:bri/${EXTEN}|80|T)
; Extranjero:
exten => _00.,1,Dial(SIP/proveedor-voip/${EXTEN}|80|T)
; Urgencias:exten => 112,1,Dial(mISDN/g:bri/112||T)
; Nmeros cortos:
exten => _1XXX,1,Dial(mISDN/g:bri/${EXTEN}|80|T)
; Consulta buzn de voz:
exten => 500,1,VoiceMailMain(buzon-entrantes)
; Sala de conferencia:exten => 501,1,MeetMe(501)
Curso: Introduccin a la VoIP y Asterisk
Dialplan poco mantenible (III)
[entrantes-rdsi]
; Departamento de ventas:
exten => 999000111,1,Macro(comprueba-horario-ventas)exten => 999000111,n,Goto(999000111-${HORARIO},1)
exten => 999000111-DENTRO,1,Queue(ventas|wt|||45)
7/30/2019 Introduccion a La VoIP y Asterisk
198/286
198
exten => 999000111-FUERA,1,PlayBack(fuera-de-horario)
exten => 999000111-FUERA,n,VoiceMail(buzon-entrantes,s)
; Departamento tcnico:
exten => 999000222,1,Macro(comprueba-horario-tecnicos)
...dem...
[macro-comprueba-horario-ventas]
...
[macro-comprueba-horario-tecnicos]
...
Curso: Introduccin a la VoIP y Asterisk
Dialplan poco mantenible (V)
Pero las cosas cambian con el tiempo: Numeraciones Lneas Personas Necesidades
7/30/2019 Introduccion a La VoIP y Asterisk
199/286
199
Necesidades etc... Y esto nos lo piden estando Asterisk en
produccin !!!
Curso: Introduccin a la VoIP y Asterisk
Dialplan poco mantenible (VI)
Qu desemboca un mnimo cambio? Ej: Contratan 2 becarios y no quieren que llamen al
extranjero (?? ... pero el cliente manda) Solucin a-toda-prisa:
sip.conf
7/30/2019 Introduccion a La VoIP y Asterisk
200/286
200
p[plantilla-becarios](!)
context = becarios
secret = ******
...
[210](plantilla-becarios)
[211](plantilla-becarios)
Curso: Introduccin a la VoIP y Asterisk
Dialplan poco mantenible (VII)
extensions.conf[becarios]
; A usuarios internos:
exten => _2XX,1,Dial(SIP/${EXTEN}|80|tT)
; Nacionales:
exten => _[6789]XXXXXXXX,1,Dial(mISDN/g:bri/${EXTEN}|80|T)
7/30/2019 Introduccion a La VoIP y Asterisk
201/286
201
; Extranjero:
exten => _00.,1,Dial(SIP/proveedor-voip/${EXTEN}|80|T)
; Urgencias:exten => 112,1,Dial(mISDN/g:bri/112||T)
; Nmeros cortos:
exten => _1XXX,1,Dial(mISDN/g:bri/${EXTEN}|80|T)
; Consulta buzn de voz:
exten => 500,1,VoiceMailMain(buzon-entrantes)
; Sala de conferencia:exten => 501,1,MeetMe(501)
Curso: Introduccin a la VoIP y Asterisk
Dialplan poco mantenible (VIII)
Ahora nos piden alargar la duracin de la llamada. Ala, a cambiarlo en 30 sitios.
Nos piden otra sala de conferencia 502. Lo mismo.
Se nos olvid los nmeros de emergencias 0XX !
7/30/2019 Introduccion a La VoIP y Asterisk
202/286
202
g Aadir en ambos contextos:
exten => _0XX,1,Dial(mISDN/g:bri/${EXTEN}||T)
Y puede ser peor...
Curso: Introduccin a la VoIP y Asterisk
Dialplan poco mantenible (IX)
Nos piden conectar una FCT por FXO para llamadasva GSM (ahorro de coste).
A duplicar cdigo otra vez. Cambian los nmeros RDSI.
Toca modificar muchas lneas.
7/30/2019 Introduccion a La VoIP y Asterisk
203/286
203
Permitir entrantes va GSM al dept. ventas.
Duplicar cdigo o la super-apa:[entrantes-trac]
exten => s,1,Goto(entrantes-rdsi,999000111,1)
ahhhhhh !!!
Curso: Introduccin a la VoIP y Asterisk
Dialplan mantenible (I)
sip.conf; Empleados:
[plantilla-empleados](!)...
context = desde-empleados
[200](plantilla-empleados)