Inviare messaggi tramite app IO a partire da dati contenuti in file .csv

Overview

parlaConIO

Inviare messaggi tramite app IO a partire da dati contenuti in file .csv

--> Nessun obbligo, ma in caso di clonazione o uso del programma ci farebbe piacere che lasciaste due righe nel Libro degli ospiti o su forum.italia.it <--

--> L'uso di parlaConIO è "a rischio e pericolo" di chi lo esegue, non possiamo fornire alcuna garanzia. <--

Script Python per inviare messaggi verso l'app IO partendo da dati contenuti in file CSV

Il progetto comprende degli script Python per inviare messaggi verso l'app IO a partire da dati contenuti in file CSV, tipicamente estratti dai software gestionali in uso presso le amministrazioni. Gli script funzionano da riga di comando e dovrebbero essere indipendenti dal sistema operativo in uso (Windows, Linux). Le operazioni di composizione e invio dei messaggi sono tracciate e memorizzate su log e file di report in formato testo o json. E' incluso anche uno script per la verifica dell'invio di un lotto (=blocco di messaggi ottenuti a partire da un file CSV con i dati).

Gli script consentono di realizzare un dialogo efficace con le API esposte dal sistema app IO, senza sostenere costi di integrazione degli applicativi in uso. Infatti, è sufficiente essere in grado di estrarre dagli applicativi i dati necessari alla composizione dei messaggi secondo un template prestabilito e lanciare lo script. L'assenza di un'interfaccia grafica rende l'uso degli script non eccessivamente "friendly" per gli utenti e si consiglia di riservare l'uso degli script al personale tecnico informatico delle amministrazioni o comunque a utenti esperti. Per ogni lotto, nella stessa directory di installazione, è creata una cartella destinata ad accogliere log e report prodotti durante le fasi di composizione, invio e verifica.

Per utilizzare gli script è necessario:

  • installare l'ambiente Python (www.python.org) e il modulo 'requests' (comando: py/python -m pip install requests);
  • copiare i file di definizione delle funzioni e gli script in una cartella/directory (es.: c:\parlaConIO in ambienti Windows), cioè fare un clone del repository;
  • rimuovere la parte "RIMUOVIMI." dove presente nei nomi dei file;
  • personalizzare i file di configurazione (principalmente quelli appena rinominati);
  • gli script si lanciano da riga di comando, tipicamente indicando come argomento il file CSV da elaborare. In assenza di argomento o in caso di argomento errato, lo script guida l'utente alla sua corretta invocazione.\

I CSV proposti come modello e le regole per interpretarli al fine di comporre i messaggi (payload dell'interrogazione delle API di IO) sono modellati sulle esigenze del Comune di Rivoli. Tuttavia è possibile modificare le regole di composizione dei messaggi intervenendo sulle funzioni definite preparaDati.py e/o negli script "inviaLotto*". L'ordine delle chiavi nei file CSV non è vincolante e le chiavi necessarie alla composizione del messaggio possono coesistere con altre.

Gli script sono migliorabili e in evoluzione. Al momento mancano meccanismi per la gestione efficiente delle eccezioni durante il dialogo con le API di IO. Per esempio, in caso di mancanza di collegamento di rete, il modulo requests restituisce un'eccezione che causa l'interruzione del programma. In tal caso è necessario interrogare i log per capire se e quali messaggi sono stati inviati, eliminare le relative righe dal CSV e lanciare nuovamente lo script di invio. Un evento del genere non consente nemmeno la corretta verifica dello stato di consegna dei messaggi inviati prima dell'interruzione del programma.

Per richieste di assistenza, suggerimenti, proposte e ogni altra discussione sul progetto si rimanda alla sezione "issues" del repository.

Il progetto è ideato e mantenuto dal Comune di Rivoli, Servzio SIA (Sistemi Informativi e Archivistici) ed è aperto alla collaborazione delle amministrazioni interessate.

  • parlaConIO.py implementa le funzioni di dialogo con IO con relative API key e di logging.

  • preparaDati.py definisce le caratteristiche più legate alle operazioni sui file usati come fonte di dati o template per i messaggi.

  • inviaLotto* sono script specifici per l'invio di lotti di messaggi di un determinato servizio IO (indicazioni nel preambolo del codice); dove possibile una procedura interattiva guida nell'associazione fra le "colonne" del file CSV e le variabili presenti nel template del messaggio. Gli script si eseguono indicando come argomento il nome del file csv con i dati da processare. Esempio "py ./inviaLottoScadenzaCI.p ./scadenzaCI.csv".

  • verificaConsegnaLotto.py: consente di verificare lo stato di consegna di un lotto. Richiede come argomento il file "...-EsitoInvii.json" presente nella cartella di lotto del lotto che si vuole verificare.

STRUMENTI DI SUPPORTO, utili a fini statistici e per indirizzare le scelte.

verificaListaCF.py: esegue la verifica dell'iscrizione a un servizio IO (proposto fra quelli configurati in parlaConIO.py). In input richiede un CSV con una "colonna" che contiene i codici fiscali di cui verificare l'iscrizione. Durante l'esecuzione chiede di indicare quale chiave del CSV contiene il codice fiscale. Restituisce il risultato nella cartella del lotto (cartella con suffisso "verificaCF-").

verificaNucleiIO: estensione del precedente, controlla inoltre per quanti nuclei familiari è presente almeno una installazione di IO iscritta al servizio indicato. Si tratta di una funzione utile per i comuni, per valutare il livello di diffusione di IO sul proprio territorio. Lo script si attende in input un file CSV con due colonne, la prima con il codice fiscale la seconda con un codice identificativo del nucleo familiare. Il conteggio dei nuclei familiari con IO è annotato nel file di log, che si trova nella cartella del lotto.

FILE DI CONFIGURAZIONE (i file presenti, per i quali occorre eliminare la stringa "RIMUOVIMI" nel nome del file, sono da personalizzare):

  • serviziIO.py: contiene le chiavi per i servizi IO configurati nel backoffice di IO e alcuni parametri utili per la gestione dell'operatività
  • serviziDiIncasso.py: contiene le scioglimento dei codici dei servizi di incasso presenti nell'implementazione PagoPA dell'ente

FILE CSV DI PROVA: Sono presenti alcuni file CSV di prova con codici fiscali fittizi, alcuni riconosciuti validi da IO e utilizzabili per test (es.: AAAAAA00A00A000A)

****SPAZI DI DISCUSSIONE***

Si invita a lasciare un saluto o un commento nel Libro degli ospiti: sono particolarmente graditi commenti, impressioni e suggerimenti da parte di chi opera all'interno della pubblica amministrazione e si trova ad affrontare l'integrazione di app IO nella propria organizzazione ma anche di chi opera nel settore a livello professionale.

E' inoltre attiva una discussione su forum.italia.it.

Comments
  • Add codiceIPA to publiccode.yml file

    Add codiceIPA to publiccode.yml file

    Buongiorno @franthemanIT,

    purtroppo la validazione non è andata a buon fine a causa di un mismatch tra il codiceIPA dichiarato in fase di onboarding e quello trovato nel publiccode.yml (in questo momento non c'è). Il codiceIPA è un campo obbligatorio in caso di software di titolarità della PA. Questo è un controllo che l'editor online non può fare ma viene effettuato a backend dal crawler. Fatta questa modifica domani mattina il software sarà a catalogo.

    Grazie molte

    opened by libremente 1
  • Azioni in seguito a response status 429

    Azioni in seguito a response status 429

    Le API di IO inviano una response con status 429 in caso di sistemi sovraccarichi. La guida tecnica di IO raccomanda in tal caso di tentare nuovamente l'invio e diradare la frequenza delle chiamate. parlaConIO non implementa questa raccomandazione ma lo farà presto.

    Nel frattempo invito chiunque utilizzi parlaConIO a adottare le opportune cautele.

    enhancement 
    opened by franthemanIT 1
  • Fix logo path

    Fix logo path

    Buongiorno @franthemanIT,

    ho apportato una leggera modifica al file publiccode.yml per rendere il path del logo relativo alla root del repository. Questo faciliterà l'import nel catalogo.

    A disposizione Grazie molte

    opened by libremente 0
  • Gestione status code 429

    Gestione status code 429

    Aggiunta gestione dello status code 429 ricevuto come risposta da IO. In caso di status 429 lo script fa una pausa e incrementa la pausa fra le iterazioni. Quando la pausa fra interazioni è troppo lunga, il porgramma si interrompe, produce gli output consueti di quanto elaborato e un file CSV con i dati non elaborati da usare per una nuova esecuzione dello script.

    enhancement 
    opened by franthemanIT 0
  • Libro degli ospiti

    Libro degli ospiti

    Spazio per saluti e commenti su parlaConIO. In particolare è gradito un riscontro da chi opera nelle pubbliche amministrazioni e, a vario titolo, si sta cimentando nell'uso estensivo di appIO. Grazie e buon lavoro a tutti.

    opened by franthemanIT 0
  • Gestione delle eccezioni - raccolta dei possibili errori

    Gestione delle eccezioni - raccolta dei possibili errori

    Come avete visto, il codice non prevede gestione delle eccezioni. E' qualcosa che, pensado di usare parlaConIO nell'operatività amministrativa, va aggiunta. Invito a segnalare qui o in issue dedicata le eccezioni/errori che possono verificarsi nell'uso del programma.

    Osservo preliminarmente che:

    • le operazioni che avvengono offline (principalmente: individuazione del CSV, individuazione delle corrispondenze) non dovrebbero dare origini a eccezioni e, se anche lo facessere, queste non creerebbero eccessivi disagi (almeno all'utente. almeno a quello smaliziato).
    • la parte di interazione con le API di IO è quella principalmente soggetta a errori.

    Elenco di seguito gli errori durante l'interazione con IO in cui mi sono imbattuto e che, non gestiti, determinano l'arresto del programma e la mancata produzione dei file di output (eccetto i log, dai quali comunque è possibile capire dove si è interrotta l'iterazione del dialogo con IO):

    • getProfile: si passa una stringa vuota come codice fiscale da controllare (un codice fiscale non vuoto, non formalmente corretto genera comunque una risposta di IO e parlaConIO lo annota fra le interrogazioni in errore) - SOLUZIONE: passare al codice fiscale successivo e 1. annotare la stringa vuota in "interrogazioniInErrore", 2. segnalare l'evento vistosamente nel log indicando la riga del csv afflitta dall'errore.
    • mancanza di rete: genera un errore di timeout. SOLUZIONE: attendere per un certo periodo di tempo e riprovare nuovamente il medesimo invio? dopo il secondo errore consecutivo passare al successivo? se anche il successivo va in timeput interrompere l'interazione con IO, produrre i file di output parziali e fare un dump degli invii non fatti (dump in json di tabellaDati, da usare come input per una ipotetica funzione di recupero di un invio incompleto).
    • ...

    Errori offline:

    • funzione data: si attende una data scritta in un certo modo nel CSV, se una riga avesse una data difforme genererebbe un'eccezione. SOLUZIONE: passare all'invio successivo, segnalare a video e nel log con indicazione della riga del CSV afflitta dall'errore, generare un ulteriore file di output per gli errori. La rimozione dell'errore in questo caso deve passare dalla modifica della fonte CSV, non si prevedono meccanismi di recupero (semplicemente, si farà un nuovo CSV che contiene solo le righe afflitte da errore opportunamente corrette e si lancia l'invio di un nuovo lotto).
    enhancement 
    opened by franthemanIT 0
  • IO: onboarding e servizi

    IO: onboarding e servizi

    Per l'onboarding su IO si rimanda al sito ufficiale: https://io.italia.it/pubbliche-amministrazioni/ Per la documentazione della API esposte da IO: https://developer.io.italia.it/openapi.html/ Dalla pagina di documentazione ufficiale delle API si può eseguire il download del file con le specifiche ("Download API specification") che può essere importato in Postman (https://www.postman.com) per fare prove guidate di interazione con le API di IO.

    Una volta eseguito l'onboarding, il back-office di IO (https://developer.io.italia.it/) consente di definire i servizi esposti dall'amministrazione su IO e ricavare le API KEY fondamentali per l'interazione con le API di IO.

    documentation 
    opened by franthemanIT 0
Owner
Francesco Del Castillo
Funzionario Servizio sistemi informativi e archivistici della Città di Rivoli. Matematico di formazione, records manager per passione.
Francesco Del Castillo
Vehicle Identification Speed Detection (VISD) extracts vehicle information like License Plate number, Manufacturer and colour from a video and provides this data in the form of a CSV file

Vehicle Identification Speed Detection (VISD) extracts vehicle information like License Plate number, Manufacturer and colour from a video and provides this data in the form of a CSV file. VISD can also perform vehicle speed detection on a video. All these features of VSID are provided to the user using a Web Application which is created using Flask

null 6 Feb 22, 2022
A simple program which gets a file(CSV/Excel) with tasks and creates different variants

TestMakerProject A simple program which gets a file(CSV/Excel) with tasks and creates different variants The main program is QTengine.py You only have

George 3 Nov 18, 2021
Scraping comments from the political section of popular Nigerian blog (Nairaland), and saving in a CSV file.

Scraping_Nairaland This project scraped comments from the political section of popular Nigerian blog www.nairaland.com using the Python BeautifulSoup

Ansel Orhero 1 Nov 14, 2021
Med to csv - A simple way to parse MedAssociate output file in tidy data

MedAssociates to CSV file A simple way to parse MedAssociate output file in tidy

Jean-Emmanuel Longueville 5 Sep 9, 2022
A program made in PYTHON🐍 that automatically performs data insertions into a POSTGRES database 🐘 , using as base a .CSV file 📁 , useful in mass data insertions

A program made in PYTHON?? that automatically performs data insertions into a POSTGRES database ?? , using as base a .CSV file ?? , useful in mass data insertions.

Davi Galdino 1 Oct 17, 2022
Export transactions for an algorand wallet to a CSV file

algorand_txn_csv_exporter - (Algorand transaction CSV exporter) This script will export transactions for an algorand wallet to a CSV file. It is inten

TeneoPython01 5 Jun 19, 2022
It converts ING BANK account historic into a csv file you can import in HomeBank application.

ing2homebank It converts your ING Bank account historic csv file into another csv file you can import in HomeBank application

null 1 Feb 14, 2022
TurtleBot Control App - TurtleBot Control App With Python

TURTLEBOT CONTROL APP INDEX: 1. Introduction 2. Environments 2.1. Simulated Envi

Rafanton 4 Aug 3, 2022
SWS Filters App - SWS Filters App With Python

SWS Filters App Fun ?? ... Fun ?? Click On photo and see ?? ?? ?? Your Video rec

Sagar Jangid 3 Jul 7, 2022
News-app - This is a news web app for reading news from different sources and topics

News-app - This is a news web app for reading news from different sources and topics

null 1 Feb 2, 2022
App and Python library for parsing, writing, and validation of the STAND013 file format.

python-stand013 python-stand013 is a Python app and library for parsing, writing, and validation of the STAND013 file format. Features The following i

Oda 3 Nov 9, 2022
MiniJVM is simple java virtual machine written by python language, it can load class file from file system and run it.

MiniJVM MiniJVM是一款使用python编写的简易JVM,能够从本地加载class文件并且执行绝大多数指令。 支持的功能 1.从本地磁盘加载class并解析 2.支持绝大多数指令集的执行 3.支持虚拟机内存分区以及对象的创建 4.支持方法的调用和参数传递 5.支持静态代码块的初始化 不支

keguoyu 60 Apr 1, 2022
A Python3 script to decode an encoded VBScript file, often seen with a .vbe file extension

vbe-decoder.py Decode one or multiple encoded VBScript files, often seen with a .vbe file extension. Usage usage: vbe-decoder.py [-h] [-o output] file

John Hammond 147 Nov 15, 2022
Fetch data from an excel file and create HTML file

excel-to-html Problem Statement! - Fetch data from excel file and create html file Excel.xlsx file contain the information.in multiple rows that is ne

Vivek Kashyap 1 Oct 25, 2021
JD-backup is an advanced Python script, that will extract all links from a jDownloader 2 file list and export them to a text file.

JD-backup is an advanced Python script, that will extract all links from a jDownloader 2 file list and export them to a text file.

Kraken.snv 3 Jun 7, 2022
Bring A Trailer(BAT) is a popular online auction website for enthusiast cars. This traverse auction results and saves them as CSV

BaT Data Grabber Bring A Trailer(BAT) is a popular online auction website for enthusiast cars. This traverse auction results and saves them as CSV Bri

Elliot Weil 2 Oct 31, 2021
Convert .1pux to .csv

1PasswordConverter Convert .1pux to .csv 1Password uses this new export format .1pux, I assume stands for 1 Password User eXport. As of right now, 1Pa

Shayne Hartford 7 Dec 16, 2022
A python script to make leaderboards using a CSV with the runners name, IDs and Flag Emojis

SrcLbMaker A python script to make speedrun.com global leaderboards. Installation You need python 3.6 or higher. First, go to the folder where you wan

null 2 Jul 25, 2022
Software that extracts spreadsheets from various .pdf files to .csv

Extração de planilhas de diversos arquivos .pdf para .csv O código inteiro foi desenvolvido em Python. Foi utilizado o pacote "tabula" e a biblioteca

Marcos Silva 2 Jan 9, 2022