Newsgroup: it.comp.www.php
Titolo: [OT] SMS Gateway

Salve e scusate l'OT,
potreste consigliarmi dei Gateway SMS, gratuiti o a pagament, al quale
interfacciarmi con PHP preferibilmente tramite protocollo HTTPS?
-- 
"So, I never went back to work for Lieutenant Dan.
Though he did take care of my Bubba-Gump money.
He got me invested in some kind of fruit company"

 
cerca tal 
sms.profuso.com
è molto professionale e preparato.
-- 
Che cosa volete che vi dica? Ero che convinto che il supporto 
dell'Hard disk fosse ottico e non magnetico. Se usa il laser un 
masterizzatore non vedevo proprio perchè non lo usasse un hard 
disk.
Sathia Musso isn't responsible for anything

 
hanno i prezzi un'po' alti ma credo che se ne acquisti piu' di 1000 inizi ad
avere una certa convenienza (hai anche una ricevuta di ritorno gia' pagata
per ogni mex)..
http://www.info-me-sms.it/
il servizio a volte e' lento e se vuoi gestire tu gli invii devi costruirti
tu uno script decente poiche' loro non lo forniscono (se scegli loro ti
posso postare una classe che ho scritto per automatizzare al meglio gli
invii) naturalmente il prezzo e' molto conveniente..
http://www.smsbasic.com
altri servizi sms puoi trovarli con 
http://www.google.it
-- 
www.iuz-lab.info

 
http://www.smsbasic.com
grazie ad entrambi per i suggerimenti, avevo gia' valutato l'offerta di
SMSDriver e volevo avere altri termini di paragone.


 interfacciarmi con PHP preferibilmente tramite protocollo HTTPS?
http://www.smsmarket.it

 meglio gli invii) naturalmente il prezzo e' molto conveniente..
potresti postare la classe ?
mi interesserebbe 

kast wrote:

ti ricordo che dovrebbe funzionare solo per smsBasic..
purtroppo non e' documentata ed a dire la verita' non mi ricordo di averla
completamente testata..
cmq se hai domande dimmi pure..
paga attenzione alle righe lunghe spezzate dal posting..
class smsSender{
  var $connectionLink, $host, $port, $userName, $passWord, $sentSms = 0,
$smsLimitPerConnection = 30, $errorCode = array();
  function connect($host){
    list($host, $port) = split(':', $host, 2);
    $this->connectionLink = @fsockopen($this->host = $host, $this->port =
$port, &$errno, &$errstr, 5);
    if(is_resource($this->connectionLink)){
      return TRUE;
    }
    $this->setError(1);
    return FALSE;
  }
  function disconnect(){
    if(@fclose($this->connectionLink)){
      return TRUE;
    }
    $this->setError(2);
    return FALSE;
  }
  function login($userName, $passWord){
    if(($userName = trim($userName)) == '' || ($passWord = trim($passWord))
== ''){
      $this->setError(4);
      return FALSE;
    }
    $loginString = $this->wrap("\x06" . $this->userName = $userName .
"\x04" . $this->passWord = $passWord . "\x04");
    if(@fputs($this->connectionLink, $loginString) !== FALSE){
      return TRUE;
    }
    $this->setError(3);
    return FALSE;
  }
  function shortMessageSend($to, $from, $message, $gateWay = 0, $flash =
'N', $type = '.sms'){
    if($this->sentSms >= $this->smsLimitPerConnection && 
$this->reconnect()){
      $this->setError(6);
      return FALSE;
    }
    if(@fputs($this->connectionLink,
$this->wrap("\x05$to\x04$from\x04$message\x04$flash\x04$type\x04$gateWay\x04")) !==
FALSE){
      $this->sentSms++;
      $returnString = @fgets($this->connectionLink, 128);
        if(preg_match('/^\-ERR/', $returnString)){
          $this->setError(8);
          return FALSE;
        }
      return $returnString;
    }
    $this->setError(7);
    $this->setError(6);
    return FALSE;
  }
  function reconnect(){
    $this->sentSms = 0;
    if($this->disconnect() && $this->connect($this->host . ':' .
$this->port) && $this->login($this->userName, $this->passWord)){
      return TRUE;
    }
    $this->setError(5);
    return FALSE;
  }
  function wrap($string = ''){
    for($i = $checkSum = 0; isset($string[$i]); $i++)
      $checkSum += ord($string[$i]);
    return "\x0B$string" . sprintf('%02X',$checkSum%256) . "\x03";
  }
  function setError($errorCode){
    $this->errorCode[] = $errorCode;
  }
  function smsError($preFix = '', $postFix = '<br />'){
    while($currentError = array_pop($this->errorCode)){
      switch($currentError){
        case '1': echo "$preFix 1: Unable to connect $postFix"; break;
        case '2': echo "$preFix 2: Unable to disconnect $postFix"; break;
        case '3': echo "$preFix 3: Unable to send login $postFix"; break;
        case '4': echo "$preFix 4: Blank User or Pass $postFix"; break;
        case '5': echo "$preFix 5: Error occured while reconnecting
$postFix"; break;
        case '6': echo "$preFix 6: Unable to send sms $postFix"; break;
        case '7': echo "$preFix 7: Unable to send sms through connection
$postFix"; break;
        case '8': echo "$preFix 8: Error occured while trying to send sms
(probably bad User or Pass) $postFix"; break;
        case 'default': echo "$preFix $currentError: Unknown error occured
$postFix"; break;
      }
    }
  }
}
-- 
www.iuz-lab.info

>> al meglio gli invii) naturalmente il prezzo e' molto conveniente..
scusate mi intrometto ma sciversi un GW è complicato? potreste darmi qualche 
info ?
solo a titolo di curisosità... grazie ciao 

yag wrote:

ho scritto quel codice quasi un anno fa' e poi l'ho abbandonato per
disinteresse..
cmq l'avevo scritto per integrare anche l'invio multiplo (vedi specifiche
protocollo 
www.smsbasic.com
)..
scrivere un GW sarebbe stato anche piu' semplice, in quel modo ho integrato
meglio le funzionalita' del servizio da loro offerto (a parte l'invio di
loghi che non mi e' mai interessato)..
-- 
www.iuz-lab.info


mi spieghi come funziona ? e dove posso documentarmi un overview generale 
dei metodi (non in termini di classe) ... se puoi
---

 ---
io non credo che altri provider sms abbiano le stesse specifiche di
smsbasic, esistono molti provider con servizi integrati in modo molto
differente..
cmq..
http://www.smsbasic.com/download/manualeSmsBasic.zip
allora rileggendo la classe a grandi linee..
connect(string host) accetta una stringa del tipo ip:port e cerca di
effettuare la connessione se non riesce aggiunge ad un array il codice di
errore relativo..
disconnect() effettua la disconnessione e se fallisce aggiunge al solito
array il codice relativo di errore..
login(string user, string pass) controlla che user a pass esistano, prepara
la stringa di login e la invia per ogni errore ritorna e setta l'errore
come sopra..
shortMessageSend(string to, string from, string message, int gateway, string
flash, string type) to, from, message sono ovvi.. gateway e' il gateway
desiderato per l'invio (tim, omnitel, etc) 0 indica che la scelta viene
lasciata al server sms, flash puo' essere N||F ed indica se il messaggio
deve essere di tipo flash oppure no, type indica il tipo di messaggio
(sms).. per ogni errore ritorna e setta l'errore come sopra..
visto che si puo' inviare piu' messaggi con una sola connessione ma con un
limite massimo si tiene il conto dei messaggi inviati raggiunto il quale si
reseta tale valore e si effettua una riconnessione..
reconnect() puoi immaginare..
wrap(string data) prepara una stringa per l'invio secondo le specifiche
richieste da smsbasic..
setError(int error) aggiunge in coda un codice di errore..
smsError(string prefix, string postfix) stampa tutti gli errori riscontrati
durante le perazioni aggiungendo ad ogni stringa errore una stringa
prefissa ed una postfissa..
-- 
www.iuz-lab.info

"iuz" <us...@host.network> ha scritto nel messaggio 
news:rHM9e.1269210$35.46...@news4.tin.it...

Ti ringrazio per la disponibilitŕ ma avevo anche precisato non in termini di 
classse (rileggere)
MI interessavano le tecniche che si usano piů o meno
grazie ciao

 grazie ciao
lo so' ma come detto non le ho mai documentate.. cercando di rimediare in
extremis..
-- 
www.iuz-lab.info

 interfacciarmi con PHP preferibilmente tramite protocollo HTTPS?
www.netfunitalia.it
l'ho usato per più di un cliente e va benone.
1000 sms costano circa 100 euro.
per l'invio sms puoi scegliere di farlo via software
o via post (io uso questo, tramite un mio script che usa le cURL).
ciao
raenkrus