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.

Owner
Francesco Del Castillo
Funzionario Servizio sistemi informativi e archivistici della Città di Rivoli. Matematico di formazione, records manager per passione.
Francesco Del Castillo
A performant state estimator for power system

A state estimator for power system. Turbocharged with sparse matrix support, JIT, SIMD and improved ordering.

9 Dec 12, 2022
Custom python interface to xstan (a modified (cmd)stan)

Custom python interface to xstan (a modified (cmd)stan) Use at your own risk, currently everything is very brittle and will probably be changed in the

2 Dec 16, 2021
This is a repository built by the community for the community.

Nutshell Machine Learning Machines can see, hear and learn. Welcome to the future 🌍 The repository was built with a tree-like structure in mind, it c

Edem Gold 82 Nov 18, 2022
How did Covid affect businesses?

NYC_Business_Analysis How did Covid affect businesses? COVID's effect on NYC businesses We all know that businesses in NYC have been affected by COVID

AK 1 Jan 15, 2022
Small tool to use hero .json files created with Optolith for The Dark Eye/ Das Schwarze Auge 5 to perform talent probes.

DSA5-ProbeMaker A little tool for The Dark Eye 5th Edition (Das Schwarze Auge 5) to load .json from Optolith character generation and easily perform t

2 Jan 06, 2022
This library is an ongoing effort towards bringing the data exchanging ability between Java/Scala and Python

PyJava This library is an ongoing effort towards bringing the data exchanging ability between Java/Scala and Python

Byzer 6 Oct 17, 2022
Slimbook Battery 4 is the new version with new features that improves battery control and increases battery duration in laptops.

Slimbookbattery Slimbook Battery 4 is the new version with new features that improves battery control and increases battery duration in laptops. This

SLIMBOOK TEAM 128 Dec 28, 2022
Broken Link Finder is a Burp Extension to detect broken links for a passive scanning domains and links.

Broken Link Finder Broken Link Finder is a Burp Extension to detect broken links for a passive scanning domains and links. Inspired by InitRoot's link

Red Section 10 Sep 11, 2021
Bookmarkarchiver - Python script that archives all of your bookmarks on the Internet Archive

bookmarkarchiver Python script that archives all of your bookmarks on the Internet Archive. Supports all major browsers. bookmarkarchiver uses the off

Anthony Chen 3 Oct 09, 2022
Structural basis for solubility in protein expression systems

Structural basis for solubility in protein expression systems Large-scale protein production for biotechnology and biopharmaceutical applications rely

ProteinQure 16 Aug 18, 2022
CountdownTimer - Countdown Timer For Python

Countdown Timer This python script asks for the user time (input) in seconds, an

Arinzechukwu Okoye 1 Jan 01, 2022
A functional standard library for Python.

Toolz A set of utility functions for iterators, functions, and dictionaries. See the PyToolz documentation at https://toolz.readthedocs.io LICENSE New

4.1k Jan 04, 2023
A silly RPG(Not MMO) made in python

Project_PyMMo A silly RPG(Not MMO) made in python, FOR WINDOWS 10 ONLY! Hello tester, to install pymmo follow the steps bellow: 1.First install python

0 Feb 08, 2022
Make dbt docs and Apache Superset talk to one another

dbt-superset-lineage Make dbt docs and Apache Superset talk to one another Why do I need something like this? Odds are rather high that you use dbt to

Slido 81 Jan 06, 2023
A compiler for ARM, X86, MSP430, xtensa and more implemented in pure Python

Introduction The PPCI (Pure Python Compiler Infrastructure) project is a compiler written entirely in the Python programming language. It contains fro

Windel Bouwman 277 Dec 26, 2022
Geodesic Dome Math

dome Geodesic Dome Math Python dome tool dome.py calculates an icosahedron or 2v geodesic dome and creates 3d printable hubs as OpenSCAD sources. usag

Brian Olson 2 Feb 09, 2022
The Great Autoencoder Bake Off

The Great Autoencoder Bake Off The companion repository to a post on my blog. It contains all you need to reproduce the results. Features Currently fe

Tilman Krokotsch 61 Jan 06, 2023
A weekly dive into commonly used modules in the Rust ecosystem, with story flavor!

The goal of this project is to bring the same concept as PyMOTW to the Rust world. PyMOTW was an invaluable resource for me when I was learning Python years ago, and I hope that I can help someone in

Scott Lyons 20 Aug 26, 2022
The repository for AnyMacro: a Fusion360 Add-In

AnyMacro AnyMacro is an Autodesk® Fusion 360™ add-in for chaining multiple commands in a row to form Macros. Macros are created from a set of commands

1 Jan 07, 2022
Understanding the field usage of any object in Salesforce

Understanding the field usage of any object in Salesforce One of the biggest problems that I have addressed while working with Salesforce is to unders

Sebastian Undurraga 1 Dec 14, 2021