Semplice Libreria PHP Unofficial Client per invio singoli SMS tramite API del servizio timsmsprofessional.it
Libreria NON ufficiale liberamente creata, non sussite nessun collegamento con la compagnia TIM
https://timsmsprofessional.it è un servizio a pagamento della compagnia telefonica italiana TIM
- Invio di singoli SMS utilizzando le API di timsmsprofessional.it
- Ricerca del messaggio inviato per recuperare lo stato di effettiva consegna
- Inserita una funzione per il controllo e la formattazione del numero telefonico prima dell'invio con controllo che rientri nei di prefissi telefonici attribuiti al servizio mobile italiano alla data del 01/12/2021
- PHP 5.6+
- PHP Curl extension
- apimatic/unirest-php: 2.0+
Per installare con Composer aggiungere iw5edv/tim-sms-professional-client al tuo composer.json file:
{
"require": {
"iw5edv/tim-sms-professional-client"
}
}oppure eseguendo il seguente comando:
composer require iw5edv/tim-sms-professional-clientConfigurare i dati personali username, password, token e alias
modificando il file /src/TimSmsProfessionalClient.php
.....
private $username = ' ';
private $password = ' ';
private $token = ' ';
private $alias = ' '; //numero completo da dove inviare i messaggi o Alias Certificato caricato sul proprio profilo
.....Oppure instanzia l'oggetto con il costruct passando i dati
$client = new iw5edv\TimSmsProfessionalClient([
'username' => ' ',
'password' => ' ',
'token' => ' ',
'alias' => ' '
]);$client = new iw5edv\TimSmsProfessionalClient;
$to = '+391234567890';
$text = 'Prova';
$result = $client->InvioSms($to, $text);
echo '<pre>'; print_r($result); echo '</pre>';oppure utilizzando la sola funzione senza instanziare l'oggetto
$to = '+391234567890';
$text = 'Prova';
$result = \iw5edv\TimSmsProfessionalClient::InvioSms($to, $text)
echo '<pre>'; print_r($result); echo '</pre>';oppure passando anche i parametri di connessione
$client = new iw5edv\TimSmsProfessionalClient([
'username' => ' ',
'password' => ' ',
'token' => ' ',
'alias' => ' '
]);
$to = '+391234567890';
$text = 'Prova';
$result = $client->InvioSms($to, $text);
echo '<pre>'; print_r($result); echo '</pre>';Per le caratteristiche della risposta vedere la libreria https://github.com/apimatic/unirest-php
Alla ricezione di una risposta Unirest restituisce il risultato sotto forma di Object
code- HTTP Response Status Code (Example200)raw_body- Un-parsed response bodybody- Parsed response body where applicable, for example JSON responses are parsed to Objects / Associative Arrays.headers- HTTP Response Headers
$result->code; // HTTP Status code
$result->raw_body; // Unparsed body
$result->body; // Parsed body
$result->headers; // Headersun esempio di Object di risposta ad un corretto invio di messaggio
Unirest\Response Object
(
[code] => 200
[raw_body] => {"name":"INVIOMESSAGGI","status":"OK","message":"Presa in carico della campagna andata a buon fine CODE:########"}
[body] => stdClass Object
(
[name] => INVIOMESSAGGI
[status] => OK
[message] => Presa in carico della campagna andata a buon fine CODE:########
)
[headers] => Array
(
[0] => HTTP/1.1 200
[Date] => Thu, 23 Dec 2021 22:10:22 GMT
[Server] => nginx/1.14.1
[Content-Type] => application/json
[X-ORACLE-DMS-RID] => 0
[X-ORACLE-DMS-ECID] =>
[X-SMB-ID] =>
[Cache-Control] => max-age=1
[Expires] => Thu, 23 Dec 2021 22:10:22 GMT
[Vary] => User-Agent
[Transfer-Encoding] => chunked
)
)
Per controllare la risposta e quindi se l'operazione è andata a bun fine possiamo usare la funzione getStatus() che restituisce un valore boleano true o false
Esempio
if ($client->getStatus()) {
// OK
} else {
// ERRORE
}Per la ricerca dell'SMS è necessario recuperare ID della campagna al momento dell'invio.
Per questo è stata inserita la funzione getCode()
Un esempio di codice per recuperare ID dalla risposta dell'invio
// dopo aver inviato il messaggio
$code = $client->getCode();
echo $code;$code = '00000000'; //id campagna precedentemente recuperato
$result = \iw5edv\TimSmsProfessionalClient::cercaSms($code);
echo '<pre>'; print_r($result); echo '</pre>';Dopo aver effettuato la ricerca possiamo avvalerci delle funzioni getEsitoBol() o getEsitoStr() per verificare se l'SMS è stato ricevuto dal terminale
- La funzione
getEsitoBol()restituisce un valore Boleanotrueofalse - La funzione
getEsitoStr()restituisce un valore StringaRicevutoNon RicevutoERRORE
-
Controllo del numero telefonico secondo gli standar ITALIANI
-
Formattazione nella forma giusta per invio sms
+39 3123456789- inizio numero con prefisso internazionale +39
- controllo che rientri in un dei prefissi assegnati in Italia al 01/12/2021
- controlla la formalità del numero 10 cifre
- ammette i numeri a 9 cifre controllando che faccia parte dei prefissi assegnati
Esempio di utilizzo per il solo controllo
$to = '+391234567890'; //numero da testare
if($to_format = \iw5edv\TimSmsProfessionalClient::formatNumeroIta($to)){
echo 'Numero Corretto ';
echo $to_format;
} else {
echo 'Numero Errato';
}