Asterisk Perl::AGI

Roman Valls Guimerà bio photo By Roman Valls Guimerà Comment

Bé, després d’un bon munt de temps de silenci, per fi he acabat examens finals projectes & pràctiques varies ! :-) Volia comentar una petita part del que hem estat fent com a projecte de xarxes i sistemes operatius (PXCSO) que trobo força interessant.

Bàsicament he tocat per primer cop la AGI via perl (que ve a ser com els CGI’s però per Asterisk). Obviament el ebuild (facilet) per gentoo, ha caigut :-P:

inherit perl-module

DESCRIPTION="Perl AGI interfacing with the Asterisk open source pbx system"
HOMEPAGE="http://asterisk.gnuinter.net/"
SRC_URI="http://asterisk.gnuinter.net/files/${P}.tar.gz"
LICENSE="Artistic GPL-2"
SLOT="0"

KEYWORDS="~x86 amd64 ~ppc ~sparc ~alpha"

DEPEND="${DEPEND}"

El cas és que necessitavem aquest mòdul juntament amb dos dels meus mòduls preferits del CPAN: WWW::Mechanize & HTML::TokeParser, per tal d’agafar els horaris d’assignatures de la web de la facultat (tècnica anomenada screen scraping o web spidering) i mitjançant festival sintetitzar strings de l’estil:

Són les 8:00, et toca classe de PXCSO a l’aula A5102

Potser pensareu… com s’ha complicat la vida, amb la d’alternatives que hi ha (demanar dump de la BBDD, demanar que generin horari amb XML, etc…) pero ei, estem a la universitat i és divertit provar coses noves, no ? ;-)

Finalment l’invent va funcionar força bé, tot i que canviar l’idioma del festival no és tasca trivial perquè:

  1. Esta tot molt poc documentat
  2. Els fitxers de configuració estan en Scheme :-!

Però la tonteria que més temps em va tenir batallant va ser el pas de variables entre la Perl::AGI i les extensions d’asterisk… preneu nota si us interessa:

Al assignar una string a una variable, els espais en blanc al .pl s’han d’escapar amb “\ “ !!!

Exemple:

$AGI->set_variable('isyhorari', 'No\\ tienes\\ classe');

Altrament, quan llegiu la variable $isyhorari al extensions.conf del vostre asterisk (usant exten => 2,n,NoOP(${isyhorari}), p.ex) tant sols sortirà “No”… bé, alguns potser ho trobareu obvi, però jo vaig pagar la novatada trencant-me les banyes i llegint un bon piló de documentació :_/.

Coneixeu altres casos on heu escapat l’espai en blanc d’aquesta forma ? És relativament comú trobar-s’ho o és un cas raro ?

comments powered by Disqus