Documentazione API esterne mobspot.it
Transcript
Documentazione API esterne mobspot.it
API MOBSPOT PER RIVENDITORI RELEASE 25/03/2016 API PER L'INTERFACCIAMENTO DA APPLICATIVI ESTERNI R&D communication S.r.l. Via Dei Castagni, 9 - 37141 Montorio Verona Tel. 0458841199 - Fax. 0458841224 www.rdcom.it - [email protected] CF e P.Iva 03269830232 SOMMARIO API MOBSPOT PER RIVENDITORI .................................................................................................................................... 1 INTRODUZIONE .................................................................................................................................................................... 3 ESTRAZIONE PROFILAZIONI............................................................................................................................................. 4 ....................................................................................................... 5 ESTRAZIONE CAP DI UN DETERMINATO COMUNE .................................................................................................. 9 ESTRAZIONE CAP LIMITROFI AD UN DETERMINATO COMUNE........................................................................ 10 .............................................................. 12 ESTRAZIONE CARATTERI ACCETTATI PER UNA CAMPAGNA............................................................................. 13 .......................... 14 UNA CAMPAGNA .............................................................................................................................................................. 15 CARICAMENTO MANLEVA ............................................................................................................................................. 16 ESTRAZIONE STATO ACCETTAZIONE MANLEVA E NUMERO INTERAZIONI ................................................. 17 ESTRAZIONE INTERAZIONI CORRETTE CAMPAGNA ............................................................................................. 19 ESTRAZIONE CREDITI DISPONIBILI ............................................................................................................................. 20 ESTRAZIONE INFORMAZIONI UTENTE ...................................................................................................................... 21 ESTRAZIONE COSTO CAMPAGNA............................................................................................................................... 22 ACCODAMENTO CAMPAGNA ...................................................................................................................................... 24 ESTRAZIONE RIEPILOGHI CAMPAGNE....................................................................................................................... 26 ESTRAZIONE DETTAGLIO CAMPAGNA...................................................................................................................... 28 ELIMINAZIONE CAMPAGNA.......................................................................................................................................... 30 ESEMPIO............................................................................................................................................................................... 32 TABELLA DEI CODICI DI ERRORE ................................................................................................................................. 46 Pagina 2/47 INTRODUZIONE E' possibile l'utilizzo delle suddette API previa autorizzazione dell'Ufficio Tecnico. Pagina 3/47 ESTRAZIONE PROFILAZIONI Questa API permette di recuperare le possibili profilazioni di estrazione numerosità contatti dal sistema Mobspot. (POST o GET) : Pagina 4/47 http://api.mobspot.it/getProfilazioni.php passando il seguente parametro obbligatorio: Parametro auth Descrizione Oggetto in formato JSON contenente le credenziali. deve contenere le seguenti proprietà: Proprietà username verify_code Descrizione può essere per esempio calcolato tramite la funzione php md5(). Esempio di calcolo del valore di username = prova password = testing verify_code = MD5(provatesting) 1c4eb3ca4a3286f56f3c75ec13ce5680 Esempio : http://api.mobspot.it/getProfilazioni.php?auth={"username":"xxxx","verify_code":"0b0cfc07fca81 c956ab9181d8576f4a8"} della chiamata e corretti verrà ritornata una stringa in formato JSON contente un array di oggetti aventi le seguenti proprietà: Proprietà id_prof name values Proprietà id_value value value2 Descrizione Id della profilazione. Nome della profilazione. Array contenente i valori di profilazione ed i rispettivi id. Per i Descrizione Id del valore di profilazione. Valore di profilazione. Nel caso delle province conterrà la sigla. Valore di profilazione alternativo: questa proprietà sarà presente solo per le province e conterrà il nome della provincia per intero. Esempio di esito ritornato: [{"id_prof":"1","name":"Sesso","values":[{"id_value":"2","value":"Femmine"},{"id_value":"1","value":" Maschi"}]},{...},{...},{...}] Pagina 5/47 (dove { } le profilazioni successive) In caso la chiamata non sia corretta verrà ritornata una stringa in formato JSON contenente il relativo codice di errore. id_prof 1 name Sesso 2 Eta 3 4 7 Provincia Tipo campagna Cap Descrizione Genere con cui poter profilare i contatti disponibili. Età in anni. Valore minimo: 18 anni. Valore massimo: 66+ (66 anni e oltre). Provincia italiana. Tipo di messaggio che si desidera inviare. Codice di avviamento postale. ESTRAZIONE TOTALI E INVIABILI Questa API restituisce le numerosità di contatti presenti nel sistema che corrispondono alle caratteristiche passate in ingresso. Inoltre restituisce il numero di sms che è possibile scegliere per una campagna effettuata sul medesimo target di profilazione. http://api.mobspot.it/getNumerosita.php passando i seguenti parametri obbligatori: Parametro auth request Descrizione Oggetto in formato JSON contenente le credenziali. Array in formato JSON contenente le profilazioni desiderate. Proprietà username Descrizione verify_code username = prova password = testing request = [{"id_prof":"4","values":["1"]}] verify_code = MD5(prova[{"id_prof":"4","values":["1"]}]testing) e147a0f8c8e983b8efae7e5de2b85037 Pagina 6/47 Proprietà id_prof values Descrizione Id della profilazione. Array contenenti gli id dei valori per il quale si vuole profilare la ricerca. Nel caso dei Cap, si devono passare direttamente i valori desiderati. Anche nel caso non si vogliano impostare profilazioni specifiche (vedi Esempio 1). Esempio 1 : http://api.mobspot.it/getNumerosita.php?auth={"username":"1234","verify_code":"25d55ad283a a400af464c76d713c07ad"}&request=[] Esempio 2 : http://api.mobspot.it/getNumerosita.php?auth={"username":"4321","verify_code":"196f48070ebf 023d60bb7362efee8fb9"}&request=[{"id_prof":"4","values":["1"]},{"id_prof":"2","values":["1","10"]}] Per ogni profilazione, ci sono delle restrizioni e dei controlli differenti, come riportato di seguito in tabella. Profilazione Sesso Età Provincia Cap Controlli e restrizioni Controllo degli id dei valori passati. Controllo degli id dei valori passati. Restrizioni: devono essere sempre passati 2 valori, desiderato. Controllo degli id dei valori passati. Controllo della sintassi dei valori passati (5 caratteri numerici per ciascun cap). della chiamata e sono corretti verrà ritornata una stringa in formato JSON contente un array di oggetti aventi le seguenti proprietà: Proprietà totale id_tipocampagna pacchetti Descrizione Numerosità totale. Id del tipo di campagna a cui si riferisce la numerosità. Array contenente i pacchetti Campo personalizzato Descrizione Indica se è possibile scegliere un valore arbitrario di sms da inviare per una campagna che utilizza la medesima profilazione ed è del medesimo tipo. possibile scegliere una quantità di sms a piacere, due valori ritornati scegliere come numerosità inviabile (per una campagna che utilizza la medesima profilazione e il medesimo tipo di campagna) uno a scelta tra i valori . Array contenente le numerosità che possono essere scelte per inviare una campagna che utilizza la medesima profilazione ed è del medesimo tipo. In caso questo array sia vuoto, vuol dire che non è possibile accodare una campagna che utilizza la medesima profilazione ed è del medesimo tipo. In di numerosità per i quali è possibile accodare una campagna con medesima profilazione e medesimo tipo. Questi valori saranno sempre compresi tra un valore minimo e un valore massimo. Il valore massimo pacchetto della risposta). Sarà ritornato un solo valore in caso il il campo , verranno inclusa e compresa tra questi due valori. In caso il potrà scegliere solo tale valore in caso scelga di accodare una campagna con la medesima profilazione ed il medesimo tipo. Se tra le profilazioni è stato aggiunto anche il tipo di campagna riferita ovviamente al tipo di campagna scelto, altrimenti il numero di celle sarà equivalente al numero di tipologie di campagna disponibili. Esempio di esito ritornato 1 [{"totale":"123456","id_campagna":"0","pacchetti":{"personalizzato":"SI","pacchetto":["1","123456"] }},{"totale":"5736","id_campagna":"1","pacchetti":{"personalizzato":"NO","pacchetto":["1000","2000 ","5000"]}}] Esempio di esito ritornato Pagina 7/47 [{"totale":1463830,"id_tipocampagna":"1","pacchetti":{"personalizzato":"NO","pacchetto":["1000"," 2000"]}}] Esempi di risposte JSON, con la descrizione specifica per le numerosità inviabili: Pagina {"totale":"674","id_campagna":"0","pacchetti":{"personalizzato":"NO","pacchetto":[]}} 8/47 La numerosità ritornata indica che sono disponibili 674 contatti che corrispondono alla profilazione cercata. Purtroppo questo numero è inferiore alla numerosità minima accettata dal sistema, quindi non è possibile richiedere una campagna per questa profilazione. {"totale":"1432","id_campagna":"1","pacchetti":{"personalizzato":"NO","pacchetto":["1000"]}} La numerosità ritornata indica che sono disponibili 1432 contatti che corrispondono alla una campagna da 1432 contatti. {"totale":"1432","id_campagna":"2","pacchetti":{"personalizzato":"SI","pacchetto":["1000","1432"]}} La numerosità ritornata indica che sono disponibili 1432 contatti che corrispondono alla campagna da 1432 contatti, oppure anche di un qualsiasi valore compreso tra 1000 e 1432. {"totale":"2734","id_campagna":"0","pacchetti":{"personalizzato":"NO","pacchetto":["1000","2000"," 2734"]}} La numerosità ritornata indica che sono disponibili 2734 contatti che corrispondono alla contatti, oppure da 2734 contatti. {"totale":"2734","id_campagna":"1","pacchetti":{"personalizzato":"SI","pacchetto":["1000","2734"]}} La numerosità ritornata indica che sono disponibili 2734 contatti che corrispondono alla campagna da 2734 contatti, oppure anche di un qualsiasi valore compreso tra 1000 e 2734. {"totale":"5736","id_campagna":"2","pacchetti":{"personalizzato":"NO","pacchetto":["1000","2000"," 5000","5736"]}} La numerosità ritornata indica che sono disponibili 5736 contatti che corrispondono alla ntatti oppure da 2000 contatti, oppure da 5000 oppure da 5736 contatti. {"totale":"5736","id_campagna":"0","pacchetti":{"minimo":"1000","personalizzato":"SI","pacchetto": ["1000","5736"]}} La numerosità ritornata indica che sono disponibili 5736 contatti che corrispondono alla campagna da 5736 contatti, oppure anche di un qualsiasi valore compreso tra 1000 e 5736. Pagina 9/47 In caso la chiamata non sia corretta verrà ritornata una stringa in formato JSON contenente il relativo codice di errore. ESTRAZIONE CAP DI UN DETERMINATO COMUNE Questa API restituisce i cap appartenenti ad un comune indicato. La stringa alfanumerica passata o delle stringhe alfanumeriche che identificano i comuni italiani. Quindi è possibile che data una stringa in ingresso, la funzione possa restituire più comuni che contengono tale stringa. dirizzo: http://api.mobspot.it/getCapComune.php passando i seguenti parametri obbligatori: Parametro auth request Proprietà username Descrizione Oggetto in formato JSON contenente le credenziali. Oggetto in formato JSON contenente il comune per il quale si vuole recuperare la lista dei Cap. Descrizione verify_code Esempio di username = prova password = testing request = {"comune":"Roma"} verify_code = MD5(prova{"comune":"Roma"}testing) c948ef043974dbaa1d97d4c72cbaf6ed una singola proprietà: Proprietà comune Descrizione : Pagina http://api.mobspot.it/getCapComune.php?auth={"username":"5555","verify_code":"52f485b6d92 7847043f6fa1dd1ab8de4"}&request={"comune":"Belluno"} JSON contente un array di oggetti aventi le seguenti proprietà: Proprietà comune Descrizione Comune recuperato dalla stringa passata nella request. La stringa passata deve essere di almeno 2 caratteri e la ricerca non sarà case-sensitive (cioè non si terrà in considerazione la differenza tra caratteri minuscoli e caratteri maiuscoli). cap Esempio di esito ritornato [{"comune":"Belluno", "cap":["32100"]}, {"comune":"Brentino Belluno", "cap":["37020"]}] corrispondono rispetto alla stringa ricercata. In caso non venga riconosciuto alcun comune italiano per la richiesta effettuata, verrà ritornato un elemento vuoto. In caso la chiamata non sia corretta verrà ritornata una stringa in formato JSON contenente il relativo codice di errore. ESTRAZIONE CAP LIMITROFI AD UN DETERMINATO COMUNE Questa API restituisce i cap localizzati geograficamente nelle vicinanze di un cap di partenza. Un cap si trova nelle vicinanze di un altro se la sua distanza è minore della distanza massima passata http://api.mobspot.it/getCapLimitrofi.php passando i seguenti parametri obbligatori: 10/47 Parametro auth Descrizione Oggetto in formato JSON contenente le credenziali. Oggetto in formato JSON contenente il cap di partenza per la ricerca, e la distanza in km entro la quale voler considerare i cap come limitrofi. request Proprietà username Pagina Descrizione 11/47 verify_code username = prova password = testing request = [{"cap":"38100", "distanza":"10"}] verify_code = MD5(prova[{"cap":"38100", "distanza":"10"}]testing) 6b96e1f4536ca9a66814bd9fd5b9fee4 rietà: Proprietà cap distanza Descrizione Cap di partenza attorno al quale estrarre i cap limitrofi. Km di distanza entro i quali considerare i cap da estrarre. Le distanze accettate sono solo 5, 10, 20, 35 e 50 Km. : http://api.mobspot.it/getCapLimitrofi.php?auth={"username":"wwww","verify_code":"9b5ceda05 06e4bf0207cc6bfb4658982"}&request={"cap":"32100", "distanza":"10"} JSON contente un array di oggetti aventi la seguente proprietà: Proprietà cap Descrizione Esempio di esito ritornato {"cap":["32100", "32020"]} Come si verrà ritornato un elemento vuoto. In caso la chiamata non sia corretta verrà ritornata una stringa in formato JSON contenente il relativo codice di errore. 12/47 CAMPAGNA Questa API restituisce la spiegazione degli stati nei quali si può trovare una campagna. http://api.mobspot.it/getStatiCampagna.php passando il seguente parametro obbligatorio: Parametro auth Descrizione Oggetto in formato JSON contenente le credenziali. deve contenere le seguenti proprietà: Proprietà username verify_code Descrizione sempio calcolato tramite la funzione php md5(). http://api.mobspot.it/getStatiCampagna.php?auth={"username":"yyyy","verify_code":"d3cfff9bb 035198d2ed56c83b1613638"} no corretti verrà ritornata una stringa in formato JSON contente un array di oggetti aventi le seguenti proprietà: Proprietà statoid statospiegazione Pagina Descrizione Identificativo dello stato in cui si trova la campagna. Spiegazione dello stato in cui si trova la campagna. Esempio di esito ritornato: [{"statoid":"3","statospiegazione":"Campagna confermata"},{"statoid":"5","statospiegazione":"Erogazione campagna in corso"}] In caso la chiamata non sia corretta verrà ritornata una stringa in formato JSON contenente il relativo codice di errore. ESTRAZIONE CARATTERI ACCETTATI PER UNA CAMPAGNA Questa API restituisce i caratteri accettati per una campagna. 13/47 http://api.mobspot.it/getCaratteriAccettati.php passando il seguente parametro obbligatorio: Parametro auth Descrizione Oggetto in formato JSON contenente le credenziali. Proprietà username verify_code Descrizione sempio calcolato tramite la funzione php md5(). : http://api.mobspot.it/getCaratteriAccettati.php?auth={"username":"zzzz","verify_code":"132f041 e933befadc47dab2217465d0a"} JSON contente un array di oggetti aventi le seguenti proprietà: Proprietà tipocampagna Pagina Descrizione Tipo di campagna. Rispecchia i valori restituiti dalla API getProfilazioni.php per caratteriaccettati codificato in JSON. La codifica utilizzata è UTF8. Esempio di esito ritornato: [{"tipocampagna":"0","caratteriaccettati":" !#%\"&'()\u20ac*+,.\/0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ\u00e0\u00e8\u00ec\u00f2\u00f9\u00e 9\u00a3$[]{}^@#\u00a7abcdefghijklmnopqrstuvwxyz"},{"tipocampagna":"1","caratteriaccettati":" !#$%\"&'()*+,.\/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`\u00a3\u00a5\u00a7\u00bf\u00c4 \u00c6\u00c9\u00d1\u00d6\u00d8\u00dc\u00df\u00e0\u00e4\u00e5\u00e6\u00e8\u00e9\u00f 1\u00f2\u00f6\u00f8\u00f9\u00fc\u00ecabcdefghijklmnopqrstuvwxyz"},{"tipocampagna":"2","ca ratteriaccettati":" !#%\"&'()\u20ac*+,.\/0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ\u00e0\u00e8\u00ec\u00f2\u00f9\u00e 9\u00a3$[]{}^@#\u00a7abcdefghijklmnopqrstuvwxyz"}] Pagina In caso la chiamata non sia corretta verrà ritornata una stringa in formato JSON contenente il relativo codice di errore. BILE CONFERMARE UNA CAMPAGNA Questa API restituisce le date nelle quali non è possibile confermare una campagna. Oltre alle date restituite, il sistema non accetterà campagne confermate nei giorni di sabato e domenica. http://api.mobspot.it/getDateNegate.php passando il seguente parametro obbligatorio: Parametro auth Descrizione Oggetto in formato JSON contenente le credenziali. proprietà: Proprietà username verify_code Descrizione e per esempio calcolato tramite la funzione php md5(). Esempio di chiamata a : http://api.mobspot.it/getDateNegate.php?auth={"username":"1111","verify_code":"98c4524b0e5 07a11ba1e7b04e8487c19"} stringa in formato JSON contente un array di oggetti aventi la seguente proprietà: Proprietà datenegate Descrizione Array contenente le date nelle quali non è possibile confermare una campagna. Le date ritornate sono formattate in questo modo: AAAA-MM-DD . Esempio di esito ritornato: 14/47 {"datenegate":["2014-08-15","2014-11-01","2014-12-08"]} In caso la chiamata non sia corretta verrà ritornata una stringa in formato JSON contenente il relativo codice di errore. Pagina 15/47 ESTRAZIONE DATA MINIMA E DATA MASSIMA ENTRO LE confermare una campagna (rispettando ovviamente i vincoli de getDateNegate.php). http://api.mobspot.it/getDateMinMax.php passando il seguente parametro obbligatorio: Parametro auth Descrizione Oggetto in formato JSON contenente le credenziali. Proprietà username verify_code Descrizione può essere per esempio calcolato tramite la funzione php md5(). : http://api.mobspot.it/getDateMinMax.php?auth={"username":"2222","verify_code":"ecf0d81f719 26dec9edcd16b39fa7ae4"} JSON contente un array di oggetti aventi le seguenti proprietà: Proprietà dataminima Descrizione Data di partenza dalla quale è possibile confermare una campagna. La data ritornata è formattata in questo modo: AAAA-MM- datamassima Data massima entro la quale è possibile confermare una campagna. La data ritornata è formattata in questo modo: AAAA-MM- Esempio di esito ritornato: {"dataminima":"2014-06-25","datamassima":"2015-06-25"} CARICAMENTO MANLEVA Pagina 16/47 campagna, è necessario fornire debitamente compilato il documento di richiesta denominato e caricarlo direttamente via API. Una volta terminato il processo di caricamento, è necessario attendere che la manleva venga verificata dal sistema. , si consiglia POST per le dimensioni dei dati da passare http://api.mobspot.it/setManleva.php passando i seguenti parametri obbligatori: Parametro auth request Proprietà username verify_code Descrizione Oggetto in formato JSON contenente le credenziali. Ogget in base 64 dei byte che formano il file da caricare. Descrizione MD5 calcolato con Esempio username = prova password = testing request = {"id_campagna":"1234567890", "file_manleva":"VGVzdCBmaWxlIGRpIG1hbmxldmEgcGRm"} verify_code = MD5(prova{"id_campagna":"1234567890","file_manleva": "VGVzdCBmaWxlIGRpIG1hbmxldmEgcGRm"}testing) 97551b1334c2969f05c3512b75352944 Proprietà id_campagna file_manleva Descrizione Identificativo univoco della campagna per la quale si intende caricare il file di manleva. Valore in base64 dei byte che formano il file di manleva. Il file deve essere in formato pdf. In caso di caricamento corretto verrà ritornata la seguente stringa JSON: {"esitocaricamento":"OK"} Pagina In caso la chiamata non sia corretta verrà ritornata una stringa in formato JSON contenente il relativo codice di errore. ESTRAZIONE STATO ACCETTAZIONE MANLEVA E NUMERO INTERAZIONI Una volta caricata la manleva nel sistema, è possibile richiedere un aggiornamento sullo stato della sua accettazione. Se la manleva viene autorizzata dal sistema, la risposta conterrà anche il numero di interazioni avute per la campagna. http://api.mobspot.it/getStatoManleva.php passando i seguenti parametri obbligatori: Parametro auth Descrizione Oggetto in formato JSON contenente le credenziali. request recuperare lo stato della manleva e il numero delle interazioni. Proprietà username Descrizione verify_code username = prova password = testing request = {"id_campagna":"1234567890"} verify_code = MD5(prova{"id_campagna":"1234567890"}testing) b295d6952e131ce274911e8c6a82fb8d e contenere una singola proprietà: Proprietà id_campagna Descrizione Identificativo univoco della campagna per la quale si intende recuperare lo stato di autorizzazione della manleva e il numero delle interazioni avute. 17/47 : Pagina http://api.mobspot.it/getStatoManleva.php?auth={"username":"cccc","verify_code":"e7fc14d5db 38955e74283529f3fd1399"}&request={"id_campagna":"0987654321"} JSON contente un oggetto avente le seguente proprietà: Proprietà statomanleva interazioni Descrizione Stato nella quale può trovarsi la procedura di autorizzazione di una manleva. I valori possibili sono: 1 => Manleva non ancora caricata, oppure rifiutata (in questo caso è necessario caricare una nuova manleva in quanto quella precedente non è stata autorizzata) 2 => Manleva caricata ma non ancora valutata dal sistema 3 => Manleva caricata e autorizzata Oggetto contenente il numero di interazioni corrette e il numero di interazioni non corrette. Esempio di esito ritornato (per manleva non ancora caricata): {"statomanleva":"1":"", } Esempio di esito ritornato (per manleva non ancora valutata): {"statomanleva":"2"," } Esempio di esito ritornato (per manleva autorizzata): {"statomanleva":"3","interazioni":{"ok":"65","err":"2"}} In caso la chiamata non sia corretta verrà ritornata una stringa in formato JSON contenente il relativo codice di errore. 18/47 ESTRAZIONE INTERAZIONI CORRETTE CAMPAGNA Questa API permette di recuperare le interazioni che si sono avute per una campagna interattiva. Restituisce i mittenti che hanno interagito correttamente, con i relativi timestamp di interazione. Pagina 19/47 http://api.mobspot.it/getInterazioni.php passando i seguenti parametri obbligatori: Parametro auth Descrizione Oggetto in formato JSON contenente le credenziali. si vogliono request recuperare le interazioni. Proprietà username Descrizione verify_code username = prova password = testing request = [{"id_campagna":"0123456789"}] verify_code = MD5(prova[{"id_campagna":"0123456789"}]testing) c89574133f69f6d734d6c69eb9e83865 re una singola proprietà: Proprietà Descrizione Identificativo univoco della campagna per la quale si intendono recuperare le id_campagna corrette. Non è possibile : http://api.mobspot.it/getInterazioni.php?auth={"username":"dddd","verify_code":"5b9b911b8c5 a4388459928704930c923"}&request={"id_campagna":"5555555555"} JSON contente un array di oggetti aventi le seguenti proprietà: Proprietà Descrizione -MM-DD HH timestamp contatto Pagina secondo Numero di cellulare (comprensivo di prefisso internazionale) che ha interagito correttamente alla campagna. In caso non sia presente alcuna interazione, verrà restituito il seguente esito: [] In caso siano presenti delle interazioni, verrà restituito un codice del tipo: [{"timestamp":"2014-06-23 09:15:00","contatto":"+393331122334"},{"timestamp":"2014-06-23 16:30:25","contatto":"+393456789012"},{"timestamp":"2014-06-24 18:26:55","contatto":"+393272727272"}] In caso la chiamata non sia corretta verrà ritornata una stringa in formato JSON contenente il relativo codice di errore. ESTRAZIONE CREDITI DISPONIBILI Questa API restituisce i crediti disponibili per un utente. http://api.mobspot.it/getCredito.php passando il seguente parametro obbligatorio: Parametro auth Descrizione Oggetto in formato JSON contenente le credenziali. Proprietà username verify_code Descrizione 20/47 : http://api.mobspot.it/getCredito.php?auth={"username":"3333","verify_code":"242c94cb2c7c5db 6e3e83c47a54c078e"} ormato JSON contente la seguente proprietà: Proprietà credito 21/47 Descrizione Esempio di esito ritornato {"credito":"50000"} ESTRAZIONE INFORMAZIONI UTENTE Questa API restituisce http://api.mobspot.it/getInfoUtente.php passando il seguente parametro obbligatorio: Parametro auth Descrizione Oggetto in formato JSON contenente le credenziali. Proprietà username verify_code Descrizione tramite la funzione php md5(). http://api.mobspot.it/getInfoUtente.php?auth={"username":"4444","verify_code":"a27aaf06f5c66 f3427ff02386225cdd0"} Pagina della chiamata e JSON contente le seguenti proprietà: Proprietà Nome Cognome Ragionesociale Piva CodFisc Indirizzo Cap Localita Comune Provincia Nazione Telefono Cellulare Fax Email Descrizione Pagina Partita Iva Nazione Esempio di esito ritornato: {"Nome":"Mario", "Cognome":"Rossi", "Ragionesociale":"Mario Rossi Snc", "Piva":"MRARSS50A01X000X", "CodFisc":"01234567890", "Indirizzo":"Piazza Duomo 1", "Cap":"20121", "Localita":"", "Comune":"Milano", "Provincia":"MI", "Nazione":"Italia", "Telefono":"020202", "Cellulare":"+393333333333", "Fax":"0288452170", "Email":"[email protected]"} ESTRAZIONE COSTO CAMPAGNA Questa API restituisce il costo in crediti di una campagna, fornendo in ingresso la numerosità desiderata e il tipo di campagna scelta. http://api.mobspot.it/getCostoCampagna.php passando i seguenti parametri obbligatori: Parametro auth request Descrizione Oggetto in formato JSON contenente le credenziali. Oggetto in formato JSON contenente la numerosità e il tipo di campagna che identificano la richiesta per la quale si vuole recuperare il costo. 22/47 Proprietà username Descrizione verify_code Pagina 23/47 username = prova password = testing request = {"numerosita":"5000", "tipocampagna":"1"} verify_code = MD5(prova{"numerosita":"5000", "tipocampagna":"1"}testing) ac1220eae95c70d97b028e69796e1435 Proprietà numerosita Descrizione Numerosità di sms che si vuole inviare. tipocampagna uuuu http://api.mobspot.it/getCapComune.php?auth={"username":"7777","verify_code":"02f6845fe45 415913f4b950a379c023d"}&request={"numerosita":"2000", "tipocampagna":"2"} JSON contente Proprietà costo : Descrizione Costo in crediti relativo alla numerosità e al tipo di campagna passati in ingresso alla funzione. Esempio di esito ritornato: {"costo":"1500"} In caso la chiamata non sia corretta verrà ritornata una stringa in formato JSON contenente il relativo codice di errore. ACCODAMENTO CAMPAGNA Con questa API è possibile accodare una campagna, specificando il target, il tipo di campagna, e altre informazioni necessarie. Pagina http://api.mobspot.it/setCampagna.php passando i seguenti parametri obbligatori: Parametro auth request Descrizione Oggetto in formato JSON contenente le credenziali. Array in formato JSON contenente le caratteristiche della campagna da accodare. Proprietà username Descrizione verify_code Proprietà Descrizione Array contenente la profilazione scelta e il tipo di campagna desiderato. campagna getNumerosita.php. datainvio testo numerosita -MMcampagna. Testo del messaggio della campagna da inviare. Il testo deve essere lungo al massimo 150 caratteri GSM, codificati un UTF8. Numerosità sms che si vuole inviare. Vi sono inoltre due proprietà che sono facoltative ma che diventano obbligatorie in base al tipo di campagna scelto. Le due proprietà sono: Proprietà mittente parolachiave Descrizione richieda una campagna a mittente personalizzato (impostando un id_prof 4 ). Il mittente deve essere una stringa numerica di massimo 16 caratteri (comprensiva di prefisso internazionale) o una stringa alfanumerica di massimo 11 caratteri (come da direttive dello standard GSM). La parola chiave deve essere di massimo 4 caratteri numerici oppure di massimo 10 caratteri alfabetici. Non è possibile utilizzare parole chiave alfanumeriche (sia caratteri alfabetici che cifre). Non sono ammessi spazi, punteggiatura o caratteri speciali. 24/47 Esempi corretti di parola chiave: Esempi di parola chiave corretta OK 150 CONFERMA SI Pagina 25/47 Infine vi sono 4 proprietà facoltative: Proprietà nome note hashtag Descrizione Stringa di massimo 50 caratteri che identifica il nome della campagna. massimo di 240 caratteri. Etichetta da associare alla campagna (si può associare lo stesso hashtag a più campagne) per facilitarne la vostra gestione interna (ad esempio impostandoli ca inseriscano più hashtag, è possibile separarli usando lo spazio. Esempi validi: #hashtest #ottobre #novembre2015 #primogruppo via autorizzazione da richiedere Il valore da inserire è una stringa di massimo 50 caratteri. cliente zione da richiedere ESEMPIO tutte Ovviamente la paro Utilizzando le API di recupero profilazioni e di numerosità, ha visto che sono disponibili 397145 oltre a 397145. Decide quindi di effettuare una campagna per 100000 contatti il giorno 31 luglio 2014. Ecco come strutturerà la sua richiesta: http://api.mobspot.it/setCampagna.php?auth={"username":"utentetest","verify_code":"069a697f a8c354f550d8bed3f5026d6d"}&request={"campagna":[{"id_prof":"1","values":["2"]},{"id_prof":"3"," values":["46","33"]},{"id_prof":"4","values":["2"]}],"datainvio":"2014-07-31","testo":"Cercasi segretaria per uffici di Milano e Roma. Rispondere OK per aderire alla ricerca!","numerosita":"100000","parolachiave":"OK"} profilazione e il tipo di campagna desiderata. Essendo una campagna interattiva, viene passato Pagina 26/47 sito Proprietà id Descrizione Identificativo univoco della campagna accodata. Esempio {"id":"123456789"} In caso la chiamata non sia corretta verrà ritornata una stringa in formato JSON contenente il relativo codice di errore. ESTRAZIONE RIEPILOGHI CAMPAGNE Con questa API è possibile estrarre il riepilogo delle campagne richieste. http://api.mobspot.it/getCampagne.php passando i seguenti parametri obbligatori: Parametro auth request Descrizione Oggetto in formato JSON contenente le credenziali. Array in formato JSON contenente le caratteristiche delle campagne da estrarre. Proprietà username Descrizione verify_code MD5 oggetto oggetto vuoto, se si vogliono estrarre tutte le campagne. Oppure contenere uno o più dei seguenti parametri facoltativi, per poter effettuare una ricerca mirata: Proprietà datainizio datafine statoid tipocampagna Descrizione Indicare la data minima (inclusiva) di invio delle campagne che si vogliono estrarre. Indicare la data massima (inclusiva) di invio delle campagne che si vogliono estrarre. Array contenente lo stato delle campagne che si vogliono estrarre. Rispecchia i valori restituiti dalla API getStatiCampagna.php Array contenente il tipo delle campagne che si vogliono estrarre. Rispecchia i valori 4 ESEMPIO 1: recupero di tutte le proprie campagne. http://api.mobspot.it/getCampagne.php?auth={"username":"abcdef","verify_code":"e9e4adc6fb 515d394abd18abdefadd43"}&request={} ESEMPIO 2: recupero di tutte le proprie campagne del 2013. http://api.mobspot.it/getCampagne.php?auth={"username":"abcdef","verify_code":"087de9d9e0 05f2940edc6094c96edfe5"}&request={"datainizio":"2013-01-01","datafine":"2013-12-31"} ESEMPIO 3: recupero di tutte le proprie campagne interattive. Le campagne interattive hanno values . http://api.mobspot.it/getCampagne.php?auth={"username":"abcdef","verify_code":"36d95abf5a aa3861cf139a81a461130c"}&request={"tipocampagna":"2"} ESEMPIO 4: recupero di tutte le proprie campagne di gennaio 2014 già concluse. Le campagne http://api.mobspot.it/getCampagne.php?auth={"username":"abcdef","verify_code":"deb0b7f454 d5fa1d274de8c414afa8ca"}&request={"datainizio":"2014-01-01","datafine":"2014-0131","statoid":"7"} In caso la chiamata sia corretta, verrà ritornato un array contenente le campagne che corrispondono alla ricerca effettuata. Per ogni campagna, verranno ritornate le seguenti proprietà: Pagina 27/47 Proprietà id datainvio Descrizione Identificativo univoco della campagna. -MMcampagna. Stato della campagna estratta. Rispecchia i valori restituiti dalla API getStatiCampagna.php Tipo della campagna estratta. Rispecchia i valori restituiti dalla API statoid tipocampagna Pagina 28/47 Ecco un esempio di risposta alla richiesta estrazione campagne di novembre 2013: [{"id":"123456","datainvio":"2013-1105","statoid":"7","tipocampagna":"0"},{"id":"7891011","datainvio":"2013-1112","statoid":"7","tipocampagna":"1"},{"id":"7891011","datainvio":"2013-1113","statoid":"7","tipocampagna":"0"},{"id":"12131415","datainvio":"2013-1127","statoid":"7","tipocampagna":"2"}] In caso la chiamata non sia corretta verrà ritornata una stringa in formato JSON contenente il relativo codice di errore. ESTRAZIONE DETTAGLIO CAMPAGNA Con questa API è possibile estrarre il dettaglio di una campagna. http://api.mobspot.it/getCampagna.php passando i seguenti parametri obbligatori: Parametro auth request Descrizione Oggetto in formato JSON contenente le credenziali. si vogliono recuperare tutte le informazioni. deve contenere le seguenti proprietà: Proprietà username verify_code Descrizione Proprietà id Descrizione Identificativo univoco della campagna. In caso la chiamata sia corretta, verrà ritornato un oggetto contenente le caratteristiche della campagna estratta. Verranno ritornate le seguenti caratteristiche: Proprietà id datainvio statoid campagna testo numerosita costo nome note cliente hashtag Pagina Descrizione Identificativo univoco della campagna. -MMStato della campagna estratta. Rispecchia i valori restituiti dalla API getStatiCampagna.php . getNumerosita.php. Testo del messaggio della campagna. Numerosità sms della campagna. Costo della campagna in crediti. Nome della campagna Note inserite per la campagna Cliente associato Lista di hashtag inseriti separati da uno spazio In base al tipo di campagna, possono essere ritornate anche le seguenti proprietà: Proprietà Descrizione mittente parolachiave Parola chiave per le interazioni. E ichiesta del tipo: http://api.mobspot.it/getCampagna.php?auth={"username":"qwerty","verify_code":"51e0ea823f 27e9e3e57b06c0bac29fd7"}&request={"id":"55555555"} La risposta potrebbe essere del tipo: {"id":"55555555","datainvio":"2014-0101","statoid":"7","campagna":[{"id_prof":"7","values":["10121","10122","10123","10124","10125","10 126","10127","10128","10129","10130","10131","10132","10133","10134","10135","10136","10137"," 10138","10139","10140","10141","10142","10143","10144","10145","10146","10147","10148","1014 9","10150","10151","10152","10153","10154","10155","10156"]},{"id_prof":"4","values":["1"]}],"testo": "Accorri al panificio BuonPane! Da oggi aperto anche al domenica in Piazza Centrale numero 1.","numerosita":"5000","costo":"7500","mittente":"Panificio"} 29/47 In caso la chiamata non sia corretta verrà ritornata una stringa in formato JSON contenente il relativo codice di errore. ELIMINAZIONE CAMPAGNA Con questa API è possibile eliminare una campagna. http://api.mobspot.it/delCampagna.php passando i seguenti parametri obbligatori: Parametro auth request Proprietà username Descrizione Oggetto in formato JSON contenente le credenziali. eliminare. Descrizione verify_code Proprietà id Descrizione Identificativo univoco della campagna che si vuole eliminare. eliminare le campagne che hanno se la loro data di invio è una data che, al momento della richiesta di eliminazione, è possibile scegliere come data di invio per una nuova campagna. ESEMPIO Oggi 1 gennaio 2014 il sistema (tramite le API getDateNegate.php e getDateMinMax.php) chiesto sia inviata in data venerdì 3 gennaio, la seconda in data martedì 7 gennaio, la terza in potrà eliminare solo le campagne del 7 e del 13 gennaio. Non potrà eliminare la campagna del 3 gennaio in quanto si è troppo in prossimità di Pagina 30/47 richiesta effettuata: Proprietà cancellazione Descrizione Pagina 31/47 http://api.mobspot.it/delCampagna.php?auth={"username":"zxcvbnm","verify_code":"95e94bfaff 17a51bc90622f89d048dfa"}&request={"id":"9876543210"} In caso la chiamata non sia corretta verrà ritornata una stringa in formato JSON contenente il relativo codice di errore. ESEMPIO Presentiamo ora un esempio che pensiamo possa essere utile per capire il meccanismo delle API, effettuare una campagna. Viene utilizzato il linguaggio php per gli esempi di codice riportati. Pagina 32/47 getInfoUtente.php $Username = "123utente"; $Password = "456password"; $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Password))); $UrlApi = "http://api.mobspot.it/getInfoUtente.php?auth=".urlencode($Aut); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "01. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "02. Errore json ritornato."; } if (empty($data->Nome)) {return "03. Utente non valido."; } Verificato di avere un account valido, estrae le profilazioni possibili. Vuole accodare una campagna standard (non a mittente personalizzato, e neanche interattiva) per qualsiasi contatto presente nel suo comune di residenza. Quindi cerca se tale tipo di campagna è attiva, e se può profilare per cap (in seguito cercherà i cap del suo comune). $UrlApi = "http://api.mobspot.it/getProfilazioni.php?auth=".urlencode($Aut); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "04. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "05. Errore json ritornato."; } Verifica poi se le profilazioni possibili soddisfano le sue richieste. $Flag_ControlloPossoProfilarePerCap = 0; $Id_Profilazioni_Cap = -1; $Flag_ControlloPossoProfilarePerCampagnaStandard = 0; $Id_Profilazioni_CampagnaStandard = -1; $Valore_Profilazioni_CampagnaStandard = -1; foreach ($data as $key_1 => $profilazioni) {if ($profilazioni->name == "Cap") {$Flag_ControlloPossoProfilarePerCap = 1; $Id_Profilazioni_Cap = $profilazioni->id_prof; } if ($profilazioni->name == "Tipo campagna") {foreach ($profilazioni->values as $key_2 => $valori) {if ($valori->value == "Mittente Standard") {$Flag_ControlloPossoProfilarePerCampagnaStandard = 1; $Id_Profilazioni_CampagnaStandard = $profilazioni->id_prof; $Valore_Profilazioni_CampagnaStandard = $valori->id_value; } } } } if (($Flag_ControlloPossoProfilarePerCap == 0) || ($Id_Profilazioni_Cap == -1)) {return "06. Errore profilazione Cap non disponibile."; } if (($Flag_ControlloPossoProfilarePerCampagnaStandard == 0) || ($Id_Profilazioni_CampagnaStandard == -1) || ($Valore_Profilazioni_CampagnaStandard == -1)) {return "07. Errore profilazione Campagna Mittente Standard non disponibile."; } estrarre i cap del suo comune. Richiama qui $ComuneDiResidenza = "Brescello"; $Req = json_encode(array("comune"=>$ComuneDiResidenza)); $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Req.$Password))); $UrlApi = "http://api.mobspot.it/getCapComune.php?auth=".urlencode($Aut)."&request=".urlencode($Req); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "08. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "09. Errore json ritornato."; } $Array_CapBrescello = array(); foreach ($data as $key_1 => $profilazioni) {if (strtoupper($profilazioni->comune) == strtoupper($ComuneDiResidenza)) {foreach ($profilazioni->cap as $key_2 => $cap) {$Array_CapBrescello[] = $cap; } } } if (count($Array_CapBrescello) < 1) {return "10. Nessun cap nel comune ricercato."; } Pagina 33/47 tutte le informazioni per estrarre la numerosità disponibile nel sistema, e sapere getNumerosita.php $Req = json_encode(array(array("id_prof"=>(string)$Id_Profilazioni_Cap, "values"=>$Array_CapBrescello), array("id_prof"=>(string)$Id_Profilazioni_CampagnaStandard, "values"=>$Valore_Profilazioni_CampagnaStandard))); $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Req.$Password))); $UrlApi = "http://api.mobspot.it/getNumerosita.php?auth=".urlencode($Aut)."&request=".urlencode($Req); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "11. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "12. Errore json ritornato."; } $Flag_ArrivoAllaNumerositaMinima = 0; foreach ($data as $key_1 => $numerosita) {// totale // id_tipocampagna // pacchetti -> personalizzato // pacchetti -> pacchetto if ($numerosita->totale > 0) {// Trovati $numerosita->totale contatti per campagna di tipo $numerosita->id_tipocampagna // Controllo se la numerosita' e' sufficiente $Array_PacchettiInviabili = $numerosita->pacchetti->pacchetto; if (count($Array_PacchettiInviabili) > 0) {$Flag_ArrivoAllaNumerositaMinima = 1; } } } Ipotiz vuole allargare il suo raggio di ricerca. E decide di estrarre i contatti attorno al suo comune di residenza in un raggio di 10 Km. Per prima cosa deve estrarre i cap Pagina 34/47 $Req = json_encode(array("cap"=>$Array_CapBrescello[0], "distanza"=>"10")); $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Req.$Password))); $UrlApi = "http://api.mobspot.it/getCapLimitrofi.php?auth=".urlencode($Aut)."&request=".urlencode($Req); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "13. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "14. Errore json ritornato."; } $Array_Cap10Km = $data->cap; if (count($Array_Cap10Km) < 1) {return "15. Nessun cap nei 10 km attorno al cap ".$Array_CapBrescello[0]."."; } $Req = json_encode(array(array("id_prof"=>(string)$Id_Profilazioni_Cap, "values"=>$Array_Cap10Km), array("id_prof"=>(string)$Id_Profilazioni_CampagnaStandard, "values"=>$Valore_Profilazioni_CampagnaStandard))); $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Req.$Password))); $UrlApi = "http://api.mobspot.it/getNumerosita.php?auth=".urlencode($Aut)."&request=".urlencode($Req); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "16. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data =7= NULL) {return "18. Errore json ritornato."; } Ora estrae tutti i pacchetti possibili, per poi verificare in base al suo credito quale è il pacchetto più grande che può utilizzare. $Array_PacchettiInviabili = array(); foreach ($data as $key_1 => $numerosita) {// totale // id_tipocampagna // pacchetti -> personalizzato // pacchetti -> pacchetto if ($numerosita->totale > 0) {// Trovati $numerosita->totale contatti per campagna di tipo $numerosita->id_tipocampagna // Controllo se la numerosita' e' sufficiente $Array_PacchettiInviabili = $numerosita->pacchetti->pacchetto; } } if (count($Array_PacchettiInviabili) < 1) {return "18. Non ho pacchetti inviabili per questa campagna."; } Pagina 35/47 Per verificare quale sia il pacchetto più grande che lui possa inviare, deve prima estrarsi il proprio getCredito.php $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Password))); $UrlApi = "http://api.mobspot.it/getCredito.php?auth=".urlencode($Aut); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "19. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "20. Errore json ritornato."; } if (empty($data->credito)) {return "21. Utente non valido o credito pari a zero."; } $CreditoDisponibile = $data->credito; $MassimaNumerositaInviabile = 0; for ($i=0;$i<count($Array_PacchettiInviabili);$i++) {$Req = json_encode(array("numerosita"=>$Array_PacchettiInviabili[$i], "tipocampagna"=>$Valore_Profilazioni_CampagnaStandard)); $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Req.$Password))); $UrlApi = "http://api.mobspot.it/getCostoCampagna.php?auth=".urlencode($Aut)."&request=".urlencode($Req); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "22. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "23. Errore json ritornato."; } if (!(isset($data->costo))) {return "24. Utente non valido."; } $CostoQuestaCampagna = $data->costo; if (($Array_PacchettiInviabili[$i] > $MassimaNumerositaInviabile) && ($CostoQuestaCampagna <= $CreditoDisponibile)) {$MassimaNumerositaInviabile = $Array_PacchettiInviabili[$i]; } } Pagina 36/47 Ora ha la numerosità massima disponibile che può utilizzare, in base ai contatti disponibili, alla tipologia di campagna scelta e al suo credito. Il prossimo passo è quello di verificare quale sia la prima data disponi getDateMinMax.php $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Password))); $UrlApi = "http://api.mobspot.it/getDateMinMax.php?auth=".urlencode($Aut); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "25. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "26. Errore json ritornato."; } if (empty($data->dataminima)) {return "27. Utente non valido."; } $PrimaDataDisponibile = $data->dataminima; Per sicurezza, controlla inoltre che la data non sia una data negata. Questo passaggio non sarebbe necessario, getDateMinMax.php volesse verificare prima una data che non è la prima disponibile. Richiama quindi getDateNegate.php quale sabato o domenica, lo script presentato cerca la prima data disponibile successiva. Pagina 37/47 $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Password))); $UrlApi = "http://api.mobspot.it/getDateNegate.php?auth=".urlencode($Aut); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "28. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "29. Errore json ritornato."; } if (!(empty($data->datenegate))) {$ArrayCopia = $data->datenegate; $ControlloDataNegata = 0; while ($ControlloDataNegata == 0) {if ((in_array($PrimaDataDisponibile, $ArrayCopia)) || (date('l', strtotime($PrimaDataDisponibile)) == "Saturday") || (date('l', strtotime($PrimaDataDisponibile)) == "Sunday")) {$PrimaDataDisponibile = date('Y-m-d', strtotime($PrimaDataDisponibile.' + 1 day')); } else {$ControlloDataNegata = 1; } } } $Req = json_encode(array("campagna"=>array(array("id_prof"=>(string)$Id_Profilazioni_Cap, "values"=>$Array_Cap10Km), array("id_prof"=>(string)$Id_Profilazioni_CampagnaStandard, "values"=>$Valore_Profilazioni_CampagnaStandard)), "datainvio"=>$PrimaDataDisponibile, "testo"=>"Accorrete numerosi al nuovo panificio Mario Rossi. Piazza della Vittoria 1.", "numerosita"=>$MassimaNumerositaInviabile)); $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Req.$Password))); $UrlApi = "http://api.mobspot.it/setCampagna.php?auth=".urlencode($Aut)."&request=".urlencode($Req); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "30. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "31. Errore json ritornato."; } if (!(isset($data->id))) {return "32. Errore connessione."; } $IdQuestaCampagna = $data->id; ltra per le campagne a Pagina 38/47 $Req = json_encode(array("tipocampagna"=>$Valore_Profilazioni_CampagnaStandard)); $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Req.$Password))); $UrlApi = "http://api.mobspot.it/getCampagne.php?auth=".urlencode($Aut)."&request=".urlencode($Req); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "33. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "34. Errore json ritornato."; } if (count($data) < 1) {return "35. Errore connessione."; } $Flag_HoTrovatoLaCampagnaCheAvevoAccodato = 0; foreach ($data as $key_1 => $riassuntocampagna) {if ($riassuntocampagna->id == $IdQuestaCampagna) {$Flag_HoTrovatoLaCampagnaCheAvevoAccodato = 1; } } if ($Flag_HoTrovatoLaCampagnaCheAvevoAccodato == 0) {return "36. Errore recupero campagna accodata."; } Dopo aver visto che la campagna è presente, ne estrae tutti i dettagli. Richiama la API $Req = json_encode(array("id"=>$IdQuestaCampagna)); $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Req.$Password))); $UrlApi = "http://api.mobspot.it/getCampagna.php?auth=".urlencode($Aut)."&request=".urlencode($Req); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "37. Errore connessione."; } $data = json_decode($data); if ($data === NULL) {return "38. Errore json ritornato."; } if (!(isset($data->id))) {return "39. Errore connessione."; } if ($data->id != $IdQuestaCampagna) {return "40. Errore recupero informazioni campagna."; } A questo punto ci ripensa e vuole cambiare tipologia di campagna. Vuole effettuare una campagna interattiva. Essendo ancora nei termini prestabiliti, decide di eliminare la campagna. Pagina 39/47 $Req = json_encode(array("id"=>$IdQuestaCampagna)); $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Req.$Password))); $UrlApi = "http://api.mobspot.it/delCampagna.php?auth=".urlencode($Aut)."&request=".urlencode($Req); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "41. Errore connessione."; } $data = json_decode($data); if ($data === NULL) {return "42. Errore json ritornato."; } if (!(isset($data->cancellazione))) {return "43. Errore cancellazione."; } if ($data->cancellazione != "OK") {return "44. Errore cancellazione."; } Dopo aver eliminato la campagna, controlla per sicurezza che gli siano stati restituiti i crediti. getCredito.php $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Password))); $UrlApi = "http://api.mobspot.it/getCredito.php?auth=".urlencode($Aut); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "45. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "46. Errore json ritornato."; } if (empty($data->credito)) {return "47. Utente non valido o credito pari a zero."; } $CreditoDisponibile = $data->credito; Ora vuole ricercare le numerosità per i cap limitrofi disponibili per una campagna interattiva. I cap limitrofi li conosce già, deve recuperare i parametri per le campagne interattive. Richiama getProfilazioni.php Pagina 40/47 $UrlApi = "http://api.mobspot.it/getProfilazioni.php?auth=".urlencode($Aut); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "48. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "49. Errore json ritornato."; } $Flag_ControlloPossoProfilarePerCampagnaInterattiva = 0; $Id_Profilazioni_CampagnaInterattiva = -1; $Valore_Profilazioni_CampagnaInterattiva = -1; foreach ($data as $key_1 => $profilazioni) {if ($profilazioni->name == "Tipo campagna") {foreach ($profilazioni->values as $key_2 => $valori) {if ($valori->value == "Interattiva") {$Flag_ControlloPossoProfilarePerCampagnaInterattiva = 1; $Id_Profilazioni_CampagnaInterattiva = $profilazioni->id_prof; $Valore_Profilazioni_CampagnaInterattiva = $valori->id_value; } } } } if (($Flag_ControlloPossoProfilarePerCampagnaInterattiva == 0) || ($Id_Profilazioni_CampagnaInterattiva == -1) || ($Valore_Profilazioni_CampagnaInterattiva == -1)) {return "50. Errore profilazione Campagna Interattiva non disponibile."; } getNumerosita.php interattive. $Req = json_encode(array(array("id_prof"=>(string)$Id_Profilazioni_Cap, "values"=>$Array_Cap10Km), array("id_prof"=>(string)$Id_Profilazioni_CampagnaInterattiva, "values"=>$Valore_Profilazioni_CampagnaInterattiva))); $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Req.$Password))); $UrlApi = "http://api.mobspot.it/getNumerosita.php?auth=".urlencode($Aut)."&request=".urlencode($Req); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "51. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "52. Errore json ritornato."; } Estrae i pacchetti disponibili e di seguito il pacchetto massimo che ha a disposizione. Pagina 41/47 $Array_PacchettiInviabili = array(); foreach ($data as $key_1 => $numerosita) {// totale // id_tipocampagna // pacchetti -> personalizzato // pacchetti -> pacchetto if ($numerosita->totale > 0) {// Trovati $numerosita->totale contatti per campagna di tipo $numerosita->id_tipocampagna // Controllo se la numerosita' e' sufficiente $Array_PacchettiInviabili = $numerosita->pacchetti->pacchetto; } } if (count($Array_PacchettiInviabili) < 1) {return "19. Non ho pacchetti inviabili per questa campagna."; } $MassimaNumerositaInviabile = 0; for ($i=0;$i<count($Array_PacchettiInviabili);$i++) {$Req = json_encode(array("numerosita"=>$Array_PacchettiInviabili[$i], "tipocampagna"=>$Valore_Profilazioni_CampagnaInterattiva)); $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Req.$Password))); $UrlApi = "http://api.mobspot.it/getCostoCampagna.php?auth=".urlencode($Aut)."&request=".urlencode($Req); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "53. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "54. Errore json ritornato."; } if (!(isset($data->costo))) {return "55. Utente non valido."; } $CostoQuestaCampagna = $data->costo; if (($Array_PacchettiInviabili[$i] > $MassimaNumerositaInviabile) && ($CostoQuestaCampagna <= $CreditoDisponibile_Nuovo)) {$MassimaNumerositaInviabile = $Array_PacchettiInviabili[$i]; } } if ($MassimaNumerositaInviabile == 0) {return "56. Nessun pacchetto inviabile."; } Accoda quindi una campagna per la profilazione scelta e la massima numerosità per lui Pagina 42/47 $Req = json_encode(array("campagna"=>array(array("id_prof"=>(string)$Id_Profilazioni_Cap, "values"=>$Array_Cap10Km), array("id_prof"=>(string)$Id_Profilazioni_CampagnaInterattiva, "values"=>$Valore_Profilazioni_CampagnaInterattiva)), "datainvio"=>$PrimaDataDisponibile, "testo"=>"Accorrete numerosi al panificio Rossi Piazza della Vittoria 1. Se rispondi OK, ricevi un omaggio.", "numerosita"=>$MassimaNumerositaInviabile, "parolachiave"=>"OK")); $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Req.$Password))); $UrlApi = "http://api.mobspot.it/setCampagna.php?auth=".urlencode($Aut)."&request=".urlencode($Req); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "57. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "58. Errore json ritornato."; } if (!(isset($data->id))) {return "59. Errore connessione."; } $IdQuestaCampagna = $data->id; A questo punto, per estrarre le interazioni che arriveranno a seguito Pagina 43/47 $NomeFileManlevaLocale = "FileManlevaTest.pdf"; $PuntatoreFile = fopen($NomeFileManlevaLocale, "r"); if (!$PuntatoreFile) {return "60. Errore file."; } $RecuperoByteFile = fread($PuntatoreFile,filesize($NomeFileManlevaLocale)); fclose($PuntatoreFile); $CodifcaBase64 = base64_encode($RecuperoByteFile); $Req = json_encode(array("id_campagna"=>$IdQuestaCampagna,"file_manleva"=>$CodifcaBase64)); $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Req.$Password))); $UrlApi = "http://api.mobspot.it/setManleva.php"; $data_request=array(); if ($Aut != NULL) {$data_request["auth"]=$Aut; } if ($Req != NULL) {$data_request["request"]=$Req; } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_request); $data = curl_exec($ch); if (curl_errno($ch)) {return "61. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "62. Errore json ritornato."; } if (!(isset($data->esitocaricamento))) {return "63. Errore caricamento file manleva."; } if ($data->esitocaricamento != "OK") {return "64. Errore caricamento file manleva."; } Ora deve attendere che la manleva sia approvata dal sistema. Questo è un controllo che viene getStatoManleva.php. $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Req.$Password))); $UrlApi = "http://api.mobspot.it/getStatoManleva.php?auth=".urlencode($Aut)."&request=".urlencode($Req); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "65. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "66. Errore json ritornato."; } if ($data->statomanleva != "3") {return "67. Errore accettazione manleva."; } Pagina 44/47 Ora che la manleva è stata accettata, no rimane altro da fare che attendere la data di invio della campagna. E recuperare le interazioni corrette. Questa operazione si esegue combinando le API getStatoManleva.php (vista in precedenza) e getInterazioni.php. Pagina if ($data->statomanleva->ok > 0) {// Le estraggo $Req = json_encode(array("id_campagna"=>$IdQuestaCampagna)); $Aut = json_encode(array("username"=>$Username, "verify_code"=>md5($Username.$Req.$Password))); $UrlApi = "http://api.mobspot.it/getInterazioni.php?auth=".urlencode($Aut)."&request=".urlencode($Req); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $UrlApi); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); if (curl_errno($ch)) {return "68. Errore connessione."; } curl_close($ch); $data = json_decode($data); if ($data === NULL) {return "69. Errore json ritornato."; } if (count($data) < 1) {return "70. Errore interazioni."; } else {foreach ($data as $key_1 => $interazione) {echo "Ricevuta interazione da ".($interazione->contatto)." (il ".($interazione->timestamp).")\n"; } } } else {echo "Ancora nessuna interazione ricevuta.\n"; } 45/47 TABELLA DEI CODICI DI ERRORE Codice di errore 1000 1001 1002 1003-1 1003-2 1003-3 1003-4 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019-1 1019-2 1019-3 1020 1021 1022 1023 1024 1026 1027 1028 1029 1030 1036 1037 1038 1039 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 Descrizione Errore generico Proprietà di autenticazione assenti Utente non riconosciuto o proprietà di autenticazione errate Utente non riconosciuto o proprietà di autenticazione errate Utente non riconosciuto o proprietà di autenticazione errate Utente non riconosciuto o proprietà di autenticazione errate Profilazione non valida Valori di profilazione non formattati correttamente Valori di profilazione non validi Cap inesistente Comune non valido: minimo 2 caratteri necessari Campagna non trovata Tipo di campagna mancante Data di invio non valida Numerosità scelta non valida Caratteri nel testo non validi Mittente mancante o non valido Parola chiave mancante o non valida Credito non sufficiente Errore accodamento campagna Errore accodamento campagna Errore accodamento campagna Impossibile caricare un file di manleva Campagna non cancellabile File di manleva troppo grande Errore caricamento file Valori di ricerca non validi Costo non valido Costo non trovato Importo della ricarica non valido Valore per il pacchetto non valido Profilazione da escludere non trovata Valore del permesso per il tipo di campagna non valido Tipo di campagna non trovato o non accessibile Permesso già assegnato Id della comunicazione non valido Testo impostato non valido. Manleva non eliminabile Manleva non trovata Cliente non valido Hashtag non valido Note non valide Pagina 46/47 1051 Nome campagna non valido Pagina 47/47