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

Este es el primer2432986051_6a27e161a6.jpg post de una serie de ellos que escribiré esta semana sobre las impresiones del BootCamp que estamos llevando a cabo, en los que haré un seguimiento diario del evento.

Ayer fué el primer día y no se quién estaba más nervioso, si los alumnos o yo :) No hace tanto (2 años) que yo estaba al otro lado, mirando al maestro Olle E. Johanson, y ahora me tocaba a mí darlo todo!

Hay gente muy variada, con más o menos conocimientos de Asterisk y GNU/Linux, pero todos van a recibir lo suyo. Toca sufrir. Ayer como era el primer día, es más flojo, pero a partir de hoy toca poner el turbo, para que aprendan lo máximo posible.

Al final del día estaba destrozado, pero la adrenalina corria por mis venas, ya que fué un día muy especial para mí.2432987167_1c3f3924df.jpg

Espero que al finalizar la semana se les haya hecho trizas el cerebro y me odien un poco, pero que al menos hayan aprendido mucho y sean futuros hackers de Asterisk :)

“Welcome to hell!”

PD: Podéis ver las fotos que vamos sacando en el BootCamp aquí.

Te ha gustado? Compartelo:
  • Print
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • BarraPunto
  • Meneame
  • Twitter

Todo listo para el Asterisk BootCamp Bilbao 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

Te ha gustado? Compartelo:
  • Print
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • BarraPunto
  • Meneame
  • Twitter

Jugando con la extensión ‘h’

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!

Te ha gustado? Compartelo:
  • Print
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • BarraPunto
  • Meneame
  • Twitter

Sistema de streaming con Asterisk y Icecast2

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!

Te ha gustado? Compartelo:
  • Print
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • BarraPunto
  • Meneame
  • Twitter

Reflexiones a la vuelta del SIMO

Esta ha sido nuestra primera edición en el SIMO como expositores, por lo que ahora que (casi) todo ha vuelto a la normalidad, toca reflexionar.

00027.jpg

Si miramos el SIMO en general, muchos dicen que el SIMO está de capa caída desde hace algunos años, y creo que no les falta razón, ya que cada vez se ve menos innovación… solo se ven móviles y televisores… No obstante, en nuestro campo, el de la VoIP, creo que va mejorando cada año y que concretamente éste, ha marcado un punto y aparte.

En lo que al público se refiere, hemos comprobado que ha sido bastante variado, pero la gran mayoría ya sabía “algo”, aunque fuera solo lo que querían. Si excluimos el sábado, que no acude público profesional, la afluencia de gente ha sido bastante regular y estamos muy satisfechos con las visitas recibidas.

Hablando del Día de la Comunidad, lo único que podemos decir es que fue excelente. Fue un placer poder conocer tanta gente de la comunidad, así como la posterior cena por cortesía de Avanzada7. Esto unido a las charlas diarias, ha dado una relevancia aún mayor a la comunidad de Asterisk y la VoIP en el panorama nacional.

Por último, comentar que la logística del evento fue exquisita por parte de Avanzada7, así como el trato recibido. Enhorabuena chicos! Nos vemos el año que viene!

Te ha gustado? Compartelo:
  • Print
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • BarraPunto
  • Meneame
  • Twitter

Integración de softphone y agenda de contactos

integration.jpg

En ocasiones puede ser interesante el uso de softphones en lugar de teléfonos de sobremesa, por ejemplo cuando se requiere manejar un ordenador mientras mantenemos una conversación telefónica.

Dentro de este escenario, en el que la telefonía radica en un programa de software, sería interesante ganar en agilidad aprovechando la integración de nuestro softphone con nuestra aplicación de agenda de contactos.

Objetivo

Buscar soluciones para realizar llamadas telefónicas desde nuestra agenda de contactos, sin la necesidad de tener que marcar el número de teléfono manualmente en el softphone.

Algunos softphones incluyen una pequeña agenda de contactos, pero sólo tienen validez para el propio softphone. Entendemos en este artículo que el usuario prefiere tener su agenda centralizada en una aplicación independiente y más completa (correo, agenda, notas, tareas, calendario, etc).

Por cuestiones ideológicas haremos hincapié sólo en soluciones de software libre, entendiendo que son además las que mejor permiten ser adaptadas a nuestras necesidades y las que mayor flexibilidad ofrecen.

(más…)

Te ha gustado? Compartelo:
  • Print
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • BarraPunto
  • Meneame
  • Twitter

Nokia se decanta por SIP

Nokia N80i Internet Edition - SIP

A menudo resulta que una pequeña gota es la responsable de que la balanza se incline de uno u otro lado. Ya pasó hace tiempo con los formatos de vídeo analógico Betamax y VHS, está pasando con los formatos de tarjetas de memoria flash y pasará con el soporte para la alta definición digital Blue-ray vs HD-DVD.

El mundo de la telefonía IP no iba a ser menos y desde hace tiempo existe una dura batalla por la supervivencia y egemonía en el mercado de la tarificación por minutos IP, un mercado incipiente que ya maneja una cifra de negocio de millones de dolares a nivel mundial. Aunque no es descabellado vaticinar que en un futuro no muy lejano la telefonía tradicional dejará de existir tal y como la conocemos hoy en día, dando paso a otros sistemas telefónicos mucho más económicos y dimensionables como la voz sobre Internet, la migración será paulatina y coexistirán durante años ambos sistemas.

En esta batalla el mercado ha seleccionado dos protocolos de señalización como aspirantes al trono: SIP y Skype. El uno es un estandar abierto de la IETF y el otro en un protocolo cerrado de una las empresas que mejor definen lo que se conoce como Burbuja Internet. Los fabricantes de terminales de telefonía, bien sean de VOIP o duales móviles (GSM-WIFI+VOIP), están jugando sus cartas y apostando por uno u otro intentando ser partícipes de esa batalla.

Nokia, la empresa fabricante de moviles más importante a nivel mundial y, sin duda, una de las piezas claves en esta balanza, se ha decantado por el estandar SIP. Sus nuevos teléfonos N80i (Internet Edition) vienen provistos de un cliente de voz IP (a través de la interfaz WI-FI que dispone) que permite configurar una cuenta SIP que dispongamos con alguno de los múltiples proveedores que ofrecen este servicio. Esta decisión estratégica de Nokia, no solo nos permite cambiar de operador de telefonía IP, acceder a un mercado de libre competencia y posibilita un mayor desarrollo de economías locales, sino que refuerza la importancia del uso e implementación de estándares abiertos y libres.

Te ha gustado? Compartelo:
  • Print
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • BarraPunto
  • Meneame
  • Twitter