3 de febr. 2007

charla asterisk #asterisk-es

Hoy hago el post en castellano ya que habrá gente de habla castellana que entrará en el blog a ver la información contenida en este post.

Actualmente se está trabajando des de los hacklabs en un proyecto que los uniria entre ellos además de con la lista ;) asterisk.

asterisk es una centralita por VoIP y permite simular la arxiconocida red de telefonía, esto nos permetrá realizar llamadas entre nuestra red sin ningún coste añadido a nuestra conexión a internet y un hardware no demasiado caro.

aquí teneís un resumen con lo mas importante que se realizó en la sala irc #asterisk-es de freenode.net el 3 de febrero de 2007 a las 18:00:


instal·lem els paquets:
apt-get install asterisk asterisk-config asterisk-gtk-console asterisk-sounds-main
hi ha un asterisk-gui per algun puesto que és la interfície gràfica de l'asterisk

bien, los usuarios sip se definen en el fichero sip.conf. es un fichero dividido por bloques donde cada bloque empieza con unos chorchete [] y termina cuando empiezan otros corchetes []

exemple:

[apardo]
type=friend
username=apardo
secret=blablabla
host=dynamic
context=casita


bien, como podeis ver en esa url estamos definiendo un bloque para un usuario. el tipo de conexión es 'friend', esto quiere decir que lo podremos usar para enviar y recbiir llamadas, que el host de apardo es dinamico, podria ser una dirección ip o nombre fijo, y el item mas importante: que pertenece al contexto 'casita'
mas tarde hablaremos de los contextos
con esa configuración ya podriamos usar un softphone o telefono ip hardware para conectarnos a nuestro servidor asterisk. usando la dirección ip del servidor, nuestro usuario y nuestra contraseña.
pero no podriamos hacer mucho mas, luego hablaremos del dialplan o plan de marcado

hay muchas otras opciones que le podemos definir a un usuario. el fichero sip.conf está muy bien comentado y en este sitio podeis seguir profundizando: http://www.voip-info.org/wiki-Asterisk+config+sip.conf

ok, con esto y los puertos correspondientes abiertos ya podriamos usar el asterisk?
con el telefono VoIP, twinkle o ekiga
Blackhold: si



iax es usando comunmente para la interconexión de servidores asterisk aunque tambien hay softphones o telefonos ip hardware que disponen de este protocolo
un usuario iax lo definimos en el fichero iax.conf
y la forma de configurarlo es muy similar a un usuario sip
algunos ejemplos de dichos telefonos y softphones ???? que soporten IAX2?
<_saghul_> telefonos: atcom at-320, softphones: idefisk
<_saghul_> tb tienes el ATA de digium IAXy

como decia, para definir un usuario iax en iax.conf sería algo asi: http://rafb.net/p/DZotD691.html

[ews]
type=friend
username=ews
secret=blibli
host=dynamic
context=ews

como podeis ver no difiere mucho de una configuración sip
<_saghul_> inciso: podeis encontrar todos los samples de asterisk en www.asterisk.org/doxygen
vuestro sitio de referencia a parte de la documetnación de asterisk.org y digum es voip-info.org

bien, y la ultima forma de conectar a nuestro asterisk que vamos a comentar hoy es a través de un interfax fxs y un interfaz fxo

bien, un inrtefax fxs lo tenemos casi todos nosotros en casa
define interfaz fxs
es el agujerito de la roseta del operador telefonico de turno con un conector r11 donde conectamos nuestro telefono
<_saghul_> FXS: Foreign eXchange Station :)

un intefax fxs como dice _saghul_le da chica a nuestro telefono
un telefono tiene un intefax fxo
así que por ejempo
ejemplo
si tenemos una tarjerta con un interfax fxs y otro fxo, el fxs lo conectaremos a nuestro telefono y el fxo a nuestra linea telefonica
me explico ?
xD
yo con exto me hacia un lio enorme :)


en vez de una tarjeta pci con esos interfaces tambien podemos usar un dispositivo ata que suele venir con un fxo, un fxs y la vez es un cliente sip que se conectar al servidor por ip a traves del interfaz ethernet
_saghul_> nos permiten interactuar con lineas telefonicas analogicas y con telefonos analogicos
<_saghul_> Analog Telephone Adaptet: adaptador de telefono analogico

alwar: el ata normalmente si es mas barato que las pci. aunque si quieres jugar con pci en casa y no quieres gastarte mucho dinero buscan en ebay por tarjeta x100p, aunque no las recomiendo para instalaciones serias...
<_saghul_> lo que has conectado es el telefono a una FXS
Blackhold: http://en.wikipedia.org/wiki/Analog_Telephony_Adapter
todo eso biene documentado en vo-ip.org (creo que es así)
apardo, para instalaciones serias que tarjeta recomiendas? cuál usas tu, por ejemplo?
Blackhold: yo en casa uso una tdm11b de digum que me salio por unos 200 y pico $
apardo> pollox: la tdm11b de digium soporta hasta cuatro modulos ,yo solo tengo 1 modulo fxs y otro modulos fxo

apardo, también es para saber cuál comprar para el hacklab
Blackhold: una x100p seria lo suyo o un ata
si quereis tarjetas profesionales mejor usar de digium o sangoma


y como haces 3 lllamadas por una linea analog?
<_saghul_> Lo de las 3 llamadas: contratas un DID geografico con un proveedor, Voxbone p.e.
<_saghul_> te dan 2 canales






bien, otro problema que nos vamos a encontrar con sip si lo usamos via internet es con el NAT
aquí teneis mas info al respecto: http://www.voip-info.org/wiki-NAT+and+VOIP



los servidores stun se suelen usar para majera el flujo rtp por el que va el audio o el video






la configuración del plan de marcado (dialplan) que se configura en el fichero extensions.conf
como casi cualquier fichero de configuración en asterisk, el fichero extensions.conf está dividido por bloques separados por corchetes []
apardo> despues de unas configuraciones generales y variables globales pasamos a definir los contextos de los que hablabamos antes
bien, ¿qué es un contexto?
pues un contexto es la forma que tiene asterisk para separar unos recursos de otros
como las listas de control de acceso (ACL) en otros sistemas
por ejemplo, podemos tener un contexto al que solo tengan acceso un grupo de usuarios y otro contexto al que solo tenga acceso yo
como grupos no?
si soy un proveedor de telefonia ip puedo tener un contexto para un cliente y otro contexto diferenrte para otro cliente. en el primer contexto se podrian hacer llamadas a moviles y el segundo conrtexto no.... me explico ?
alwar: si, como un grupo de usuarios
Blackhold> apardo, lo de limitar llamar a numeros 902 por ejemplo
Blackhold: por ejemplo....
bien, vamos a ver un contexto muy simple: http://rafb.net/p/3tFKCl13.html

[phone]
exten => s,1,Wait(1)
exten => s,2,Dial(SIP/apardo,30,tr)
exten => s,3,Voicemail(2000|su)
exten => s,4,Hangup

bien, ese contexto que vemos se llama 'phone'
cuando una llamada vengan por el canal (internet, rtb, rdsi) que venga entre en ese contexto lo primero que se va a ejecutar es la aplicación Wait
alwar> apardo s,1 s,2 ... son reglas o cosas que se ejecutan una de tras de otra?
si, s es una extension especial que significa ''start' y 1, 2, 3 son las prioridades
y estas reglas las defines/vienen definidas por el sistema en algun sitio?
<_saghul_> hay algunas estandar, y luego defines tu las que auieras
Blackhold: las tienes que definir tu a pelo si quieres aprender como va bien o puedes usar aplicaciones que te facilitan la vida

vien, como segunda prioridad se ejecutara la apliación 'Dial'
dial se usa para hacer sonar el ring en el telefono
en este caso el ring sonara en el telefono ip sip del usuario apardo durante 30 segundos

esto es lo que comentabas de que podías redirigir las llamadas donde te daba la gana
y hacer lo que te daba la gana con ellas
Blackhold: exacto
y tr viene a decir que podremos tranferir la llamada 't'
si pasados esos 30 segundos el usuario sip apardo no coge el telefono seguidamente se ejecuta la aplicación voicemail que permite al llamante dejar un mensaje de voz en el buzón 2000
y por último se ejecuta la aplicación hangup que hace lo mismo que cuando colgamos el telefono, cierra el canal
y el su ke coño es?
se que u es de unavailable
pero y la S ?
Nijikon: s =
Skip the playback of instructions for leaving a message to the
calling party.
vamos, que suena tu mensaje de no disponible y acto seguido suena el pitido para que dejes mensajes
tonces si es skip no suena
ah ya veo!
Nijikon: no suena la locución de asterisk que te dice que para dejar un mensaje bla bla bla...
sisi, ya entiendo
<_saghul_> eso!
bien, un contexto puede contener otros
* ale1 (n=quimera@105.10.223.82.arsystel.com) has joined #asterisk-es
tonces cuando un fulano quiere que antes de su buzon diga de su propia voz, soy fulanito blablabla deja tu mensaje, pero sin que salga el ke te pone el asterisk
dentro de un contexto se puede incluir otro usando la clave 'include'
le metes antes de voicemail() un playback con esa grabacion
y luego el voicemail con S!
ah excelente!! :D
vamos a ver un ejemplo que yo tengo en casa que use como hub de contextos: http://rafb.net/p/Oo1D1D26.html
cada include añade un contexto
al contexto home

[home]
include => default
include => to-pstn
include => to-900
include => to-902
include => everywhere
include => to-mobile
include => international
include => voicemail
include => voicebox-jazztel
include => echo
include => to-fwd
include => to-ekiga
include => to-ikusnet
include => to-gizmo


definir cada recurso separado en un contexto diferente te facilita la configuración de un contexto para un grupo de usuarios en particular
por ejemplo, el contexto home lo usamos en casa para acceder a casi cualquier recurso, somo los dueños de la linea :)
pero mi centralita tambien la usa ews (el gaditano en el sillicon valley) entonces el contexto de ews seria algo asi: http://rafb.net/p/HrP3K555.html

[ews]
include => default
include => international
include => echo


que pasa si en un contexto tienes exten = 200,1,algo() y en otro contexto tienes exten = 200,1,algodiferente() y los incluyes ambos en otro contexto y entras a ese contexto "hub" que incluye esos otros???
Nijikon: que habrá problemas
eso imaginé, pero que es lo que pasa? da prioridad a la que se incluyo primero? no toma ninguna, o ke?
y por ejemplo el contexto internation quedaria algo como esto: http://rafb.net/p/CHO9Jo53.html

[international]
exten => _00.,1,Set(CALLERID=apardo@lavapieswireless.net)
exten => _00.,2,Dial(${fwdOUTGW}/q${EXTEN:2},60,r)
exten => _00.,3,Congestion

ese contexto nos permite a mi y a una serie de coleguillas hacer llamadas internacionales sin pagar un duro gracias a la red de fwdout: http://www.fwdout.net/web/
apardo> en el contexto international ya empezamos a ver algunas expresiones regulares básicas
basicamente esta viene a decir que si marcamos cualquier número que comience por 00 la llamada saldrá por este contexto
donde en la primera prioridad definimos nuestro caller id
en el caso que quieras configurar la centralita para hacer llamadas a fuera
poniendo el contexto internacional te bastaria?
Blackhold: si
apardo> Blackhold: pero debes tener una conexión sip, iax, pstn o isdn donde poder sacarla
en segunda prioridad llamamos y por último ejecutamos congestion():
This application will indicate the congestion
condition to the calling channel

en ese contexto tambien vemos unas variables
como por ejempllo ${fwdOUTGW}
esa variable la definidos en la sección globals del mismo ficheros y viene a decir algo asi:
fwdOUTGW=IAX2/14236@fwdOUT
y te la sacas de la manga? ;)
osea, usaremos el protocolo iax2 con el usuario 14236 que sacaremos por el peer iax llamado fwdOUT
otro contexto de ejemplo
el que uso para todas las llamadas que me vienen por ip
http://rafb.net/p/kJ9Vrp45.html

[ip-phone]
exten => s,1,GotoIfTime(00:00-08:30|*|*|*|*?ip-phone,s,3)
exten => s,2,Dial(${PHONE},15,t)
exten => s,3,Voicemail(2000|su)
exten => s,4,Hangup


hace un tiempo me llegaban llamadas a cada a horas intempestivas de gente normalment de usa o america latina
:)
así que todo lo que viene por ip pasa al contexto ip-phone
apardo> en primer lugar ejecutamos la aplicación gotoiftime que nos permite salta a cualquier contexto y cualquier prioridad si se cumple la condicione que le marcamos
si no, sigue a la siguiente prioridad, etc..
de tal forma que si me llaman por ip entre las 00:00 y las 08:30h les mando automaticamente al buzón de voz
y si si, pasa a s,3?
apardo> tambien si se cumpliera esa condición podria pasar la llamada al centro de atención al cliente que tengto en buenos aires
o si me llaman para ciertas cosas pasarles al centro de atención al cliente de marruecos...
apardo> no se si me explico :=
para redirigir a otro lado como lo arias?
igual
alwar: Dial(Technology/resource[&Tech2/resource2...][|timeout][|options][|URL])
mmm
stoy alunciando con lo q se puede hacer
yo tbien :)
bueno
¿algo como el ejemplo que has dao antes en http://rafb.net/p/3tFKCl13.html?


[phone]
exten => s,1,Wait(1)
exten => s,2,Dial(SIP/apardo,30,tr)
exten => s,3,Voicemail(2000|su)
exten => s,4,Hangup

toces con los contextos estos tb podrias hacer q en vez de llamar directamente sacar eso de pulsa un boton no? y luego llamar a un sitio u otro?
<_saghul_> de ahi que su nombre sea Asterisk! jej
<_saghul_> alwar: eso es un IVR, y creo que lo comentara mas adelante
alwar: exacto
no se si nos vamos a meter en los ivr's
podriamos dejar ami, agi, ivr y demas para el siguiente finde
_saghul_> Yo podria un ejemplo completo de config para que se llamen estre 2 telefonos y llamen gratis a digium por IAX2 para probar

bueno, ahora nos vamos a poner a configurar unas tarjetillas
estaremos un rato desconectados del irc


para los que quieran frikear mucho mas con el protocol sip que le echen un vistazo a openser.org
es el mejor servidor sip software libre y tiene modulos muy buenos para manejar el nat


http://www.asterisknow.org/images/gui/voice-menu
estoy mirando esto...
pero no es lo que vi en el hackmeeting de menorca
<_saghul_> apardo: y no ha explotado todavia? jeje yo tengo uno en un Linksys NSLU2
<_saghul_> blackhold: igul viste trixbox
<_saghul_> pero igual es lo que viste blackhold, busca algunos screens a ver
mmm...
voy
tenia a la izquierda una especie de log con las llamadas entrantes y salientes
y luego a la derecha podías ver la llamada de voz en texto
una paranoia
¿cuanto ocupa? ¿cabria en un lynksys wrt54gl?
no no
mmm no era interfície web
no sería el flash operator panel?
<_saghul_> mombars: si le hacer la modificacion de la tarjeta SD si (creo)
http://www.asterisknow.org/images/gui/voice-menu --- esto no es trixbox
es la gui de asterisk 1.4
lo sé, lo sé


fin de transmisión ;)

pues espero que después de leer esto seaís capaces de configurar vuestra centralita VoIP, en este resumen falta el tema de las interconexiones entre varias centralitas asterisk, pero la red está llena de información.

2 comentaris:

Anònim ha dit...

La próxima vez, aprended castellano antes de dar una conferencia o charla.

Blackhold ha dit...

siempre tienen que salir los trolls de barrapunto de todos sitios! es que son una plaga!

Publica un comentari a l'entrada