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="https://asterisk.gnuinter.net/" SRC_URI="https://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è:
- Esta tot molt poc documentat
- 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 ?