Opendatafest 2017 a Caltanissetta, il report di 3 giorni di lavori

 

 

 

 

 

 

Le comunità di Opendatasicilia e Spaghetti Open Data hanno dato vita a questo report sui lavori della 3 giorni di incontri dell’opendatafest a Caltanissetta (2-4 giugno 2017).

I materiali mostrati nelle giornate sono disponibili su http://opendatafest.it 

Abbiamo pubblicato le slide  delle presentazioni mostrate al raduno direttamente nel sito opendatafest.it, all’interno del programma: dopo i titoli degli interventi e delle sessioni c’è una voce “| SLIDE” che permette di visualizzare i materiali. 

In questo post elenchiamo alcuni dei momenti del raduno e delle presentazioni (fai riferimento al programma per un quadro completo).

Venerdì mattina

Dibattito di inizio dei lavori

Chi: Alberto Cottica, Matteo Brunati, Andrea Borruso, Cristiano Longo

Di cosa si è discusso, in ordine sparso:

  • Curarsi delle comunità costa, è necessario rendersene conto
  • Scelta di strumenti che permettano di dare un lascito, serve dare continuità alle comunità
  • Fase storica sugli Open Data: forse stiamo vivendo la fase adolescenziale, siamo stanchi
  • Serve collegarsi alle altre comunità del mondo Openness
  • Trovare modi per far convogliare i vari temi crosscomunità, pur mantenendo le varie identità, forse è utile una Woodstock dell’Openness, sta nascendo un evento a cui ci hanno chiesto un parere e un contributo, che intende provarci nel 2018
  • Comunità locali: necessitano di credibilità per incidere nel territorio, serve dare il buon esempio
  • Serve documentare tutto, necessari incontri fisici e online
  • Non siamo da soli, non dobbiamo chiuderci in noi stessi, serve aiutare il ricambio e allargare includendo
  • Per coinvolgere altri è necessario uscire dal linguaggio da iniziati
  • La tecnologia è funzionale, un mezzo, da soli si fa poco: necessario coltivare i rapporti umani per creare cose nuove
  • Quando un cittadino inizia a produrre valore, mette in discussione lo status quo
  • Bisogna decidere come partecipare alle azioni di governo, capire come relazionarsi all’EU, bisogna rompere le scatole in modo costruttivo, come comunità
  • Il civic hacker è troppo solo, devi avere persone intorno per restare motivato
  • Serve decidere come comportarsi con le altre comunità
  • Lancio del progetto civichacking.it

Dettagli sull’evento delle comunità dell’Openness in costruzione 2018

A quanto pare l’esigenza di connettere comunità che lavorano e sono appassionate di temi affini, non è solo una sensazione di pochi: parliamo di tutte quelle comunità che in qualche forma supportano e discutono di libertà digitali (Openness in senso lato, Open Source, Free Software, Open Content e beni comuni digitali).

Assieme a Roberto Guido (presidente di Italian Linux Society – ILS), che ci ha cercato qualche settimana prima del raduno, abbiamo iniziato a ragionare su un evento unico, che riunisca molte comunità nello stesso luogo e negli stessi giorni, mantenendo ognuna separata nella gestione dei propri eventi. Per iniziare può bastare essere tutti nello stesso luogo, simultaneamente: è un inizio.

Alcuni appunti condivisi: https://etherpad.net/p/proposta-os-conf-ita

Civic hacking: comunità informali, prototipi e Open Data: il libro

Il libro nasce dall’esigenza di capire cos’è il civic hacking concretamente nel contesto italiano, uscendo dal gergo per iniziati. A partire dalle esperienze reali dei civic hacker, che collaborano per trovare soluzioni creative a sfide sociali concrete, allarghiamo lo sguardo per analizzare il rapporto tra Open Data, prototipi, comunità informali e modi di sfruttare le zone grigie (quelle opportunità inaspettate che si creano a volte).

Interessa ovviamente i civic hacker. Interessa anche i maker, gli appassionati di openness e chiunque senta l’esigenza di mettere le mani “in pasta”.  

Raccontiamo anche le nostre esperienze dirette all’interno della comunità di Spaghetti Open Data per mostrare il potenziale e la fatica di quello che si può fare.

Persone, storie, Open Data, prototipi: tutto questo per noi è civic hacking. Non solo tecnologia, ma un modo per scardinare vecchie abitudini, un modo per riprendersi il proprio ruolo di cittadini, un modo per risolvere problemi.

Fino al 31/7 h.22 CEST, puoi inviare un tuo contributo. Per dettagli fai riferimento al sito http://civichacking.it/#contributi.

Dal primo agosto partirà una campagna di crowdfunding: se ti interessa, lascia pure la tua email qui http://eepurl.com/cQ15nX.

L’annuncio del portale regionale siciliano sui dati aperti

A sorpresa è venuto a seguire i lavori della mattina Enzo Lo Piccolo, webmaster della Regione Siciliana. Ha chiesto la parola per pochi minuti e ha fatto un annuncio: nelle prossime settimane (tra fine giugno e inizio luglio) verrà lanciato il portale regionale siciliano sui dati aperti. Sarà basato su CKAN e DCAT-AP_IT compliant.

Ha chiesto alla comunità – a lancio effettuato – di “dargli una mano”, sia nelle critica che nella proposta e ha dato comunicazione di un indirizzo email dedicato opendata@regione.sicilia.it. E noi gli abbiamo chiesto di iscriversi alle nostre mailing list.

È stato un momento molto informale e concreto, che ci fa essere ottimisti. Per la Sicilia è sicuramente una bella notizia ed è stato un piacere che #ODFest17 sia stato “stimolante”.

Le presentazioni del venerdì pomeriggio

Proposte di elaborazione di Dati Aperti dagli studenti di Informatica dell’Università di Palermo

Tre studenti del corso di laurea in Informatica dell’Università degli studi di Palermo, hanno presentato i progetti realizzati per l’esame della materia “Tecniche per la gestione degli Open Data”, curato da Davide Taibi del CNR di Palermo (http://offweb.unipa.it/offweb/public/corso/dettaglioInsegnamento.seam;jsessionid=FB17C3274CB9C25A07D58E8A68988D26?oidCurriculum=17137&oidInsegnamento=111202&cid=123461). I progetti che gli studenti devono realizzare per superare l’esame della materia hanno tre caratteristiche fondamentali: a) i dati da elaborare devono provenire da diverse fonti (anche generati da sensori) ed essere in diversi formati; b) i dati acquisiti devono essere elaborati mediante processi di pulizia e armonizzazione delle strutture dati; c) i dati elaborati devono essere resi disponibili all’esterno mediante API e in un formato aperto con un livello pari a 5, possono essere riusate ontologie esistenti o è possibile creare nuove ontologie per modellare il dominio di conoscenza specifico. Infine, i dati prodotti devono essere alla base della realizzazione di applicazioni come: bot telegram, web application, o applicazioni per dispositivi mobili.

Nello specifico gli studenti che hanno partecipato all’OpenDataFest17 hanno presentato:    

  • Un portale che aggrega gli eventi culturali che si svolgono nella città di Palermo di Vincenzo Cimino, https://raw.githubusercontent.com/VickPix/aggregatore-eventi/master/slides/Aggregatore_eventi_Vincenzo_Cimino.pdf. I dati vengono acquisiti mediante scraping di alcuni blog palermitani, e dal portale dell’Università di Palermo; e vengono armonizzati in una struttura dati comune che viene utilizzata per alimentare un portale in cui vengono visualizzati gli eventi mediante una interfaccia semplice, facile e comoda. Per modellare gli eventi e le loro caratteristiche è stato utilizzato schema.org. L’estrazione dei dati relativi agli eventi in formato JSON-LD è stata implementata attraverso API. L’applicazione è disponibile qui (http://portale-eventi.firebaseapp.com).
  • Una stazione meteo autocostruita e la relativa piattaforma di gestione dei dati in rete di Riccardo La Grassa https://github.com/pulsar2468/Owd/blob/master/OpenDay2017.pdf. Sono state fornite indicazioni per la costruzione della stazione meteo. Molto interessante è stata la descrizione relativa alla costruzione dell’anemometro, realizzato a basso costo con materiali riciclati. I dati raccolti dalla stazione vengono elaborati da un server centrale alle quali le stazioni meteo possono registrarsi attraverso un TOKEN. Il server centrale fornisce le visualizzazioni dei dati acquisiti e consente l’esportazione dei dati in formato aperto a cinque stelle. In questo caso è stata riutilizzata una ontologia specifica per la modellazione dei dati provenienti dai sensori.  
  • Una piattaforma di visualizzazione per infografiche relative a dati georeferenziati di Tommaso NIcosia (http://opendatafest.it/presentazioni/TommasoNicosia-OpenData-framework-sviluppo.pdf). In questa piattaforma i dati provenienti dalle segnalazioni della polizia municipale del comune di Palermo, e i dati provenienti da Waze relativi al traffico cittadino vengono aggregati e visualizzati su mappa. Un prototipo è disponibile qui (http://neuron4web.palermo.enea.it/opendata/_trafficendpoint). Uno SPARQL endpoint si occupa di gestire le query che vengono effettuate sui dati rappresentati in RDF. I dati forniti possono avere diversi settori di applicazione. Ad esempio tali dati possono guidare le scelte dei percorsi per raggiungere punti critici della città come ad esempio i presidi ospedalieri. L’unione di queste informazioni con, ad esempio, i dati relativi alle file dei pronto soccorso della città potrebbero supportare (nell’eventualità in cui non ci siano casi che necessitano cure immediate) la scelta del pronto soccorso in maniera più efficiente in termini di pazienti in attesa, traffico nelle strade ed eventi particolari come manifestazioni e lavori in corso.    

Non fidarsi più dell’ennesima agenda: servono uno o più progetti di civic hacking [Forum OGP]

Durante il dibattito mattutino sono emersi alcuni elementi sparsi legati soprattutto al ruolo di realtà come SOD o gruppi locali come Opendata Sicilia rispetto a forum di questo tipo, ancor di più in merito al tipo di intervento e interessi da mettere sul piatto.

Durante la sessione pomeridiana siamo andati maggiormente nel dettaglio di un processo complesso, costoso e con un ritorno difficile da valutare per la società civile. Lo scopo è stato quello di condividere un vissuto di un anno, focalizzato a spiegare dove siamo ora, specie in merito alle proposte/domande presentate al ministro Madia durante l’ultimo evento in plenaria dell’8 maggio scorso.

Una delle azioni nate nei giorni del raduno e condivise con i presenti ha poi generato questa richiesta formale alla squadra OGP Italy, che abbiamo condiviso in questo thread:

https://groups.google.com/d/msg/spaghettiopendata/uslQ2CTqqiM/M1rM7uaIAQAJ

Abbiamo scelto di dare maggior visibilità a questa proposta pubblicandola anche nei rispettivi luoghi digitali:

  1. http://www.spaghettiopendata.org/blog/matteo-brunati/open-government-partnership-andare-oltre-lagenda
  2. http://blog.openpolis.it/2017/06/13/open-government-partnership-andare-oltre-lagenda/15616
  3. http://blog.ondata.it/open-government-partnership-andare-oltre-lagenda/
  4. https://it.okfn.org/2017/06/13/open-government-partnership-andare-oltre-lagenda/

Incoraggiare la partecipazione attiva dei giovani alla vita democratica con YouthMetre

Caterina Impastato ha presentato YouthMetre, iniziativa che nasce per incoraggiare la partecipazione attiva dei giovani alla vita democratica.  Ecco le slide (Prezi) dell’intervento: uno degli elementi più interessanti è la piattaforma e i dati che aggrega, uno degli argomenti che è stato oggetto di alcune domande da parte dei presenti.

Il progetto Ricostruzione Trasparente

Alessio Cimarelli, rappresentante dell’associazione onData, ha presentato e discusso il progetto Ricostruzione Trasparente. Ecco le slide dell’intervento.

Civic Hackathon[s]

Creazione del GTFS di Caltanissetta

GTFS

Nelle prime ore di lavoro il gruppo di lavoro ha “sbattuto” con un ostacolo inatteso: i dati sulle rotte e sulle fermate erano incompleti o errati. Per fortuna, durante la giornata, è venuta a trovarci la Titolare dell’Azienda che gestisce i trasporti locali su gomma (SCAT) e siamo riusciti a produrre dei dati corretti sulla linea 3 (uno speciale grazie a Cesare Gerbino che è stato come sempre molto disponibile e puntuale).

Compresa l’impossibilità di avere delle info in giornata sui dati di base, ci siamo messi come obiettivo quello di costruire una procedura che consentisse di produrre un GTFS a partire dai dati forniti della SCAT e di verficarne la validità.

Davide Galletti ha creato uno script python, che a partire dalle info sulle fermate, e dalla timetable fornita da SCAT (che è abbastanza generica), produce i file secondo standard GTFS su rotte, corse e orari (routes.txt, trips.txt e stop_times.txt).

Abbiamo testato lo script con un set completo di dati (i file .txt presenti qui) usando il FeedValidator “ufficiale” e il file GTFS è risultato validato (con diversi warning che indicano la necessità di fare un altro check sui dati di base).

In conclusione:

  • Sarà necessario avere i dati geografici di base corretti e completi per tutte le linee. Giuseppe La Mensa, insieme al personale di SCAT, sarà in prima linea a occuparsene;
  • Con il set di dati completo, faremo delle modifiche e ovviamente dei test sullo script di creazione del file GTFS;
  • Documenteremo il tutto in modo da rendere autonoma la SCAT nella produzione del file GTFS e per potere replicare il processo anche in altri piccoli comuni.

GTFS + LOD

A valle del lavoro sul GTFS, è stato fatto un esperimento (Francesco Marchitelli, featuring Marco Brandizi) aggregando i dati del file GTFS di Lecce con dati provenienti dalla Linked Open Data cloud, per mostrare alcuni dei vantaggi nell’usare i Linked Data. Dopo aver convertito il file GTFS in RDF, sono stati inseriti gli eventi presenti a Lecce e caricato tutto quanto in un triple store. A questo punto è stata fatta una query di esempio che mostra i dettagli di un concerto organizzato al castello, con le informazioni correlate delle fermate dei bus che si trovano nelle vicinanze.

Il materiale si trova in questa cartella.

Un’analisi di rete dei finanziamenti europei alla ricerca

La sessione di Alberto era tosta, specie per quelli che non hanno partecipato al lavoro degli anni precedenti: Alberto ha raccontato i dettagli e la storia di questa proposta nella descrizione di questa sessione.

Purtroppo non è riuscita ad essere presente Baya Remaoun (andata via durante il pomeriggio del venerdì): alcune delle domande emerse sui dati CORDIS avrebbero avuto una risposta veloce, probabilmente.

Infatti una delle sfide per chi curiosa in dati che non conosce è riuscire a comprenderli con facilità.

Sono domande che porremo a Baya e alla squadra che gestisce la pubblicazione dei dati CORDIS nelle prossime settimane.

Altre domande hanno trovato risposta però: i risultati e la documentazione relativa al lavoro fatto si trovano in questa cartella del repo. C’è anche la presentazione (in formato Keynote) mostrata da Alberto e le immagini correlate (cartella).

Realizzare un elenco machine-readable di Albi POP

Nei giorni precedenti avevamo deciso di unificare i nostri hackathon entrambi relativi ad Albo POP, riconoscendo come la creazione di un elenco processabile dalle macchine di albi POP fosse un passo importante per molteplici attività, non ultima quella di creare aggregatori di albi. Per questo motivo, con l’aiuto e l’esperienza di Francesca Gleria abbiamo deciso di iniziare definendo un formato per la rappresentazione di albi POP.

Siamo partiti dal vocabolario del web semantico DCAT, raccomandazione W3C per la rappresentazione di dataset. L’albo POP è infatti null’altro che una rappresentazione, in formato RSS, del dataset degli avvisi di una pubblica amministrazione.

Abbiamo esaminato quindi la specializzazione di DCAT realizzata per le pubbliche amministrazioni italiane dcat_ap_it e la abbiamo applicata al nostro caso particolare. La peculiarità di albo POP è che il feed RSS viene generato a partire da una pagina web e il detentore dei dati (la pubblica amministrazione titolare dell’albo) non ha alcuna relazione con chi realizza e tiene su il servizio di albo pop. Inoltre, abbiamo tenuto in considerazione le specifiche RSS per albo pop.

Il lavoro ha generato un tutorial per pubblicare in DCAT_ap_it un elenco di albi pop, (che ci ripromettiamo di completare nei prossimi giorni.

Le informazioni originali sui dataset presenti nel catalogo in formato DCAT sono comunque rappresentabili in prima battuta con una semplice tabella. Abbiamo quindi strutturato opportunamente un Google Spreadsheet condiviso affinché fosse la base di partenza per la generazione automatica del file di catalogo, ma anche la sorgente dati di una visualizzazione web nello stile di Petrusino. L’idea è di alimentare il foglio mediante un form on-line e collegare ad esso uno script che lo traduca nel formato DCAT e una visualizzazione web che permetta di navigarlo.

FormAzione

Vocabolari, metadati: uno sguardo nel dettaglio

Al posto di una presentazione vera e propria c’è stata una discussione, guidata da queste slide.

Un’introduzione a Elasticsearch

Alessio Cimarelli ha tenuto una lezione introduttiva al database e motore di ricerca Elasticsearch, discutendone caratteristiche e potenzialità a partire dai dati live del progetto Ricostruzione Trasparente. Ecco le slide.

Varie

La proposta di Massimo Zotti: tradurre i videotutorial del progetto Copernicus

https://www.youtube.com/watch?v=KWeS1-TDy-0

Ringraziamenti e scuse

La vita dell’OpenDataFest17 è stata semplice e comoda. Un sentito grazie a:

  • Giuseppe La Mensa che ha coordinato tutto il prima, durante e dopo della logistica e i contatti con il sistema di accoglienza locali;
  • Erika Marconato che ha creato l’apprezzato communication kit (usato poi per magliette, banner, sito, social, ecc.. ), gestito la comunicazione su #ODFest17, raccolto le donazioni per le magliette, partecipato al gruppo di lavoro per la definizione di queste tre giornate;
  • Matteo Brunati che ha dato forma a questo raduno con diverse idee e spunti stimolanti, creato il wiki per il raduno, editato il sito e per essere stato Matteo Brunati;
  • Andrea Borruso che mostra a tutti noi come essere delle persone migliori;
  • Il Comune di Caltanissetta che, grazie alla sensibilità verso i temi del digitale innovativo dell’amministrazione Ruvolo, ha contribuito alle spese organizzative dell’evento.

Chiediamo scusa ad Alessandro Capezzuoli, per non essere riusciti a tenere al meglio i tempi del venerdì pomeriggio e non avere avuto l’opportunità di ascoltare la sua relazione dal titolo Professioni e orientamento: dagli open data al mercato del lavoro.

STORIFY

Disponibile uno storify ( a cura di Erika Marconato) che può dare un’idea di quello che abbiamo combinato: https://storify.com/ErikaMarconato/opendatafest2017

Trasporti AMAT di Palermo? C’è un Telegram per Te!

Post pubblicato originariamente su giovanni.pirrotta.it.

In questi ultimi tempi in rete si fa un gran parlare di BOT (abbreviazione di robot), ovvero quei programmi che fanno credere all’utente di parlare con una persona reale ma che di fatto sono risponditori automatici utili per fornire servizi vari come ad esempio il meteo, news, quiz, sondaggi, giochi, etc.

Il motivo di tutto questo proliferare di BOT è dovuto principalmente all’apertura di Telegram, nella sua versione 3, al mondo degli sviluppatori. Attraverso l’utilizzo di API ufficiali, infatti, è ora possibile creare, gestire e interagire con programmi BOT, personalizzandoli secondo le proprie esigenze.

Ho sempre visto un alto potenziale nell’uso di questo tipo di applicazioni e la scelta di Telegram potrebbe rivelarsi particolarmente azzeccata in questo senso.

Esattamente due anni fa anch’io ho iniziato a interessarmi di BOT, ad immaginarmi il mio smartphone come un telecomando da pigiare per ottenere specifici servizi: informazioni sui programmi televisivi, previsioni meteo, eventi serali della mia città, orari di apertura degli uffici pubblici, etc. Ho sviluppato quindi un BOT su Twitter grazie al quale, con un semplice tweet e una microgrammatica, riuscivo ad inviare richieste ad un’applicazione per ottenere informazioni sui programmi televisivi della serata. Descrivo nel dettaglio l’implementazione del progetto, che si chiama per l’appunto cosaceintv, in questo post; il sito del progetto è cosaceintv.it.

Tuttavia Twitter non consente di creare BOT in modo nativo per cui, per raggiungere lo scopo, sono dovuto scendere a compromessi, chiamateli workaround.

Vero è che l’app non è diffusa come WhatsApp, l’attuale killer application nel settore dell’instant messaging, (molti si aspettavano dei segnali di apertura API da WhatsApp in occasione dell’ultima conferenza F8 di Facebook, ma invece nisba) ma è anche vero che Telegram sta guadagnando sempre più terreno grazie soprattutto a scelte aziendali che si stanno rivelando strategicamente vincenti, come ad esempio

  • il rilascio del sorgente in opensource,
  • l’alta attenzione nei confronti della sicurezza e della privacy degli utenti,
  • la possibilità di creare chat segrete e autodistruggenti dopo un tempo prestabilito,
  • un design pulito e gradevole,
  • la totale gratuita,
  • l’assenza di pubblicità
  • ed infine, non meno importante, l’ultima feature aggiunta cioè la possibilità di creare BOT per la gestione di servizi personalizzati e l’interazione in modo programmatico attraverso API.

Più che una semplice app di messaggistica Telegram è di fatto una vera e propria piattaforma e in rete si trovano già applicazioni BOT di qualsiasi tipo; le più popolari si possono trovare al seguente link.

Ma anche in Italia cominciano a vedersi progetti interessanti.

A Prato Matteo Tempestini ha sviluppato il BOT Emergenze Prato per essere aggiornati in tempo reale su condizioni meteo, possibili allerte e segnalazioni. A Lecce, utilizzando gli opendata del comune e non solo, Pier Paolo Paolicelli (piersoft) ha sviluppato OpenDataLecceBot con il quale è possibile ottenere informazioni su meteo, temperatura, qualità dell’aria, orari delle scuole, tariffe aree ZTL, eventi culturali, etc. Il servizio trasporti bus TPER fornisce informazioni aggiornate sui bus di Bologna usando i servizi informativi e gli opendata. (tperbot.)

Incuriosito quindi da tutto questo fermento mi è venuta voglia di rimettermi in gioco anch’io con i BOT e smanettare un pò con questa piattaforma. Ho accolto, quindi, il suggerimento di piersoft  che consigliava di replicare il servizio offerto dalla TPER di Bologna sui trasporti anche per la città di Palermo, dato che i dati sui trasporti palermitani sono rilasciati dall’ azienda AMAT in formato GTFS con licenza OpenData.

La specifica GTFS (General Transit Feed Specification) è stata sviluppata da Google e definisce un formato comune per rappresentare informazioni orarie di un sistema di trasporti (bus, metro, treno, etc) associandole ad informazioni geografiche.

La specifica struttura i dati organizzandoli in un insieme di file CSV.

I più importanti sono i seguenti:

  • agency – informazioni inerenti l’azienda che gestisce i trasporti;
  • routes – informazioni sulle linee dei trasporti;
  • trips – informazioni inerenti le corse per ciascuna linea;
  • stops – le fermate geolocalizzate;
  • stop_times – l’orario di arrivo e partenza e la sequenza per ogni corsa in ciascuna fermata;
  • calendar – periodo del servizio trasporti su base settimanale;
  • calendar_dates – date in cui vi sono delle eccezioni rispetto a quanto descritto incalendar (ad. es. feste)

Per la specifica completa si rimanda alla pagina ufficiale GTFS

Quindi mettiamoci al lavoro e scarichiamo i dati dal sito AMAT di Palermo.

Per prima cosa scarico il file zippato GTFS dalla pagina OpenData del Comune di Palermo.

Decido di caricare tutti i file CSV all’interno di un dabatase Mysql, per cui inizio a cercare in rete degli statement DDL in modo da risparmiarmi il creare tutto a manina. Uno potrebbe pensare che, essendo GTFS un formato ben definito, uno schema DDL vale l’altro.

Errore!!!

Quelli che seguono sono alcuni consigli che vi potrebbero farvi risparmiare tempo e mal di testa quando decidete di creare uno schema GTFS trovato in rete.

REGOLE D’ORO

  1. Analizzare sempre e bene la qualità dei dati da importare prima di importarli
  2. GOTO 1 ;–)

La maggior parte dei campi id degli schemi che ho trovano in rete è in formato intero mentre nella maggior parte dei record dei dati GTFS AMAT il campo idcontiene anche valori alfanumerici, ergo trasformate tutti gli id da int a varchar.

Per importare i dati automaticamente ho usato uno script in python scaricato da github. Trovate un fork sul mio repository github in quanto lo script conteneva un bug relativo al caricamento di codici alfanumerici contenenti il carattere E. Lo script erroneamente parsava i codici contenenti il carattere E come formato esadecimale considerandoli interi invece di stringa. Trovate la versione fixata nel mio repo.

A questo punto iniziamo a scrivere un pò di codice. La documentazione di riferimento per creare BOT con Telegram è fatta benissimo e la trovate al seguente link. Per lo sviluppo del codice ho usato questa libreria PHP a sua volta descritta in modo molto chiaro qui. La libreria è stata sviluppata per il framework PHP Laravel ma può essere utilizzata anche in modalità standalone.

La prima cosa da fare è creare il bot. Per fare questo bisogna aggiungere sul proprio client Telegram l’utente @BotFather e inviargli il seguente comando /newbot. Dopo aver risposto ad alcune domande, ad esempio nome ed username del BOT, viene generato un TOKEN che rappresenta il ponte di collegamento tra il nostro software e Telegram. Per maggiori dettagli sulla creazione dei bot fate riferimento alla documentazione ufficiale.

Per poter interagire con Telegram scriviamo quindi:

Nella response troveremo informazioni sul bot creato. Per poter inviare messaggi all’utente bisognerà indicare, oltre al messaggio, anche l’ID della chat in modo che solo l’utente che ha fatto la richiesta possa ricevere il messaggio di ritorno.

Oltre a messaggi di testo il nostro BOT può rispondere anche con immagini, audio, video, allegati, etc.:

Ma come fa l’utente a chiedere le informazioni al BOT? Inviando dei comandi.

Per creare un comando, usando la libreria PHP, è necessario estendere la classe Command e implementare il metodo handle. Creare un comando è un’operazione veramente banale, è infatti necessario inizializzare semplicemente la variabile namecon il nome del comando che si vuole creare. Nell’esempio si sta creando il comando /start.

Nell’esempio che segue, digitando da Telegram il comando /start il BOT risponderà con Hello World!

 

Non mi soffermerò oltre su questa libreria perchè, come già detto, è presente una documentazione completa ed esaustiva.

Vediamo adesso le feature più importanti che dovrà avere il nostro BOT. Verranno descritte le più importanti scelte adottate per la logica applicativa. Si tratta essenzialmente di recuperare informazioni dal database e di formattare l’output, ci soffermeremo quindi solo sulle query SQL più importanti.

La prima versione di amatPABot, questo il nome del BOT, implementa due funzionalità:

  • Orario Linee
  • Fermata più vicina

Orario Linee

Le informazioni sono tutte presenti nel db per cui all’interno del metodo handleviene gestita la logica per estrarre le informazioni relative alle linee AMAT di Palermo.

La query SQL utilizzata per mostrare le linee:

 

 

A questo punto viene mostrato l’elenco delle linee AMAT. L’utente può scegliere la linea di cui vuole sapere gli orari. Una volta scelta la linea un nuovo comando recupererà il nome delle fermate della linea (Andata e ritorno) e gli orari relativi.

Per recuperare gli orari delle corse uso la seguente query SQL, passandogli l’id della linea e l’id del servizio, cioè del periodo di riferimento nel calendario.

A questo punto l’output ottenuto è il seguente:

Passiamo adesso all’altra funzionalità.

Fermata più vicina

Per ottenere informazioni sulla fermata più vicina dobbiamo per prima cosa cliccare sulla graffetta e inviare la nostra posizione geografica

Fatto ciò un comando calcolerà le 5 fermate più vicine recuperandole dalla tabellastops eseguendo la seguente query:

Il valore 6371 è la lunghezza del raggio della terra. La formula utilizzata calcola la distanza in KM tra due punti espressi in latitudine e longitudine. Per maggiori informazioni fate riferimento qui e qui.

Per ogni fermata recupero anche il nome delle linee passanti.

 

Vengono mostrate a video le 5 fermate più vicine con le relative linee passanti. La prima fermata viene visualizzata su una mappa (si lo so, è Google Maps e non OpenStreetMap; nativamente Telegram usa le mappe di Google per inviare al client le posizioni geografiche; per usare OSM si potrebbero, ad esempio, creare al volo immagini statiche e inviarle all’utente per la posizione delle fermate).

Per il deploy del BOT ho usato Cloudflare per avere una connessione SSL, condizione necessaria per poter utilizzare il WebHook in Telegram, invece del metodo manuale getUpdates.

Ricapitolando

  • Il BOT è funzionante con i dati aggiornati al 2015;
  • Sulla correttezza e consistenza dei dati non garantisco. Non prendetevela con me per eventuali inesattezze e/o sbagli :–)
  • Il BOT sviluppato è ancora una demo. E’ possibile aggiungere altre funzionalità, il limite è la fantasia.

Per interagire con il bot dovete aggiungere al vostro client Telegram il contatto: @amatPABot.

Il codice sorgente lo trovate qui.

Attenzione, è’ una versione ancora poco stabile, non pronta per andare in produzione.

Se questo lavoro vi è piaciuto un pò, potreste contribuire a farlo conoscere in giro sui social, grazie.

Twittami

 

 

Idee, critiche e suggerimenti sono benvenuti.

That’s all folks! Stay tuned!