1. Il Servizio 2. Protocollo SMS-Server 3. Protocollo HTTP Post e Get
Transcript
1. Il Servizio 2. Protocollo SMS-Server 3. Protocollo HTTP Post e Get
1. Il Servizio 2. Protocollo SMS-Server 3. Protocollo HTTP Post e Get 3.1) Invio di SMS di testo 3.2) Invio di SMS con testo in formato UNICODE UCS-2 3.3) Simulazione di un invio 3.4) Possibili risposte dalla pagina ASP 4. Protocollo SMPP 5. Servizio Web .ASMX 6. Utilizzo delle DLL 7. Caratteri Supportati 8. Servizi Aggiuntivi 8.1) Monitoraggio 8.2) Controllo Credito 9. Ricezione delivery report Page 1/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 1. Il Servizio Questo servizio permette ai clienti di inviare SMS via web. Per poterlo utilizzare è necessario un collegamento ad Internet. La soluzione per spedire i messaggi può essere tarata sulle specifiche esigenze del cliente. Si offrono infatti le seguenti possibilità per spedire i propri messaggi: – – – – – Protocollo proprietario SMS-Server su Tcp/IP Protocollo HTTP Post o Get Protocollo SMPP Servizio web ASMX DLL Win32 o DLL .NET I metodi sono complementari. E’ infatti possibile, con un solo account, usufruire di tutti i metodi. L’esempio più indicativo è quello di un’azienda che utilizza il protocollo SMS-Server per spedire grandi quantità di SMS (ad esempio per la comunicazione con i clienti), e che vuole aggiungere alla propria home page la possibilità di inviare SMS (utilizzando il metodo POST). Il protocollo SMS-Server è consigliato per gli utenti che hanno conoscenze di sviluppo software e vogliono integrare il servizio SMS nelle proprie applicazioni. L'invio tramite protocollo HTTP Post, HTTP Get sono generalmente utilizzati per invii da siti web. In questo caso non è necessario installare alcun software, poiché il trasferimento dei messaggi avviene utilizzando lo standard HTTP. E’ una soluzione adeguata per il cliente che ha necessità di spedire discrete quantità di messaggi in modo semplice e veloce. Le DLL e il servizio web ASMX possono essere facilmente integrate ed utilizzate negli ambienti di sviluppo più comuni dando la possibilità di aggiungere con poche righe di codice la funzionalità di invio SMS ai propri software. Page 2/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 2. PROTOCOLLO SMS SERVER Il protocollo SMS-Server è un protocollo proprietario basato sullo standard Tcp-IP. Per inviare uno o più sms basta aprire un’unica connessione, spedire tutto il pacchetto di messaggi ed eventualmente disconnettersi dal server se non si desiderano spedire altri pacchetti di SMS. Non bisogna quindi aprire una connessione per ogni messaggio da inviare. Per ogni connessione basta un record login. Con questo metodo si possono inviare messaggi in Streaming. E’ possibile inviare al massimo 120 SMS alla volta con un’unica operazione di invio La connessione può essere mantenuta aperta semplicemente inviando ogni 2-3 minuti il segnale di “Keep Alive”, cioè la stringa di login. Connessione via TCP/IP HOST: smsserver.agiletelecom.com PORT: 26 Protocollo SMSServer Ogni pacchetto “DATA” da inviare dovrà essere trasmesso nel seguente modo: DA SPEDIRE= 0Bh + DATA + CHECKSUM + 03h Dove 0Bh = 1 byte che indica inizio pacchetto 03h = 1 byte che indica fine pacchetto CHECKSUM = valore ascii (in decimale) delle due cifre meno significative del checksum esadecimale (2 byte) DATA = pacchetto di dati da inviare Page 3/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 PRIMA FASE: LOGIN APPENA STABILITA LA CONNESSIONE VIA SOCKET CON IL SERVER DI AGILE INVIARE IL PROPRIO LOGIN: DATA=06h USER 04h PASSWORD 04h DA SPEDIRE= 0Bh + DATA + CHECKSUM + 03h 06h = 1 byte indica RECORD LOGIN 04h = 1 byte SEPARATORE DI CAMPI SI RICEVERA’ LA RISPOSTA: +OK xxxxx (dove xxxxxx è il credito residuo dell’account, espresso in millesimi di Euro. 1000 millesimi = 1 Euro) SECONDA FASE: INVIO DI MESSAGGI (DA RIPETERE PER OGNI PACCHETTO DI SMS DA INVIARE) Per spedire 1 o più SMS via TCP/IP: DATA=05h + NUMBER + 04h + SENDER + 04h + TEXT + 04h + FLASH + 04h + FILENAME + 04h + GATEWAY + 04h + ParametroRiservato + 04h + ParametroRiservato + 04h + DELIVERYCODE + 04h (+ 09h + DELAYEDDELIVERY** + 09h) **Il valore DELAYEDDELIVERY ed I separatori 09h sono opzionali nel caso non si voglia utilizzare questa funzinalità) dove NUMBER SENDER TEXT FLASH FILENAME destinatario in formato internazionale (es. +393282382832) nome o numero del mittente (es. “Rossi”) testo del messaggio (Max. 160 caratteri, es.“Buongiorno a tutti”) N (messaggio non in formato flash) o F (messaggio in formato flash) nome del pacchetto spedito con relativa estensione (specifica il tipo di SMSTEXT esempio .SMS, .UNI o .FLH) .SMS per un messaggio testuale standard (default) .FLH per un sms testuale flash .UNI per un sms con testo in Unicode 1 byte numerico. Specifica la qualità del messaggio GATEWAY H=qualità alta (default) M=qualità media codice univoco che l’utente deve specificare per la ricezione del delivery report DELIVERYCODE (se non specificato non viene richiesto il delivery report) (Alfanumerico, MAX 20 caratteri, es 09012512525405) è consigliato generare il codice in base al giorno/ora corrente DELAYEDDELIVERY Campo facoltativo utilizzato per specificare l'ora alla quale inviare I messaggi programmati. Il formato della variabile sarà il seguente: “DDT” + YYYYMMDDHHNNSS dove: “DDT” è una stringa costante, YYYY=anno, MM=mese, DD=giorno, HH=ore, NN=minuti, SS=secondi tutti I valori fanno riferimento alla data/ora in formato 24h e GMT+1 (orario Italiano). È obbligatorio specificare la cifra “0” nel caso uno dei valori abbia una cifra sola. es.: invio alle ore 15:03:01 del giorno 22/03/2009 --> DDT20090322150301 DA SPEDIRE= 0Bh + DATA + CHECKSUM + 03h SI RICEVERA’ LA RISPOSTA: +OK xxxxx (dove xxxxxx è il credito residuo dell’account, espresso in millesimi di Euro. 1000 = 1 Euro) 1-a) PER SPEDIRE SMS MULTIPLI CON TESTO E/O MITTENTE DIVERSO (senza richiesta di delivery report): DATA=05h + NUMBER + 04h + SENDER + 04h + TEXT + 04h + FLASH + 04h + FILENAME + 04h + GATEWAY + 04h + 04h + 04h + 04h DATA=DATA + 05h + NUMBER + 04h + SENDER + 04h + TEXT + 04h + FLASH + 04h + FILENAME + 04h + GATEWAY + 04h + 04h + 04h + 04h DATA=DATA + 05h + NUMBER + 04h + SENDER + 04h + TEXT + 04h + FLASH + 04h + FILENAME + 04h + GATEWAY + 04h + 04h + 04h + 04h DA SPEDIRE= 0Bh + DATA + CHECKSUM + 03h SI RICEVERA’ LA RISPOSTA: +OK xxxxx (dove xxxxxx è il credito residuo dell’account, espresso in millesimi di Euro. 1000 = 1 Euro) Page 4/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 1-b) PER SPEDIRE SMS MULTIPLI CON TESTO E/O MITTENTE DIVERSO (con richiesta di delivery report): DATA=05h + NUMBER + 04h + SENDER + 04h + TEXT + 04h + FLASH + 04h + FILENAME + 04h + GATEWAY + 04h + 04h + 04h + DELIVERYCODE + 04h DATA=DATA + 05h + NUMBER + 04h + SENDER + 04h + TEXT + 04h + FLASH + 04h + FILENAME + 04h + GATEWAY + 04h + 04h + 04h + DELIVERYCODE + 04h DATA=DATA + 05h + NUMBER + 04h + SENDER + 04h + TEXT + 04h + FLASH + 04h + FILENAME + 04h + GATEWAY + 04h + 04h + 04h + DELIVERYCODE + 04h DA SPEDIRE= 0Bh + DATA + CHECKSUM + 03h SI RICEVERA’ LA RISPOSTA: +OK xxxxx (dove xxxxxx è il credito residuo dell’account, espresso in millesimi di Euro. 1000 = 1 Euro) 2-a) PER SPEDIRE SMS MULTIPLI CON LO STESSO TESTO E MITTENTE (senza richiesta di delivery report): DATA=05h + NUMBER + 04h + SENDER + 04h + TEXT + 04h + FLASH + 04h + FILENAME + 04h + GATEWAY + 04h + 04h + 04h + 04h DATA=DATA + 07h + NUMBER DATA=DATA + 07h + NUMBER DA SPEDIRE= 0Bh + DATA + CHECKSUM + 03h SI RICEVERA’ LA RISPOSTA: +OK xxxxx (dove xxxxxx è il credito residuo dell’account, espresso in millesimi di Euro. 1000 = 1 Euro) 2-b) PER SPEDIRE SMS MULTIPLI CON LO STESSO TESTO E MITTENTE (con richiesta di delivery report): DATA=05h + NUMBER + 04h + SENDER + 04h + TEXT + 04h + FLASH + 04h + FILENAME + 04h + GATEWAY + 04h + 04h + 04h + DELIVERYCODE + 04h DATA=DATA + 07h + NUMBER + 08h + DELIVERYCODE DATA=DATA + 07h + NUMBER + 08h + DELIVERYCODE (ogni delivery code va posto dopo il numero di telefono separandoli con il carattere ascii numero 8 chr(8) ) DA SPEDIRE= 0Bh + DATA + CHECKSUM + 03h SI RICEVERA’ LA RISPOSTA: +OK xxxxx (dove xxxxxx è il credito residuo dell’account, espresso in millesimi di Euro. 1000 = 1 Euro) --------------------------------------------N.B.: PER OGNI DATO INVIATO TRAMITE TCP/IP AGGIUNGERE DA SPEDIRE= 0Bh + DATA + CHECKSUM + 03h CHECKSUM= VALORE ASCII (IN DECIMALE) DELLE DUE CIFRE MENO SIGNIFICATIVE DEL CHECKSUM ESADECIMALE (2 byte) EXAMPLE: 06h 31h 43h 57h 63h 31h 31h 31h 31h = 1F8h (somma esadecimale) F in ascii = 70 8 in ascii = 56 CHECKSUM= 70 56 Esempio di s/w in VB che gestisce il protocollo ‘FUNZIONE CHE SERVE PER INCAPSULARE I DATI Private Function SUPPORTO(ByVal dati As String) As String Dim i As Long Dim SUM As Long ‘CALCOLO CHECKSUM i=1 SUM = 0 Do While i <= Len(dati) SUM = SUM + Asc(Mid(dati, i, 1)) i=i+1 Loop SUPPORTO = Chr(11) & dati & Right(Hex(SUM), 2) & Chr(3) End Function Page 5/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 ‘FUNZIONE PER IL LOGIN AL SERVER Private Function LOGGAMI(ByVal USER As String, ByVal PSWD As String) As String LOGGAMI = Chr(6) & USER & Chr(4) & PSWD & Chr(4) End Function ‘FUNZIONE CHE CREA UN NUOVO SMS Private Function CREASMS(MOBILENUMBER As String, ByVal MITTENTE As String, ByVal TESTO As String, ByVal FLASH As String, ByVal NOMEFILE As String, ByVal GATEWAY As Integer) As String CREASMS = Chr(5) & MOBILENUMBER & Chr(4) & MITTENTE & Chr(4) & TESTO & Chr(4) & FLASH & Chr(4) & NOMEFILE & Chr(4) & GATEWAY & Chr(4) End Function Private Sub SPEDISCISMS Dim DaSpedire as String DaSpedire = SUPPORTO(CREASMS(“+39328123465”,”MioMitt”,”Prova test”,”N”,”prova.sms”,”H”)) ‘ Ora la stringa “DaSpedire” deve essere inviata tramite una connessione TCP/IP di un socket End Sub Esempio di listato PHP che gestisce il protocollo <?php $debug = 1; set_time_limit(0); $GATEWAY = H; # Possibili valori: H (default) per qualità alta o M per qualità media $host = "smsserver.agiletelecom.com"; $port = 26; $userid = "test"; //username $passwd = "test"; //password function SendSMS($text,$dest,$sender) { global $conn; $str = wrap(msg($text,$dest,$sender,"myfile.sms")); fputs($conn,$str); $str = fgets($conn,128); return $str." - ".$errno." - ".$errstr; } function SendSMSDelayed($text,$dest,$sender,$deliverycode,$delaydelivery) { global $conn; $str = wrap(msgDelayed($text,$dest,$sender,"myfile.sms",$deliverycode,$delaydelivery)); fputs($conn,$str); $str = fgets($conn,128); return $str." - ".$errno." - ".$errstr; } function xConnect() { global $host,$port,$conn; $conn = fsockopen ($host, $port, $errno, $errstr, 10); if (!$conn) { echo "Error happend on ($host:$port): $errstr ($errno)<br>\n"; return 0; } $str = wrap(pwd()); if($debug) { print "$str<br>\n"; } fputs($conn,$str); if($debug) { print "<br>After pwd: ".fgets($conn,128)."<br>\n"; } return $conn; } function xDisconnect() { global $conn; fclose($conn); } function wrap($data) Page 6/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 { $chk = 0; $len = strlen($data); for($i=0;$i<$len;$i++) { $chk+=ord(substr($data,$i,1)); } $chk = sprintf("%02X",$chk%256); return "\x0B$data$chk\x03"; } # $POSSIBILI VALORI: # file.sms # file.uni # file.flh function msg($text,$dest,$sender,$TYPE) { global $GATEWAY; return "\x05$dest\x04$sender\x04$text\x04N\x04$TYPE\x04$GATEWAY\x04"; } function msgDelayed($text,$dest,$sender,$TYPE,$DELIVERYCODE,$DELAYDELIVERY) { global $GATEWAY; return "\x05$dest\x04$sender\x04$text\x04N\x04$TYPE\x04$GATEWAY\x04\x04\x04$DELIVERYCODE\x04\x09$DELAYDELIVERY\x09"; } function pwd() { global $userid,$passwd; return "\x06$userid\x04$passwd\x04"; } ?> <?php //insert the following instruction in the web page where you have to perform the sms sending //array of phone numbers $numberSms=array("+11111111111","+11111111111","+11111111111","+11111111111"); //sms text $txt_sms="Text of the message"; //sender name $sender="MITTENTE"; //delivery code (only for SendSMSDelayed function) $deliverycode=date("YmdHns").rand(0,99999); //it allows to send delayed sms (only for SendSMSDelayed function) - it's necessary to write always day and month with 2 digits. Example: hour 15:03:01 day 22/03/2009 --> DDT20090322150301 $delaydelivery="DDTyyyymmddhhmmss"; //Example: to be delivered in date 2012/12/31 at 23:59:40 you have to set it to: DDT20121231235940 //Send sms if(xConnect()) //if connected { //Send an sms to all numbers of array "numberSms" while(list ($key, $val) = each($numberSms)) { $msg = SendSMS($txt_sms,$val,$sender); if (strstr($msg,'+Ok')) echo "Sms sent<BR>"; else echo "Sms not sended. $msg<BR>"; } xDisconnect(); } else { echo "Failed: Could not connect - $errno - $errstr "; } //Send delayed sms /*if(xConnect()) //if connected { //Send a delayed sms to all numbers of array "numberSms" while(list ($key, $val) = each($numberSms)) { $msg = SendSMSDelayed($txt_sms,$val,$sender,$deliverycode,$delaydelivery); Page 7/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 if (strstr($msg,'+Ok')) echo "Sms sent<BR>"; else echo "Sms not sended. $msg<BR>"; } xDisconnect(); } else { echo "Failed: Could not connect - $errno - $errstr "; }*/ ?> Page 8/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 3. PROTOCOLLO HTTP POST E GET Per inviare SMS via post basta spedire una richiesta HTTP POST al seguente indirizzo http://post.agiletelecom.com/smshurricane3.0.asp o una richiesta HTTP GET al seguente indirizzo http://post.agiletelecom.com/smshurricaneGET3.0.asp Per entrambi I metodi è necessario specificare I valori delle seguenti variabili: smsTEXT max 640 char, testo del messaggio (160 caratteri se è un sms singolo; 153 caratteri per ogni sms in caso di long message) smsNUMBER max 16 caratteri, numero telefonico dell’utenza di destinazione in formato internazionale, +393294938957 E’ possibile mettere fino a 100 numeri di destinazione in formato internazionale separato da “;” smsSENDER max 16 cifre per il numero telefonico del mittente in formato internazionale oppure max 11 caratteri per una stringa di testo alfanumerico smsGATEWAY Indica il tipo di qualità da utilizzare per l'invio del messaggio (H = qualità alta, M = qualità media) (Campo opzionale, se non specificato sarà usata la qualità alta) smsTYPE tipo del messaggio file.sms per spedire SMS standard di testo file.flh per spedire SMS FLASH di testo file.uni per spedire SMS di testo in formato UNICODE smsUSER l’user del vostro account smsPASSWORD la password del vostro account smsDELIVERY campo facoltativo usato per identificare univocamente il messaggio nel caso in cui si voglia richiedere la notifica di ricezione del messaggio smsDELAYED Campo facoltativo utilizzato per specificare l'ora alla quale inviare I messaggi programmati. Il formato della variabile sarà il seguente: YYYYMMDDHHNNSS dove: YYYY=anno, MM=mese, DD=giorno, HH=ore, NN=minuti, SS=secondi tutti I valori fanno riferimento alla data/ora in formato 24h e GMT+1 (orario Italiano). È obbligatorio specificare la cifra “0” nel caso uno dei valori abbia una cifra sola. es.: invio alle ore 15:03:01 del giorno 22/03/2009 --> 20090322150301 La pagina smshurricane.asp darà conferma dell’avvenuto trasferimento del messaggio. 3.1 Invio di SMS di testo I parametri essenziali per l'invio di sms di tipo testo sono: smsUSER, smsPASSWORD, smsNUMBER, smsTEXT. Ecco un esempio di richiesta POST: POST /smshurricane3.0.asp HTTP/1.1 Host: post.agiletelecom.com Content-Length: 129 Connection: Keep-Alive Content-type: application/x-www-form-urlencoded Accept-Language: it Cache-Control: no-cache smsUSER=USER&smsPASSWORD=PASSWORD&smsNUMBER=%2B393381234567&smsSENDER=test&smsTEXT=ciao%20come %20va&smsGATEWAY=H&smsTYPE=file.sms&smsDELIVERY=20080601_A1 Page 9/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 Risposta da SMSHurricane3.0.asp ****************************************** HTTP/1.1 100 Continue Server: SMSDriver POST/1.0 Date: mar, 08 apr 2008 11:28:41 GMT HTTP/1.1 200 OK Server: SMSDriver POST/1.0 Date: mar, 08 apr 2008 11:28:41 GMT Content-Length: 136 Content-Type: text/html Set-Cookie: ASPSESSIONIDACCSTDCT=MDKLNEGAJIIHAMFJIDBLNBIM; path=/ Cache-control: private <html> <head> <title>smsgateway</title> </head> <body bgcolor="#ffffff"> +Ok 1466298 </body> </html> Ecco un esempio di richiesta GET: GET /smshurricaneGET3.0.asp?smsUSER=USER&smsPASSWORD=PASSWORD&smsNUMBER=%2B393381234567&smsSENDER=test&smsTEXT=ciao %20come%20va&smsGATEWAY=H&smsTYPE=file.sms&smsDELIVERY=20080601_A1 HTTP/1.1 Host: post.agiletelecom.com Content-Length: 0 Connection: Keep-Alive Content-type: application/x-www-form-urlencoded Accept-Language: it Cache-Control: no-cache Risposta da SMSHurricaneGET3.0.asp ****************************************** HTTP/1.1 100 Continue Server: SMSDriver POST/1.0 Date: ven, 18 apr 2008 17:06:51 GMT HTTP/1.1 200 OK Server: SMSDriver POST/1.0 Date: ven, 18 apr 2008 17:06:51 GMT Content-Length: 113 Content-Type: text/html Set-Cookie: ASPSESSIONIDACCSTDCT=MDKLNEGAJIIHAMFJIDBLNBIM; path=/ Cache-control: private <html> <head> <title>smsgateway</title> </head> <body bgcolor="#ffffff"> +Ok 1463212 </body> </html> Page 10/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 3.2 Invio di SMS con testo in formato UNICODE UCS-2 Unicode è uno standard che attribuisce un numero univoco ad ogni carattere, indipendentemente dalla piattaforma, dall'applicativo, dalla lingua. Costituisce l'implementazione ufficiale dello standard internazionale ISO/IEC 10646 – UCS-2. Utilizzando questo formato con un sistema di messaggistica via SMS si ha la possibilità di spedire, verso i cellulari compatibili, caratteri diversi da quelli presenti nell’alfabeto latino standard. E’ possibile trovare maggiori informazioni sullo standard Unicode al sito http://www.unicode.org mentre le tabelle dei caratteri Unicode si trovano su http://www.unicode.org/charts/ Per inviare un messaggio utilizzando caratteri Unicode bisogna spedire i seguenti dati: smsNUMBER numero del destinatario (max 16 cifre, numero telefonico dell’utenza di destinazione in formato internazionale,+393294938957) smsSENDER max 16 cifre per il numero telefonico del mittente in formato internazionale oppure max 11 caratteri per una stringa di testo (NON IN FORMATO UNICODE) smsTEXT esadecimale dei caratteri unicode da spedire (senza spazi tra essi) (max 280 caratteri, 70 visualizzati sul cellulare) smsUSER il proprio user name smsPASSWORD la propria password smsGATEWAY Indica il tipo di qualità da utilizzare per l'invio del messaggio (H = qualità alta, M = qualità media) (Campo opzionale, se non specificato sarà usata la qualità alta) smsTYPE file.uni smsDELIVERY campo facoltativo usato per identificare univocamente il messaggio nel caso in cui si voglia chiedere la notifica di ricezione. Nel testo unicode 4 caratteri corrispondono a 2 byte in formato esadecimale. Esempio: Per spedire utilizzando caratteri Unicode la parola “Ciao” si dovrà immettere campo smsTESTO la seguente stringa: 004300690061006F Seguendo la tabella dei caratteri Unicode (Basic Latin) , infatti 0043 = C 0069 = I 0061 = a 006F = o 3.3 Simulazione di un invio Inviando un SMS e ponendo come destinatario "+11111111" il messaggio non viene spedito ma viene fatta una simulazione d’invio. Il programma in pratica controlla la corretta sintassi del messaggio e comunica all'utente il risultato della simulazione. Le simulazioni non vengono contate come messaggi inviati, quindi non sono addebitate all'utente. Dim SIMULAZIONE as Boolean If SIMULAZIONE = False Then DESTINATARIO = Numero Else DESTINATARIO = "+1111111111" End If Page 11/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 3.4 Possibili risposte dalla pagina ASP Risposta dalla pagina ASP Nessuna risposta +Ok xxxxx -Err 001 -Err 002 -Err 004 -Err 005 -Err 006 -Err 007 -Err 008 -Err 009 -Err 011 -Err 012 -Err 013 -Err 090 Significato Timeout/Indirizzo errato/Server Down Messaggio accettato, il credito in millesimi di Euro è xxxxx User e/o password incorretti Crediti esauriti Numero destin. non corretto Parametro smsNUMBER mancante Parametro smsTEXT mancante Messaggio non abilitato Errore del server nell'accettazione del messaggio Client time-out Parametro smsUser mancante Parametro smsPassword mancante Parametro smsNumber mancante Troppe sessioni attive 4. Protocollo SMPP Lo standard SMPP è un protocollo sviluppato appositamente per l'invio di SMS tramite connessioni Tcp-Ip. Per utilizzarlo è necessario sviluppare un software che gestisca una connessione di tipo “transmitter” in modalità sincrona. I parametri per la connessione sono I seguenti: – – Host smpp.agiletelecom.com Modalità Transmitter modalità sincrona Porta 7000 System Id User name della vostra registrazione Password Password della vostra registrazione TON 1 NPI 1 DCS 0 Per mantenere apera la connessione inviare un Enquire_Link ogni 60 secondi. Il numero del destinatario va specificato senza il “+” o lo “00” iniziale (es. +39338123456 diventa 39338123456) Per ulteriori informazioni sul metodo SMPP fate riferimento alla documentazione disponibile al link http://resources.agiletelecom.com/Updates/SMPPv34.pdf Page 12/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 5. Servizio Web .ASMX L' ASMX permette di integrare al proprio progetto funzioni di invio SMS attraverso un web service. Utilizzando il servizio web all'indirizzo http://www.agiletelecom.com/services/agiletelecomsms.asmx si potranno includere all'interno del proprio software le seguenti funzioni in modo facile e veloce – – – – Ask_Credit Send_Message Send_Message_Unicode Send_Message_on_Gate Ask_Credit: permette di richiedere il credito residuo nel proprio account specificando user e password: Ask_Credit (string User, string Password) Nome Parametro Tipo di Dato Descrizione User Stringa Nome utente del proprio account Password Stringa Password del proprio account Send_Message: è utilizzato per inviare l'SMS semplicemente specificando i dati dell'utente e del messaggio da inviare: Send_Message (string User, string Password, string Originator, string Destinations, string Message, boolean HighQualitySMS, string DeliveryCode) Nome Parametro Tipo di Dato Descrizione User Stringa Nome utente del proprio account Password Stringa Password del proprio account Originator Stringa Nome o numero che verrà visualizzato come mittente del messaggio Destinations Stringa Numero di cellulare del destinatatio Message Stringa Testo del messaggio HighQualitySMS Boolean Indica la qualità di spedizione dell'sms. Se il parametro è impostato a “true” si seleziona l'alta qualità, altrimenti la media qualità. DeliveryRequestCode Stringa Codice che identifica univocamente il messaggio necessario solo se si neccessita della notifica di ricezione. (*) (*) Nota: Per poter ricevere la notifica di ricezione è necessario creare una pagina web in grado di accettare un post dal server Agile Telecom. (Vedere capitolo 9). Page 13/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 Send_Message_Unicode: è utilizzato per inviare l'SMS in formato Unicode specificando i dati dell'utente e del messaggio da inviare: Send_Message_Unicode (string User, string Password, string Originator, string Destinations, string Message, boolean HighQualitySMS, string DeliveryCode) Nome Parametro Tipo di Dato Descrizione User Stringa Nome utente del proprio account Password Stringa Password del proprio account Originator Stringa Nome o numero che verrà visualizzato come mittente del messaggio Destinations Stringa Numero di cellulare del destinatatio Message Stringa Testo del messaggio HighQualitySMS Boolean Indica la qualità di spedizione dell'sms. Se il parametro è impostato a “true” si seleziona l'alta qualità, altrimenti la media qualità. DeliveryCode Codice che identifica univocamente il messaggio necessario solo se si neccessita della notifica di ricezione. (*) Stringa (*) Nota: Per poter ricevere la notifica di ricezione è necessario creare una pagina web in grado di accettare un post dal server Agile Telecom. (Vedere capitolo 9). Send_Message_on_Gate: Funzione ad uso esclusivo per chi ha esigenze specifiche, utilizzabile solamente previo accordo con il reparto tecnico di Agile Telecom. string Send_Message_on_Gate (string User, string Password, string Originator, string Destinations, string Message, Gateway, string DeliveryCode) Nome Parametro Tipo di Dato Descrizione User Stringa Nome utente del proprio account Password Stringa Password del proprio account Originator Stringa Nome o numero che verrà visualizzato come mittente del messaggio Destinations Stringa Numero di cellulare del destinatatio Message Stringa Testo del messaggio Gateway Stringa Indica il Gateway da usare per inviare il messaggio DeliveryCode Stringa Codice che identifica univocamente il messaggio necessario solo se si neccessita della notifica di ricezione.(*) (*) Nota: Per poter ricevere la notifica di ricezione è necessario creare una pagina web in grado di accettare un post dal server Agile Telecom. (Vedere capitolo 9). Page 14/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 Per le funzioni Send_Message, Send_Message_Unicode e Send_Message_on_Gate il server restituisce le seguenti risposte: Risposta dalla pagina ASP Nessuna risposta +Ok xxxxx -Err 001 -Err 002 -Err 004 -Err 005 -Err 006 -Err 007 -Err 008 -Err 009 -Err 011 -Err 012 -Err 013 -Err 090 Significato Timeout/Indirizzo errato/Server Down Messaggio accettato, il credito in millesimi di Euro è xxxxx User e/o password incorretti Crediti esauriti Numero destinatario non corretto Parametro smsNUMBER mancante Parametro smsTEXT mancante Messaggio non abilitato Errore generico a lato server durante l'invio del messagio Time-out del client User non specificato Password non specificata Numero del destinatario non specificato Troppe sessioni attive Esempio in c# Nota: E' necessario aggiungere all'applicazione un Web Reference contenente l'url “http://www.agiletelecom.com/services/AgileTelecomSMS.asmx”. File Form.cs using AgileEsempio.com.agiletelecom.www; namespace AgileEsempio { public partial class Form1 : Form { AgileTelecomSMS SMS = new AgileTelecomSMS(); private void Form_Load(object sender, EventArgs e){ } private void buttonGetCredit_Click(object sender, EventArgs e) { labelCredit.Text = SMS.Ask_Credit(textBoxUser.Text, textBoxPassword.Text); } private void buttonSendSMS_Click(object sender, EventArgs e) { labelResponse.Text = SMS.Send_Message(textBoxUser.Text, textBoxPassword.Text, textBoxSender.Text, textBoxDestination.Text, textBoxBody.Text, true, DeliveryCode); } } } Page 15/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 6. Utilizzo delle DLL Tramite la nostra DLL è possibile inviare SMS utilizzanto il metodo Http-Post ad un massimo di 100 numeri di destinazione con una sola richiesta e utilizzando un metodo veloce e semplice. Una volta inclusa la DLL nel progetto basterà dichiarare una variabile di tipo “SMSDriverLib” come nell’esempio di VB: Esempio: Dim POST As New SmsDriverLib Una volta dichiarata la variabile si devono impostare i parametri per l’invio: user name, password e indirizzo della pagina ASP. Esempio: POST.smsUSER = txtUser.Text POST.smsPASSWORD = txtPassword.Text POST.URL = “http://post.agiletelecom.com/smshurricane3.0.asp” In seguito si devono inserire i numeri di destinazione del messaggio. Questo semplice procedimento va ripetuto per ogni destinatario sino ad un massimo di 100 (N.B.: si possono aggiungere anche numeri di test come +111111111) Esempio: POST.Add_Gsm(“+1111111111”) Ogni volta che si richiama questo metodo esso restituisce un valore di tipo Boolean (vero o falso) a seconda che l’inserimento sia andato a buon fine o no . Infine si richiama il metodo “Send_SMS” che invierà la richiesta post alla pagina ASP. Il metodo restituisce un valore di tipo stringa contenente la risposta della pagina ASP o un eventuale errore della DLL (vedi tabella seguente e tabella delle risposte della pagina ASP al paragrafo 3.7). I parametri di questo metodo sono in ordine -Timeout (in secondi) -Mittente del messaggio -Testo del messaggio -Numero del gateway (H = Qualità alta, M = Qualità media) -Tipo di SMS (smsType) -Network code -Delivery code Ecco un esempio sempre in V.B. di come poter richiamare il metodo: POST.Send_Sms(10, “Prova”,”SMS di prova da DLL”, “0”, "file.sms", "") Risposta dalla pagina ASP Nessuna risposta +Ok xxxxx -Err 101 -Err 102 -Err 103 -Err 104 -Err 105 -Err 106 Significato Timeout/Indirizzo errato/Server Down Messaggio accettato, il credito in millesimi d’Euro è xxxxx Nessun destinatario Network code non corretto URL non corretto HOST non corretto Pagina non trovata Errore generico con relativa descrizione Page 16/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 7. Caratteri Supportati Di seguito trovate la tabella dei caratteri supportati dal nostro sistema SMS. Non tutti i gateway riescono però a supportare tutti i caratteri della seguente tabella. Si consiglia quindi di testare prima i caratteri diversi dalle lettere e dalle cifre col gateway che si intende utilizzare. Per inviare un sms standard contenente caratteri greci nel testo utilizzando i gateway che li supportano, è necessario sostituire il carattere stesso con un “carattere speciale” che, al momento dell’invio verso il cellulare, verrà convertito nel corrispondente carattere greco. Lettera Greca Nome Lettera Greca Carattere da Spedire Γ Λ Θ Ξ Π Σ Φ Ψ Ω Δ Gamma Ã Ë È ï Ð Ó á â Ù ã Lambda Theta Xi Pi Sigma Phi (Fi) Psi Omega Delta Valore Ascii Decimale del carattere da spedire 195 Valore Ascii Esadecimale del carattere da spedire 0xC3 203 0xCB 200 0xC8 239 0xEF 208 0xD0 211 0xD3 225 0xE1 226 0xE2 217 0xD9 227 0xE3 Page 17/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 8. Servizi Aggiuntivi 8.1) Monitoraggio Il servizio di monitoraggio è uno strumento utile per il controllo dello stato attuale del servizio. E' possibile visualizzare direttamente dalla nostra home page lo stato effettivo dei test. Ogni ora circa viene controllato e verificato l'intero ciclo, dalla spedizione alla effettiva ricezione degli SMS. Questo sistema di monitoraggio permette velocemente di avere un'idea generale dello stato del servizio, oltre che fare risparmiare l'intero costo del messaggio testando il funzionamento di esso da parte dell'utente finale. E' possibile anche verificare lo stato del servizio, senza navigare manualmente nel sito, tramite una semplice chiamata HTTP, che ritornerà un HTML facilmente interpretabile. Per controllare automaticamente bisogna richiamare il seguente link: http://www.agiletelecom.com/gatecheck/check.aspx Lo script accetta parametri come QueryString dove: P = prefisso internazionale C = nome del carrier che appare nella HOME PAGE www.agiletelecom.com Ecco alcuni esempi di come poter utilizzare questo servizio: Per controllare lo stato del servizio verso tutti gli operatori Italiani http://www.agiletelecom.com/gatecheck/check.aspx?P=+39 Per controllare lo stato del servizio verso Italia TIM http://www.agiletelecom.com/gatecheck/check.aspx?P=+39&C=TIM 8.2) Controllo Credito Il servizio di controllo credito permette di richiedere in qualsiasi momento ed in modo gratuito il credito residuo del proprio account tramite una semplice richiesta HTTP-GET al seguente indirizzo: http://www.agiletelecom.com/credit.aspx I parametri da passare alla pagina asp sono i seguenti: smsUSER = Nome utente del proprio account smsPASSWORD = Password del proprio account ad esempio http://www.agiletelecom.com/credit.aspx?smsUSER=MioUtente&smsPASSWORD=MiaPassword Si riceverà una risposta del tipo Risposta dalla pagina ASP Nessuna risposta +Ok xxxxx -Err 001 Significato Timeout/Indirizzo errato/Server Down Messaggio accettato, il credito in millesimi di Euro è xxxxx User e/o password incorretti Page 18/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1 9. Ricezione delivery report Le notifiche di ricezione dei messaggi possono essere ricevute tramite metodo post a condizione di avere una pagina web in grado di accettare un post (dal server Agile Telecom) con i seguenti parametri: • ID_SMS • DELIVERY_STATUS • DELIVERY_DATETIME • DESTINATION ID_SMS l'invio è il codice scelto dall'utente che identifica univocamente il messaggio e che deve essere stato specificato durante tramite il parametro smsDELIVERY. DELIVERY_STATUS è lo stato finale del messaggio che indica se il messaggio è stato ricevuto dal destinatario e potrà avere i seguenti valori: VALORE RICEVUTO SIGNIFICATO DESCRIZIONE 0 UNKNOWN L'SMSC non ha ancora fornito lo status del messaggio. 2 REJECTED L'SMSC ha rifiutato il messaggio. 3 DELIVERED L'SMSC ha consegnato correttamente il messaggio al destinatario finale. 4 EXPIRED L'SMSC non è riuscito a consegnare il messaggio nel tempo disponibile. 6 UNDELIVERABLE L'SMSC non è in grado di consegnare il messaggio. DELIVERY_DATETIME indica la data e ora nel seguente formato “YYYYMMDDHHNNSS” relativa allo status del messaggio. DESTINATION indica il destinatario del messaggio Ad ogni post inviato dal nostro server il client dovrà rispondere con una stringa contenente “+OK” in modo che il delivery venga archiviato dal nostro server e non venga notificato ulteriormente. Una volta ricevuti i dati il cliente dovrà memorizzarli in base alle proprie esigenze, ad esempio salvandoli su un database. L'indirizzo URL della pagina va impostato nella sezione “dettagli” dell'area clienti nel sito www.agiletelecom.com Page 19/19 Copyright © 1998-2013 Agile Telecom S.p.A., All Rights Reserved - Author’s email [email protected] - Last update 14/06/2013)– v6.0.1
Documenti analoghi
Clicca QUI per le API di configurazione
Si ha la possibilità di utilizzare un numero condiviso. In questo caso la distinzione
dei vari fruitori, sarà effettuata attraverso l'assegnazione di uno share-code (codice
di condivisione) univoco...