Author Archives: Luca

AGI – Asterisk Gateway Interface

asterisk logo TM
Asterisk prevede un’interfaccia di scripting standard, che programmi esterni possono utilizzare per controllare il Dialplan di Asterisk: l’Asterisk Gateway Interface (AGI).

Oggi mi sono sono dovuto cimentare con Asterisk 1.6 e la chiamata a script esterni che ne controllano il dialplan: L’interfaccia AGI.

Normalmente gli script AGI sono utilizzati per sviluppare ambienti di logiche avanzate, interazioni con database relazionali (PostgreSQL o MySQL per esempio) o accessi a risorse esterne.

Come funzionano gli script AGI?

Gli script AGI comunicano con Asterisk tramite canali di comunicazioni standard, ovvero lo STDIN (standard input), lo STDOUT (standard output) e lo STDERR (standard error).

Più in particolare:

  • Lo script AGI leggerà dallo STDIN per avere informazioni da Asterisk
  • Lo script AGI scriverà dati nello STDOUT per inviare informazioni ad Asterisk
  • Lo script AGI scriverà dati nello STDERR per inviare informazioni di debug alla console di Asterisk (Asterisk -r)

Le comunicazione tra AGI e Asterisk

La comunicazione tra AGI e Asterisk avviene seguendo dei pattern predefiniti. Quando uno script AGI viene chiamato, Asterisk invia una serie di variabili con i rispettivi valori. Eccone un esempio:

agi_request: test.py
agi_channel: Zap/1-1
agi_language: en
agi_callerid:
agi_context: default
agi_extension: 123
agi_priority: 2

Dopo aver inviato queste informazioni, Asterisk invia una linea bianca. Questo è il segnale che Asterisk ha inviato tutte le variabili, e che il controllo del dialplan viene affidato allo script AGI.

A questo punto, lo script AGI invia dei comandi al dialplan Asterisk tramite lo STDOUT. Dopodiché, Asterisk invia una risposta che lo script AGI dovrebbe leggere. Queste azioni possono essere ripetute durante tutta la durata dello script.

Come si chiama uno script AGI dal dialplan?
Un esempio di come di può chiamare lo script AGI è questo:

exten => 123,1,Answer()
exten => 123,2,AGI(agi-test.agi)

Tutti gli script AGI normalmente risiedono in /var/lib/asterisk/agi-bin (in Debian li troviamo in /usr/lib/asterisk/agi-bin mi sembra, ma non ne sono sicuro)

AGI(), EAGI(), DeadAGI(), and FastAGI()

Oltre ad AGI, ci sono altre tipologie di interfacce che possono essere utilizzate da Asterisk. Ecco alcune caratteristiche:

  • EAGI o enhanced AGI: è un’applicazione che funziona come AGI, ma da la possiblità allo script di leggere lo stream audio in arrivo dal file-descriptor numero 3.
  • DeadAGI: funziona esattamente come AGI, ma su canali morti (per esempio dopo un hangup). Questo significa che AGI non funziona su canali morti.
  • FastAGI: è un’applicazione che permette la chiamata a script AGI su server remoti.

Alcuni riferimenti

Ecco qui alcuni link a librerie e risorse interessanti e utili:

Librerie

  • Asterisk-perl: librerie Perl per lo sviluppo di script AGI in Perl.
  • PHP-AGI: librerie PHP per lo sviluppo di script AGI in PHP.
  • Pyst: librerie Python per lo sviluppo di script AGI in Python

Servers FastAGI (che ho provato)

  • AGIspeedy: Server AGI in Perl. Funziona molto bene, anche se l’implementazione degli script non è proprio user-friendly
  • FastAGI.php: Non sono riuscito a farlo andare con Asterisk 1.6. È scritto un po’ coi piedi..

Gli altri non li ho provati.

Fonti

L’informatico d’oggi

Avete mai visto il film Fast Food Nation?

è un film che parla di una catena di fast food, la Mickey’s Food Restaurants.
Un giorno il direttore di questa catena di fast food è costretto a partire per il luogo dove si trova l’industria che produce i suoi hamburger perché viene avvertito del sospetto che la carne non sia a norma. Il film segue parallelamente le vicende degli immigrati clandestini che lavorano nelle industrie e  del manager. Questo film si scaglia contro i fast food, i quali da anni si giustificano con la scusa che grazie a loro anche le persone che guadagnano poco possono nutrirsi a prezzi ragionevoli. La critica fatta da questo film passa attraverso il percorso della carne dalla produzione al momento della consumazione e viene sottolineata dalla situazione lavorativa degli immigrati (considerati vera e propria carne da macello), tra sfruttamenti, umiliazioni e necessità di piegarsi ai voleri della “grande azienda”.

Questo film mi è venuto in mente leggendo un articolo scritto da Giuseppe Cubasia, Il programmatore da fast food, sul sito il punto informatico. Cubasia parla delle possibilità lavorative che si prospettano ad un ragazzo che vuole entrare in un’azienda informatica che, come spesso accade qui in Italia, tratta le persone come gli immigrati clandestini di Fast Food Nation.

Il problema di chi vuole lavorare nel campo dell’informatica oggi è che (se vuole fare carriera) non deve assolutamente entrare nella filosofia da fast food di alcune aziende, che promettono di inserirti nel mondo del lavoro a 600 euro al mese più alloggio e magari anche senza contratto, dato che la loro forza si basa sulla politica del formare e rimpiazzare persone in breve tempo.

Cosa ricercano queste aziende: innanzi tutto non il talento, visto che si concentrano sull’indottrinare il maggior numero possibile di lavoratori per “serializzarli”, se ne deduce che il risultato sarà di scarsa qualità.

Questo non vuol dire che non si debba fare la sana e dovuta gavetta, ma nemmeno bisogna sognare una prospettiva di carriera in un’azienda che non ha nessuna intenzione di dartela (visto che nella filosofia dei fast food si cercano continuamente possibili sostituti).

Volete farvi un’idea su tutto questo? Ecco alcune fonti che potrebbero servirvi:

http://www.webmasterpoint.org/lavoronet/approfondimenti-lavoro-online-ict/informatici-come-fare-carriera-azienda.html

http://www.ikaro.net/articoli/cnt/programmatore_basso_costo-00832.html

http://punto-informatico.it/2628291/PI/Commenti/lavoro-it-programmatore-fast-food.aspx

http://italian.joelonsoftware.com/Articles/BigMacsvs.TheNakedChef.html

Nagios, il mio servizio di monitoraggio

Chi mi conosce, lavora con me o ha dei servizi sopra i miei server sa che ho a disposizione un servizio di monitoraggio basato su Nagios.

Il server che ospita il servizio è il mio monitor.lucarossi.info, dove, oltre a Nagios, ci giro Asterisk e poche altre cose (sopratutto di testing).

Al momento controlla un buon numero di server e non mi ha mai dato problemi né di carico, ne di hang, nonostante il tutto giri su VPS. Ne sono contento.

Di solito non faccio pagare questo tipo di servizi – a meno che non abbiate bisogno anche di assistenza tecnica – e li offro sopratutto a colleghi che hanno bisogno di qualcosa di veloce per la serie “una mano lava l’altra”

Vi invito comunque a visitare l’apposita pagina del mio Nagios e a contattarmi se siete interessati!

Primo post!

Cavi

Ciao a tutti e benvenuti sul mio nuovo blog.

Finalmente sono riuscito a pubblicare la mia pagina in italiano (vuoi vedere la vecchia in inglese? eccola!), compresa di blog e piattaforma per i podcast, giusto perché non voglio farmi mancare niente in caso di idee pazze.

Sono contento inoltre che l’apertura di questo sito sia arrivata immediatamente dopo le vacanze di natale, e fine anno. Così mi risparmio inutili post di auguri, belle speranze, to-do per il 2011 e robe varie.

Niente nuova vita quindi (intesa come rinnovamento), ma fresh vita, roba nuova di pacca (o paccottiglia che dir si voglia).

Al momento tutto il sistema è in fase di testing, ci vorrà quindi un altro po’ di pazienza prima di essere online H24 (tanto al momento un c’è nulla!). Vi invito quindi a non mollare il mio Twitter, specie se avete qualche servizio ospitato da me o il servizio di monitoring attivo. Lo stato di salute del network sarà ancora aggiornato tramite tweets.

Hasta luego compadres!

(torniamo a lavorare che è meglio..)