Comunidad de diseño web y desarrollo en internet online

WebSMS

Citar            
MensajeEscrito el 28 Jul 2011 06:27 pm
Hola a todos

Me gustaria poder incorporar un servicio de websms en una web. Es un servicio que ya se ha pagado a la empresa Arsys pero tengo un problema a la hora de poder meter el codigo.

Ellos, me han mandado el siguiente archivo:

Código PHP :

<?php 
// V3.0 Incluye remite y Eventos programados
// V3.1 Corrige unos warnings
class HTTP_Client 
{ 
   var $host; 
   var $port; 
   var $socket; 
   var $errno; 
   var $errstr; 
   var $timeout; 
   var $buf; 
   var $result; 
   var $post_data; 
   var $path = "/"; 
   var $agent_name = "ArsysRequestAgent";

   //Constructor, timeout 30s 
   function HTTP_Client($host, $port, $timeout = 30) 
   { 
      $this->host = $host; 
      $this->port = $port; 
      $this->timeout = $timeout; 
   } 

   //Opens a connection 
   function connect() 
   { 
      $this->socket = fsockopen($this->host, 
      $this->port, 
      $this->errno, 
      $this->errstr, 
      $this->timeout 
      ); 
      if(!$this->socket) {
         return false; 
      }
      else {
         return true;
      }
   } 

   //Set the path 
   function set_path($path) 
   { 
      $this->path = $path; 
   } 

   //Send request and clean up 
   function send_request() 
   { 
      if(!$this->connect()) 
      { 
         return -1;
      } 
      else 
      { 
         $this->result = $this->request($this->post_data); 
         return $this->result; 
      } 
   } 

   function request($post_data) 
   { 
      $this->buf = ""; 
      fwrite($this->socket, 
      "GET $this->path HTTP/1.0\r\n". 
      "Host:$this->host\r\n". 
      "User-Agent: $this->agent_name\r\n". 
      "Content-Type: application/xml\r\n". 
      "Content-Length: ".strlen($post_data). 
      "\r\n". 
      "\r\n".$post_data.
      "\r\n" 
      ); 

      while(!feof($this->socket)) 
      $this->buf .= fgets($this->socket, 2048);
      $this->close(); 
      $resultado = preg_replace("/[^<]*/", "", $this->buf,1);
      if (!$resultado) {return -1;}
       else {return $resultado;}
   } 
   
   function close() 
   { 
      fclose($this->socket); 
   } 
}

define ("periodUnica",1);
define ("periodDiaria",2);
define ("periodSemanal",3);
define ("periodMensual",4);
define ("periodAnual",5);


class smsItem {

   var $phone_number ="";
   var $text_sms     ="";

   var $id           =-1;
   var $pwd          ="";

   var $from          ="";
   var $descriptionEP ="";
   var $dateEP       ="";
   var $timeEP       ="";
   var $periodEP       ="";
   var $credit       ="";


   var $url          ="";
   var $smsReferer   ="";
   var $smsHost      ="";

   var $smsResult      ="";
   var $smsDescription ="";
   var $smsCredit        ="";
   var $smsIdEnvio        ="";
   var $smsEstado = "";
   var $smsListado = "";
   var $fechaini = "";
   var $fechafin = "";

   var $server = "sms.arsys.es"; 
   var $port = "8080";
   var $servletSend = "/smsarsys/accion/enviarSms2.jsp";
   var $servletProgram = "/smsarsys/accion/ProgramarSmsEP.jsp";
   var $servletEstado = "/smsarsys/accion/estadoSms.jsp";
   var $servletListado = "/smsarsys/accion/listadoSms.jsp";


   function smsItem(){}

   function getAccount(){return $this->id;}
   function setAccount($id_value){$this->id=$id_value;}

   function getPwd(){return $this->pwd;}
   function setPwd($pwd_value){$this->pwd=$pwd_value;}

   function getTo(){return $this->phone_number;}
   function setTo($phone_number_value){$this->phone_number=$phone_number_value;}

   function getText(){return $this->text_sms;}
   function setText($text_sms_value){$this->text_sms=$text_sms_value;}

   function getReferer(){return $this->smsReferer;}
   function setReferer($referer_value){$this->smsReferer=$referer_value;}

   function getHost(){return $this->smsHost;}
   function setHost($host_value){$this->smsHost=$host_value;}

   function getFrom(){return $this->from;}
   function setFrom($from_value){$this->from=$from_value;}

   function getDescriptionEP(){return $this->descriptionEP;}
   function setDescriptionEP($descriptionEP_value){$this->descriptionEP=$descriptionEP_value;}

   function getDateEP(){return $this->dateEP;}
   function setDateEP($dateEP_value){$this->dateEP=$dateEP_value;}

   function getTimeEP(){return $this->timeEP;}
   function setTimeEP($timeEP_value){$this->timeEP=$timeEP_value;}

   function getPeriodEP(){return $this->periodEP;}
   function setPeriodEP($periodEP_value){$this->periodEP=$periodEP_value;}
   
   function setIdEnvio($idenvio_value){$this->idenvio=$idenvio_value;}
   
   function setFechaIni($fechaini_value){$this->fechaini=$fechaini_value;}
   function setFechaFin($fechafin_value){$this->fechafin=$fechafin_value;}

   function getResult(){return $this->smsResult;}
   function getDescription(){return  $this->smsDescription;}
   function getCredit(){return  $this->smsCredit;}
   function getEstado(){return  $this->smsEstado;}
   function getIdEnvio(){return  $this->smsIdEnvio;}
   function getListado(){return  $this->smsListado;}

   
   function Send() {
      $param="?id=".$this->id.
         "&phoneNumber=".$this->phone_number.
         "&psw=".$this->pwd.
         "&textSms=".urlencode($this->text_sms)
         ;

         if (($this->from) != "")
             $param.="&remite=".urlencode($this->from);

         $url = $this->servletSend.$param;
         $httpclient = new HTTP_Client($this->server,$this->port, $timeout = 30);
         $httpclient->path = $url;
         $resultado = $httpclient->send_request();

         if($resultado == -1)
         {
            $this->smsResult="KO";
            $this->smsDescription="Error de conexión al servidor SMS";
         }
         else
          {
            $simple = $resultado;
            // Decodifico el resultado
            $p = xml_parser_create();
            $skipWhite = xml_parser_set_option ($p,XML_OPTION_SKIP_WHITE,1); 
            xml_parse_into_struct($p,$simple,$vals,$index);
            xml_parser_free($p);
   
            $auxResult = $index['RESULT'][0];
            $estadoResult = $vals[$auxResult]['value'];
   
            $auxDescription = $index['DESCRIPTION'][0];
            $estadoDescription = $vals[$auxDescription]['value'];

            $auxCredito = $index['CREDIT'][0];
            $estadoCredito = $vals[$auxCredito]['value'];
   
            $this->smsResult=$estadoResult;
            $this->smsDescription=$estadoDescription;
            $this->smsCredit=$estadoCredito;
         }
         return $resultado;
   }
   
   function SendWState() {
      $param="?id=".$this->id.
         "&phoneNumber=".$this->phone_number.
         "&psw=".$this->pwd.
         "&textSms=".urlencode($this->text_sms)
         ;

         if (($this->from) != "")
             $param.="&remite=".urlencode($this->from);

         $url = $this->servletSend.$param;
         $httpclient = new HTTP_Client($this->server,$this->port, $timeout = 30);
         $httpclient->path = $url;
         $resultado = $httpclient->send_request();

         if($resultado == -1)
         {
            $this->smsResult="KO";
            $this->smsDescription="Error de conexión al servidor SMS";
         }
         else
          {
            $simple = $resultado;
            // Decodifico el resultado
            $p = xml_parser_create();
            $skipWhite = xml_parser_set_option ($p,XML_OPTION_SKIP_WHITE,1); 
            xml_parse_into_struct($p,$simple,$vals,$index);
            xml_parser_free($p);
   
            $auxResult = $index['RESULT'][0];
            $estadoResult = $vals[$auxResult]['value'];
   
            $auxDescription = $index['DESCRIPTION'][0];
            $estadoDescription = $vals[$auxDescription]['value'];

            $auxCredito = $index['CREDIT'][0];
            $estadoCredito = $vals[$auxCredito]['value'];
            
            $auxIdEnvio = $index['IDENVIO'][0];
            $idenvio = $vals[$auxIdEnvio]['value'];
   
            $this->smsResult=$estadoResult;
            $this->smsDescription=$estadoDescription;
            $this->smsCredit=$estadoCredito;
            $this->smsIdEnvio=$idenvio;
         }
         return $resultado;
   }

   function Program() {
      $param=$this->param."?id=".$this->id.
         "&phoneNumber=".urlencode($this->phone_number).
         "&psw=".$this->pwd.
         "&textSms=".urlencode($this->text_sms).
         "&descripcion=".urlencode($this->descriptionEP).
         "&fecha=".$this->dateEP.
         "&hora=".$this->timeEP.
         "&periodicidadEnvio=".$this->periodEP
         ;

         if (($this->from) != "")
             $param.="&remite=".urlencode($this->from);
 
         $url = $this->servletProgram.$param;
         $httpclient = new HTTP_Client($this->server,$this->port, $timeout = 30);
         $httpclient->path = $url;
         $resultado = $httpclient->send_request();

         if($resultado == -1)
         {
            $this->smsResult="KO";
            $this->smsDescription="Error de conexión al servidor SMS";
         }
         else
          {
            $simple = $resultado;
            // Decodifico el resultado
            $p = xml_parser_create();
            $skipWhite = xml_parser_set_option ($p,XML_OPTION_SKIP_WHITE,1); 
            xml_parse_into_struct($p,$simple,$vals,$index);
            xml_parser_free($p);
   
            $auxResult = $index[RESULT][0];
            $estadoResult = $vals[$auxResult][value];
   
            $auxDescription = $index[DESCRIPTION][0];
            $estadoDescription = $vals[$auxDescription][value];

            $auxCredito = $index[CREDIT][0];
            $estadoCredito = $vals[$auxCredito][value];
   
            $this->smsResult=$estadoResult;
            $this->smsDescription=$estadoDescription;
            $this->smsCredit=$estadoCredito;

         }
         return $resultado;

   }
   
   function Estado() {
      $param="?id=".$this->id.
         "&psw=".$this->pwd.
         "&idenvio=".$this->idenvio
         ;

         //if (($this->from) != "")
             //$param.="&remite=".urlencode($this->from);

         $url = $this->servletEstado.$param;
         $httpclient = new HTTP_Client($this->server,$this->port, $timeout = 30);
         $httpclient->path = $url;
         $resultado = $httpclient->send_request();

         if($resultado == -1)
         {
            $this->smsResult="KO";
            $this->smsDescription="Error de conexión al servidor SMS";
         }
         else
          {
            $simple = $resultado;
            // Decodifico el resultado
            $p = xml_parser_create();
            $skipWhite = xml_parser_set_option ($p,XML_OPTION_SKIP_WHITE,1); 
            xml_parse_into_struct($p,$simple,$vals,$index);
            xml_parser_free($p);
   
            $auxResult = $index['RESULT'][0];
            $estadoResult = $vals[$auxResult]['value'];
   
            $auxDescription = $index['DESCRIPTION'][0];
            $estadoDescription = $vals[$auxDescription]['value'];
            
            preg_match("/(<envio>)(.*)(<\/envio>)/s",$simple,$matches);
   
            $this->smsResult=$estadoResult;
            $this->smsDescription=$estadoDescription;
            $this->smsEstado=$matches[2];
         }
         return $resultado;
   }
   
   function Listado() {
      $param="?id=".$this->id.
         "&psw=".$this->pwd.
         "&fechaini=".urlencode($this->fechaini).
         "&fechafin=".urlencode($this->fechafin)
         ;

         $url = $this->servletListado.$param;
         $httpclient = new HTTP_Client($this->server,$this->port, $timeout = 30);
         $httpclient->path = $url;
         $resultado = $httpclient->send_request();

         if($resultado == -1)
         {
            $this->smsResult="KO";
            $this->smsDescription="Error de conexión al servidor SMS";
         }
         else
          {
            $simple = $resultado;
            // Decodifico el resultado
            $p = xml_parser_create();
            $skipWhite = xml_parser_set_option ($p,XML_OPTION_SKIP_WHITE,1); 
            xml_parse_into_struct($p,$simple,$vals,$index);
            xml_parser_free($p);
   
            $auxResult = $index['RESULT'][0];
            $estadoResult = $vals[$auxResult]['value'];
   
            $auxDescription = $index['DESCRIPTION'][0];
            $estadoDescription = $vals[$auxDescription]['value'];
            
      
            preg_match("/(<listado>)(.*)(<\/listado>)/s",$simple,$matches);
   
            $this->smsResult=$estadoResult;
            $this->smsDescription=$estadoDescription;
            $this->smsListado=$matches[2];
         }
         return $resultado;
   }
   
}
?> 


Y se supone que debo de meter esta linea de codigo en la web:

Envio del Mensaje

Código PHP :

<?php

require "SMSSend.inc";

//Defino las propiedades
$testsms=new smsItem;
$testsms->setAccount("[email protected]");
$testsms->setPwd("mipwd");
$testsms->setTo("666666666");
$testsms->setText("Este es mi texto ");
$testsms->setFrom("mi remite");      // Parámetro opcional

//Recupero los valores establecidos
$Account = $testsms->getAccount();
$Pwd = $testsms->getPwd();
$To = $testsms->getTo();
$Text = $testsms->getText();
$Remite = $testsms->getFrom();

//Envío del mensaje
$resultado = $testsms->Send();

//Resultado de la operación
$getResult = $testsms->getResult();
$getDescription = $testsms->getDescription();
$getCredit = $testsms->getCredit();
$getIdEnvio = $testsms->getIdEnvio();

print_r($resultado);
print_r("<BR>");
print_r($getResult);
print_r("<BR>");
print_r($getDescription);
print_r("<BR>");
print_r($getCredit);
print_r("<BR>");
print_r($getIdEnvio);
print_r("<BR>");
?>


En Set account y set pwd ingreso los datos de la cuenta que he pagado y supuestamente en

$testsms->setTo("$nº");
$testsms->setText("$texto ");

debo de poner la variable que yo he creado en el formulario, el cual es el siguiente:

<div id="apDiv1">
<form id="sms" name="sms" method="post" action="envio.php">
<p>
<label for="nº">nº</label>
<input type="text" name="nº" id="nº" />
</p>
<p>
<label for="texto">texto</label>
<input type="text" name="texto" id="texto" />
<input type="submit" name="enviar" id="enviar" value="Enviar" />
</p>

¿Esta todo bien? ¿Porque no se envía? ¿Que es lo que debería de poner exactamente en
$testsms->setTo("666666666");
$testsms->setText("Este es mi texto ");

?

Saludos y perdon por las molestias, lo siento, soy muy novata en esto

Por Dashiel

15 de clabLevel



Genero:Femenino  

Diseñadora Web

firefox
Citar            
MensajeEscrito el 28 Jul 2011 06:31 pm
Disculpad por el doble post pero no veo que me permita editar el tema, adjunto la pagina web donde lo explican ya que se que puede ser que me explicara sumamente mal, lo lamento

http://www.arsys.es/ayuda/guias/sms.htm

Por Dashiel

15 de clabLevel



Genero:Femenino  

Diseñadora Web

firefox
Citar            
MensajeEscrito el 29 Jul 2011 06:32 pm
¿Nadie podría ayudarme por favor?

Lo que sucede es que cuando ejecuto la orden de que envié el SMS se queda cargando la pagina, como sino terminase de leer el Scrip y ahí se queda, en blanco

Por Dashiel

15 de clabLevel



Genero:Femenino  

Diseñadora Web

firefox
Citar            
MensajeEscrito el 29 Jul 2011 08:47 pm
Wow que bien, poder enviar SMS, jajaja fue uno de mis sueños, ahora ya no, porque existe Facebook, pero bueno. :P

El código, se ve bastante simple y limpio, Me parece como una API simple, pero no se mucho sobre estos temas de API.

Lo que te recomiendo es lo siguiente


  1. Molesta a http://www.arsys.es/ hasta que se dignen en darte soporte y explicarte paso a paso como implementar su servicio, después de todo tu les pagaste. aqui sus redes sociales, molestalos por alli tambien ^^ http://twitter.com/arsys http://www.facebook.com/arsys.es
  2. Lee detenidamente el código php, hasta entenderlo por completo, para estar seguro que no sea un error simple por resolver.
  3. la primera linea del segundo codigo llama a SMSSend.inc por lo que supongo, que el primer código que pusiste es de ese archivo, si no lo es, deberia de serlo. y si lo es deberias renombrarlo por SMSSend.inc.php tanto en el código, como en el archivo físico.
  4. trata de aislar cada parte del codigo, principalmente la parte de cuando se conecta usando fsockopen

Por gcm

Claber

557 de clabLevel

3 tutoriales

Genero:Masculino  

Diseñador Grafico y Web, Geek

chrome
Citar            
MensajeEscrito el 30 May 2012 11:18 am
Entiendo que ya has tenido que resolver esto con Arsys, si te dan el servicio, deberían ayudarte a resolverlo.

En esta web www.pasarelasms.es tienes ejemplos de integraciones de una pasarela de envíos de SMS.

Disculpa por la autopublicidad, pero te invito a que pruebes gratuitamente nuestro servicio de pasarela de envío de SMS con el que, por supuesto, tendrás todo el apoyo de nuestros técnicos para su integración.

Por JJY

1 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.