Skip to main content.

Posts Tagged ‘VoIP’

Todo listo para la charla de Mark Spencer, streaming incluido!!

Lunes, Junio 2nd, 2008

Hoy es el día. Tras pasar la tarde de ayer con Mark enseñandole un poco Bilbao (lo que la lluvia nos permitió :-/) hoy ya esta todo listo para su charla en el Museo Guggenheim a las 11:30.

Si no vas a poder asistir no te preocupes, en Irontec hemos habilitado esta URL, desde la que podrás ver la charla en vivo y en directo!! http://streaming.irontec.com/conferencias/mark_spencer/

Cuando termine el evento y pueda respirar, pondré algunas de las muchas fotos que tomamos ayer, pero de mientras os dejo esta, de cuando fuimos a comer “typical basque food” :)

Nos vemos en “el Guguen” :)

Mark Spencer dará una conferencia en el Museo Guggenheim de Bilbao!!

Lunes, Mayo 5th, 2008

Me alegra mucho poder comentar esto: Mark Spencer (creador de Asterisk y fundador de Digium) visitará Bilbao (capital del mundo xD) para dar una conferencia sobre Asterisk y el mundo de la telefonía IP.

Siendo el creador de Asterisk, no podéis perderos este evento, siendo el acceso además, gratuito. Podéis inscribiros en la web de Enpresa Digitala para asistir.

Creo que voy a empezar desde ya a preparar el alubión de preguntas que le van a caer al pobre Mark :) digium-mark-spencer2.jpg

Espero ver por allí a toda esa gente de Asterisk-ES, ya que esperamos que sea un día ‘mágico’ para la VozIP.

Nos vemos el 2 de Junio!!

Noticia oficial

Habemus nuevo dCAP!!

Martes, Abril 29th, 2008

Acabamos de recibir la noticia de que nuestro compañero Jon Bonilla aka Manwe (el severo de la lista Asterisk-ES) ha aprobado la parte teórica y es oficialmente un Digium Certified Asterisk Professional.dcap_logotype1.gif

Estamos muy contentos de que Jon lo haya conseguido, sobre todo porque ha sido a la primera y sin ir al BootCamp! Mientras yo me lo pasaba bien allí, él apagaba los fuegos que iban surgiendo y estudiaba (duro? xD) para el examen.

Enhorabuena Jon!!

Día a día en el Asterisk BootCamp Bilbao (5)

Sábado, Abril 26th, 2008

Hoy escribo este post-resumen con profunda tristeza, ya que ayer, desafortunadamente, terminó el BootCamp.

El día comenzó bien, ya que como conseguimos terminar el temario a tiempo (!!!) les ofrecimos a los alumnos un pequeño extra: una charla sobre Seguridad en VoIP, que al parecer les gustó bastante :)

Posteriormente todos se prepararon para “la guerra” he incluso hubo quién se trajo “su fusil” :) Los exámenes se realizaron en 2 turnos, y al terminar el sentir de la gente era más o menos el mismo: que el examen no era exageradamente difícil, pero no hay tiempo de pensar, solo se puede actuar, ya que en Burundi, si no te pilla la guerrilla :) Así que dentro de poco los que aprueben ambas partes recibirán la placa que otorga la certificación oficial de Asterisk, para unirse al club :)

2442864852_2c748fc684.jpgSi tuviera que hacer una valoración sobre lo que he vivo esta semana, no encontraría palabras, ya que ha sido increíble para mí: ninguno de los días he dormido más de 4 horas, pero la energía y las ganas de transmitir conocimiento a los asistentes no flaquearon ni un segundo.

Solo hace 2 años que yo estaba en el otro lado, y durante una semana he podido compartir aula y alumnos con Sergio Serrano, así que desde aquí solo me queda dar las gracias a los que han confiado en mí para este BootCamp, y esperar que se vuelva a repetir. :)
A los asistentes dcirles que me ha encantado compartir con ellos esta semana, y que han sido un gran grupo, ya que eran muy participativos y tenían muchas ganas de aprender. Sergio y yo tratamos de darles todo lo posible con algún extra (Asterisk Night Bootcamp y la charla sobre Seguridad) y viendo las valoraciones recibidas estamos más que contentos.

Nos vemos en la red!!!

PD: Así es como quedó el aula tras desmontar todo el asunto :( Tenéis todas las fotos en Flickr.

init 0;

Día a día en el Asterisk BootCamp Bilbao (4)

Viernes, Abril 25th, 2008

Último día antes del examen. Ya hay bastantes nervios en el ambiente y algunos conceptos empiezan a mezclarse. Por ello el día de ayer no tuvo demasiada carga laectiva, era más bien un día para reflexionar los conceptos adquiridos, y practicar un poco más.2439132018_8a185f2e9c.jpg

Los alumnos estuvieron gran parte de la tarde poniendo en práctica entre ellos lo que en clase habíamos hecho contra el servidor, para así poder ver los 2 lados y entenderlo mejor.

Ayer pasamos por encima de algunos conceptos como AGI, AMI y ARA,y realizamos algún ejemplo alternativo al oficial, con algún AGI en PHP y Python ;) además de hacer un repaso general, para que no se olvide nada.

Hoy es el gran día, donde todos los esfuerzos realizados durante la semana pueden verse recompensados, aunque no hay que desanimarse si así no ocurre, ya que los conocimientos adquiridos no desaparecen.

Para hoy tenemos 21 “aspirantes”, así que desde aquí os deseo mucha suerte para el examen y que vengáis con los nervios templados :)

Para finalizar, sacamos varias fotos de todo el grupo, para tener de recuerdo :)

Día a día en el Asterisk BootCamp Bilbao (3)

Jueves, Abril 24th, 2008

2436706927_77a290aefc.jpgHoy los alumnos han aparecido más adormilados que los anteriores días. Normal, ayer fue el día más duro de los 3, y la información comienza a amontonarse en sus cabezas :)

Además, ayer tuvo una gran aceptación el “Asterisk Night BootCamp”, al que asistieron casi todos los alumnos.

Estuvimos hablando de terminales, dispositivos, hubo quién se montó Asterisk 1.6 para probar chan_mobile, y mucho SIP e IAX trunking, vamos de todo. La idea era precisamente reafirmar lo visto en clase y probar cosas nuevas y sobre todo frikear un rato en plan hackers de la noche. ;) 2437529962_363925e843.jpg

Hasta ahora hemos ido muy bien de tiempo, y esperamos terminar hoy (día 4) para poder tener otro “bonus” el viernes por la mañana.

Ya queda menos para el día D, el día del dCAp! :)

PD: Surgirá algo para esta noche? xD

Todo listo para el Asterisk BootCamp Bilbao 2008

Martes, Abril 15th, 2008

Como ya se ha comentado en la web oficial de Irontec de la que SinoLogic, VoipNovatos y saghul.net se hacían “echo”, ya tenemos todo listo para dcap_logotype.gifel Asterisk BootCamp que comienza el próximo lunes. La verdad es que han sido semanas de duros preparativos y estamos esperando con nervios que se de el pistoletazo de salida.

Llevamos meses haciendo cábalas de cómo va a ser la semana y cuánto vamos a trabajar con nuestras tecnologías favoritas. De momento además de las cosas obvias como las aulas, ordenadores, material para el curso… etc, tenemos preparadas varias sorpresas relacionadas con el mundo de la telefonía IP en general y Asterisk en particular. De momento os podemos adelantar que los “meetme” de las comidas se servirán en “chan_hotel_nervion”.


exten => s,1,Playback(os-esperamos)
exten => s,n,Hangup

Jugando con la extensión ‘h’

Martes, Abril 15th, 2008

Aparte de las extensiones que podemos declarar en el extensions.conf, Asterisk dispone de unas cuantas ‘de serie’, entre las que destacan:

  • s - start
  • i - invalid
  • t - timeout
  • h - hangup

469185188_0417e87373.jpgLas 3 primeras son mayormente utilizadas en IVRs, mientras que la última (hangup) es bastante utilizada en temas de billing.

Hoy he estado jugando un rato con la extensión h, así que voy a comentar un poco su uso, ya que en ocasiones puede resultar confuso:

¿Por qué queremos utilizar la extensión h?

Porque se ejecuta justo al finalizar la llamada, por lo que si queremos llevar a cabo algún proceso en ese momento, como tarificar una llamada, por ejemplo, la extensión ‘h’ es nuestra aliada.

Lo primero que necesitamos saber antes de comenzar a utilizarla, es que la extensión ‘h’ se ejecuta en el contexto desde el que hemos realizado la llamada. Veámoslo con un ejemplo:


[desde-pruebas]
include => prueba1
include => prueba2
[prueba1]
exten => 1234,1,Playback(tt-monkeys)
exten => h,1,Noop(Extension h — PRUEBA1)
[prueba2]
exten => 5678,1,Playback(demo-congrats)
exten => h,1,Noop(Extension h — PRUEBA2)

Ahora, si definimos nuestro usuario SIP (por ejemplo) en el contexto desde-pruebas, ¿qué ocurrirá al colgar si llamamos al 1234? ¿y al 5678?

En ambos casos se mostrará “Extension h — PRUEBA1″ porque lo que Asterisk busca es la extensión ‘h’ del contexto desde-pruebas, que es donde se ha originado la llamada, y como el primer include es el de prueba1, prevalecerá esa.

Otra cosa que nos puede suceder es que si realizamos algún tratamiento en la extensión ‘h’, después, en el CDR, nos aparezca ‘h’ como campo dst, en lugar del destino.

Para solucionar esto podemos usar la aplicación ResetCDR de la siguiente manera:


[desde-pruebas]
include => prueba1
include => prueba2
exten => h,1,ResetCDR(w)
exten => h.n.Noop(Estoy en el colgado)

El parámetro w pasado a la aplicación ResetCDR hará que el CDR sea grabado justo en ese instante, por lo que el campo dst quedará intacto :)

PEERO! Ahora es probable que tengamos 2 registros en el CDR por cada llamada: uno con el dst bien y otro con la ‘h’ que comentábamos antes. Para solucionarlo podemos usar la aplicación NoCDR, que anula la creación del CDR, de la siguiente manera:


[desde-pruebas]
include => prueba1
include => prueba2
exten => h,1,ResetCDR(w)
exten => h,n,NoCDR()
exten => h.n.Noop(Estoy en el colgado)

Así, lo que ocurrirá será que se grabará el CDR, y justo a continuación se dejará de crear, por lo que tendremos un único registro, y con el dst correcto :)

Happy Asterisk hacking!

Sistema de streaming con Asterisk y Icecast2

Jueves, Marzo 6th, 2008

Con motivo de la Semana ESIDE, se han organizado diversos actos y charlas desde el E-Ghost. Suele ser habitual grabarlas, y alguna vez se ha experimentado con el streming del audio, pero para esta ocasión se me ocurrió que podríamos hacer las 2 cosas a la vez con Asterisk.logo_phpbb.gif

El funcionamiento del sistema se basa en Asterisk y Icecast2, que es un servidor de streaming, configurando el montaje de la siguiente manera:

  • Un servidor remoto con Icecast2.
  • Un portátil con Asterisk instalado, de manera que metemos en un MeetMe el ‘console channel driver’, es decir, la entrada de micrófono y grabamos la conversación con la opción ‘r’ de MeetMe.
  • Con chan_local, metemos a ese mismo MeetMe la aplicación Ices, que envía el stream a un servidor de Icecast2.

y ahora, vamos por partes:

Instalación y configuración de Icecast2

apt-get install icecast2

  1.  
  2. <icecast>
  3.     <limits>
  4.         <clients>100</clients>
  5.         <sources>2</sources>
  6.         <threadpool>5</threadpool>
  7.         <queue-size>524288</queue-size>
  8.         <client-timeout>30</client-timeout>
  9.         <header-timeout>15</header-timeout>
  10.         <source-timeout>10</source-timeout>
  11.         <burst-on-connect>1</burst-on-connect>
  12.         <burst-size>65535</burst-size>
  13.     </limits>
  14.     <authentication>
  15.         <source-password>superfarsa</source-password>
  16.         <relay-password>hackme</relay-password>
  17.         <admin-user>admin</admin-user>
  18.         <admin-password>ironfarsa</admin-password>
  19.     </authentication>
  20.     <hostname>streamcluster.irontec.com</hostname>
  21.     <listen-socket>
  22.         <port>8088</port>
  23.     </listen-socket>
  24.     <fileserve>1</fileserve>
  25.     <paths>
  26.         <basedir>/usr/share/icecast2</basedir>
  27.         <logdir>/var/log/icecast2</logdir>
  28.         <webroot>/usr/share/icecast2/web</webroot>
  29.         <adminroot>/usr/share/icecast2/admin</adminroot>
  30.                 <alias source="/" dest="/status.xsl"/>
  31.     </paths>
  32.     <logging>
  33.         <accesslog>access.log</accesslog>
  34.         <errorlog>error.log</errorlog>
  35.         <loglevel>4</loglevel>
  36.         <logsize>10000</logsize>
  37.     </logging>
  38.  
  39.     <security>
  40.         <chroot>0</chroot>
  41.     </security>
  42. </icecast>
  43.  

Después hay que editar el fichero /etc/default/icecast2 y poner ENABLED=true. Tras esto ya podemos iniciar Icecast2:

/etc/init.d/icecast2 start

Configuración de Asterisk necesaria

Necesitamos un fichero de ejemplo para la aplicación Ices, que podemos encontrar en la carpeta contrib de las fuentes de Asterisk. Ejemplo:

  1.  
  2. <?xml version="1.0"?>
  3. <ices>
  4.     <background>0</background>
  5.     <logpath>/var/log/ices</logpath>
  6.     <logfile>ices.log</logfile>
  7.     <loglevel>4</loglevel>
  8.     <consolelog>0</consolelog>
  9.     <stream>
  10.         <metadata>
  11.             <name>Example stream name</name>
  12.             <genre>Example genre</genre>
  13.             <description>A short description of your stream</description>
  14.             <url>http://mysite.org</url>
  15.         </metadata>
  16.         <input>
  17.             <module>stdinpcm</module>
  18.             <param name="rate">8000</param>
  19.             <param name="channels">1</param>
  20.             <!– Read metadata (from stdin by default, or –>
  21.             <!– filename defined below (if the latter, only on SIGUSR1) –>
  22.             <param name="metadata">1</param>
  23.             <param name="metadatafilename">test</param>
  24.         </input>
  25.         <instance>
  26.             <hostname>SERVIDOR_ICECAST2</hostname>
  27.             <port>8000</port>
  28.             <password>PASSWORD_DE_LA_FUENTE</password>
  29.             <mount>/fichero.ogg</mount>
  30.             <yp>1</yp>
  31.             <encode>
  32.                 <quality>0</quality>
  33.                 <samplerate>8000</samplerate>
  34.                 <channels>1</channels>
  35.             </encode>
  36.             <downmix>0</downmix>
  37.         </instance>
  38.     </stream>
  39. </ices>
  40.  

Ya tenemos todo lo necesario, en lo que al streaming se refiere, solo queda un poco de dialplan:


[streaming]
exten => hablar,1,MeetMe(1234,qtr)
exten => escuchar,1,MeetMe(1234,ql)
exten => stream,1,ICES(stream.xml)

y un par de callfiles para automatizar el proceso:

Callfile1:

Channel: CONSOLE/dsp
Context: streaming
Extension: hablar
Priority: 1

Callfile2:

Channel: Local/escuchar@streaming
Context: streaming
Extension: stream
Priority: 1

Pues esto es todo! Con copiar los callfiles a /var/spool/asterisk/outgoing ya tenemos un sistema de streaming rápido y hecho 100% con Software Libre. Enjoy it!

2005 © Irontec S.L. :: Powered by Irontec & Wordpress
[ IRONTEC S.L. - C.I.F. B-95274890 ]
[ Ctra. Basurto-Kastrexana nº70 / Enpresaldea ]
[ 48002 - Bilbao - Bizkaia ]