Página 1 de 1

Función para enviar SMS

Publicado: 27 Nov 2012, 18:20
por Jonny
He visto que hay algún que otro código por el foro para enviar SMS con AutoIt, desde la plataforma de Mensatek y otra página que no recuerdo, creo que de México.

En mensatek tengo cuenta, pero la verdad es que no me gusta mucho, aunque está bastante bien lo que ofrecen.
Pero por ejemplo, los SMS push, no me gusta que el tema de los créditos es un poco lío; no se, a lo mejor ves que te quedan 50,6 créditos....

;)

Y luego, el tema de los micropagos, no me gusta, que te pagan a los ... ¿tres meses?.

Así, que suelo usar más otra plataforma:

Sepomo:

http://www.sepomo.com

que podría mejorar algunas cosas, pero no está del todo mal. Los créditos está como más claro los que tienes realmente, pagan a los treinta días...

:)

Así pues, he hecho una función para enviar SMS con AutoIt, desde esta plataforma.

Para enviarlos, hay que tener cuenta (es gratis registrarse) y comprar créditos.

No se si habrán cambiado los precios. La última vez que compré un bono de SMS's, estaban por algo menos de 0,10€, aunque creo que casi llegaba a los 0,10 (hace ya mucho de eso)

:)

esta es la función:

Código: Seleccionar todo

  #Include "Inet.au3"

 Func SMS_SendPush($ArgRVNum, $ArgMSG, $ArgIJ, $ArgPass, $ArgFrom="", $ArgURL="") ;"SMS_SendPush()".
  #CS

   ----------


   - Descripción:
    - Envía un SMS push.
   - Parámetro(s):
    - $ArgRVNum: Destinatario.
    - $ArgMSG: Texto del mensaje.
    - $ArgIJ: Usuario (código IJ).
    - $ArgPass: Clave.
    - $ArgFrom: ("") Remitente.
    - $ArgURL: ("") Dirección URL.
   - Valor(es) de retorno:
    - 1: El SMS se envió correctamente.
    - 0: Ocurrió un error al enviar el SMS.
   - Nota(s):
    - Los SMS se envían a través de la plataforma de Sepomo:
     http://www.sepomo.com.
     * Es necesario tener una cuenta de usuario en Sepomo.
    - * "$ArgRVNum" debe ser un número de teléfono (móvil) válido.
    - "$ArgFrom" es el remitente que verá "$ArgRVNum" en el SMS.
    - * "$ArgMSG" no puede tener más de 160 carácteres.
    - * "$ArgIJ" es el código de usuario asignado por Sepomo.
    - "$ArgPass" es la contraseña de acceso a la cuenta de Sepomo.
    - La plataforma de Sepomo diferencia entre mayúsculas y minúsculas, en "$ArgIJ" y "$ArgPass".
    - Si "$ArgURL" no recibe ningún valor, se enviará un SMS de texto.
     Si recibe una URL, el SMS se enviará como Wap-Push (mensaje de servicio).
    - Si "$ArgFrom" no recibe ningún valor, el remitente por defecto será "27722" (fijado por Sepomo).


   ----------

  #CE
   Local $UrlSMS="http://www.sepomo.com/clients/sendsms.php" ;Dirección de la aplicación de Sepomo, para enviar SMS.
   Local $Buff_URL ;Buffer para almacenar el resultado de la llamada a la aplicación de Sepomo, para enviar SMS.
   If ((StringIsDigit($ArgRVNum)=0) _ ;Si "$ArgRVNum" no recibe un valor esperado.
    Or (StringLen($ArgMSG)<1 Or StringLen($ArgMSG)>160) _ ;O si "$ArgMSG" no recibe un valor esperado.
    Or ($ArgIJ=="") _ ;O si "$ArgIJ" no recibe un valor esperado.
    Or ($ArgPass=="")) Then Return 0 ;O si "$ArgPass" no recibe un valor esperado - Devuelve código de error ("0").
   $UrlSMS&="?number="&$ArgRVNum&"&text="&UrlEncode($ArgMSG)&"&user="&$ArgIJ&"&pass="&$ArgPass ;Añade la petición GET con los parámetros obligatorios, a la dirección de la aplicación de Sepomo, para enviar SMS.
   If $ArgFrom<>"" Then ;Si "$ArgFrom" contiene datos.
    $UrlSMS&="&from="&UrlEncode($ArgFrom) ;Añade el parámetro "From" a la dirección de la aplicación de Sepomo, para enviar SMS.
   EndIf ;End -> Si "$ArgFrom" contiene datos.
   If $ArgURL<>"" Then ;Si "$ArgURL" contiene datos.
    $UrlSMS&="&url="&$ArgURL ;Añade el parámetro "URL" a la dirección de la aplicación de Sepomo, para enviar SMS.
   EndIf ;End -> Si "$ArgURL" contiene datos.
   $Buff_URL=_InetGetSource($UrlSMS, 1) ;Llama a la aplicación de Sepomo, para enviar SMS.
    If ($Buff_URL<>"" And @Error=0) Then ;Si no ocurrió ningún error al llamar a la aplicación de Sepomo, para enviar SMS.
     If StringLower($Buff_URL)<>"ok" Then Return 0 ;Si la aplicación de Sepomo, para enviar SMS devuelve un mensaje distinto de "OK" - Devuelve código de error ("0").
     Return 1 ;Devuelve código de ejecución correcta ("1").
      Else ;Si ocurrió un error al llamar a la aplicación de Sepomo, para enviar SMS.
       Return 0 ;Devuelve código de error ("0").
    EndIf ;End -> Si no ocurrió ningún error al llamar a la aplicación de Sepomo, para enviar SMS.
 EndFunc ;End -> "SMS_SendPush()".

 Func UrlEncode($XUrl)
  Local $Url=""
  For $I=1 To StringLen($XUrl)
   $ACode=Asc(StringMid($XUrl, $I, 1))
   Select
    Case ($ACode>=48 And $ACode<=57) Or ($ACode>=65 And $ACode<=90) Or ($ACode>=97 And $ACode<=122)
     $Url=$Url&StringMid($XUrl, $I, 1)
    Case $ACode=32
     $Url=$Url&"+"
    Case Else
     $Url=$Url&"%"&Hex($ACode, 2)
   EndSelect
  Next
  Return $Url
 EndFunc

MsgBox(0, "", SMS_SendPush("666666666", "Este es un mensaje de prueba, enviado desde una aplicación escrita con AutoIt", "user", "password", "www.AutoIt.es"))
Exit
* ¡Espero que nadie tenga el número que he puesto como ejemplo de la llamada a la función!.

He actualizado el código, comprobando lo que devuelve el script de Sepomo para enviar el SMS y usando una función del foro inglés de AutoIt: UrlEncode(), ya que por lo visto hay que pasar el texto del SMS por ella. Y por siacaso, he pasado también el remitente, que por otra parte ahora es opcional, ya que Sepomo pone uno por defecto, si no se indica ninguno.

Espero que os guste y que os sirva, si alguien trabaja con esta empresa o quiere probarla.

Salu2!