Page 1 of 1

Envio de SMS **SOLUCIONADO**

Posted: Thu Jan 26, 2017 2:24 pm
by IVAN TRACHTA
Buenas!

Tengo un cliente que ha contratado un servicio de envío de SMS a clientes.
El servicio incluye una página en donde se van cargando los # de teléfonos y el txt que se desea enviar y simplemente hace el trabajo.
Pero además tiene un modelo para integrar esto a un sistema propio.

Yo lo he probado y efectivamente funciona, envio desde mi sistema el comando x ej:

http://servicio.smsmasivos.com.ar/enviar_sms.asp?,;
api=1&;
test=1&;
usuario=xxxx&;
clave=cccc&;
tos=1144445555&;
texto=Mensaje

y el mensaje se envía sin problemas.

Sólo tengo 2 cuestiones..
1) obviamente al enviar esto me abre el navegador por defecto, no se si se puede manejar que lo haga en background o segundo plano.
2) me da una respuesta que es simplemente un texto pero dentro de la página que he abierto.. Por ej si todo fue bien, la respuesta es sólo "OK"

Cómo podría tomar o leer el contenido de una pagina web?

O sea lo ideal seria poder mandar el comando, y tomar la respuesta y que todo sea invisible al usuario del sistema mío. Y si no es invisible.. que se abra el navegador.. enviar los datos, tomar la respuesta y cerrar desde mi programa el mismo.

No se si se entiene, espero que si.

Un abrazo!

Re: Envio de SMS

Posted: Thu Jan 26, 2017 6:02 pm
by cnavarro
Busca informacion sobre la function

//nRet := hb_ProcessRun( cCommand, cStdIn, @cStdOut, @cStdErr, lDetach )

e investiga despues el contenido de cStdOut

Re: Envio de SMS

Posted: Thu Jan 26, 2017 10:00 pm
by IVAN TRACHTA
Gracias Cristóbal

Esa es una Función de Harbour, estará documentada?

Re: Envio de SMS

Posted: Thu Jan 26, 2017 10:06 pm
by cnavarro
Por supuesto
Google es nuestro amigo :D

Re: Envio de SMS

Posted: Fri Jan 27, 2017 2:01 pm
by IVAN TRACHTA
Gracias Cristóbal

He estado viendo pero no la puedo probar, creo que uso una versión de Harbour muy antigua (por esto de cosa que funciona no se toca.. creo que nunca me motivé a actualizarla).
Me da Unresolved External esa función.. o hay que enlazar alguna lib en particular?

Re: Envio de SMS

Posted: Fri Jan 27, 2017 3:06 pm
by mag071
Saludos desde Venezuela.-

Yo hago algo parecido con un servicio aqui en Venezuela

METHOD Enviarsms(cOrden,cTlf) CLASS TServicio
LOCAL cMensa:=""
LOCAL cHost,lRet:=.F.
LOCAL oHttp,cFuncion,oError,cTextohtml,cXml,xDato,nReg:=0,nI:=0

if empty(cTlf)
msgstop("No hay celular para enviar mensaje","verifique la ficha")
Return Self
Endif

cMensa:="Informa%20=%20Se%20ha%20cargado%20la%20orden%20de%20servicio%20"+Alltrim(Oemtoansi(cOrden))+"%20"+;
"de%20fecha%20"+dtoc(date())+"%20"+;
"informaremos%20por%20esta%20via%20los%20avances%20de%20su%20servicio.%20Gracias%20por%20su"+"%20"+;
"confianza."

oHttp:=CreateObject("winhttp.winhttprequest.5.1")
oHttp:SetTimeouts(30000,30000,30000,30000)

cHost:="http://041x.com/secure/insert.php?uname ... x&pass=xyz"
cFuncion:="&num=0"+Alltrim(cTlf)+"&msg="+cMensa

oHttp:Open("GET",Alltrim(cHost)+cFuncion,.f.)
Try
oHttp:Send()
Catch oError
MsgInfo("NO HAY CONEXION CON EL SERVIDOR CENTRAL ","INTENTE DE NUEVO ")
Return .F. //Aqui retornar false...
End

cTextoHTML:=oHttp:ResponseText()
cXML:=cTextoHTML
xDato:=GetStringFromXMl('[',']', cXML )
IF UPPER(xDato)<>"OK"
MSGSTOP("ERROR EN ENVIO DEL MENSAJE DE TEXTO","INFORME ESTE MENSAJE POR FAVOR")
Return lRet
ENDIF

Return Self

Function GetStringFromXMl( cInicio, cFinal, cString )
Local nInicio:=At( cInicio, cString ) + Len( cInicio )
Local nFinal :=At( cFinal, cString ) - nInicio
Return Alltrim( Substr( cString, nInicio, nFinal ) )

Re: Envio de SMS

Posted: Fri Jan 27, 2017 7:24 pm
by IVAN TRACHTA
Hola Mario

Creo que algo así es lo que estoy buscando.
Podrías adjuntarme la definición de la clase TServicio? y qué librerías enlazas para que esto funcione?
Para definir el objeto oHTTP ?

Gracias!!

Re: Envio de SMS

Posted: Fri Jan 27, 2017 10:42 pm
by IVAN TRACHTA
Con la ayuda de otro colega de otro foro encontre la solución. Facilísimo y simple.
Lo que buscaba. Funciona aparentemente sólo con Internet Explorer, pero es tan transparente al usuario que no importa.

Lo publico aca para que quede la solución, capaz le sirva a alguien:

FUNCTION ConsultaWeb(cUrl)
LOCAL cError,oExplorer
LOCAL cResult

oExplorer := TOleAuto():New("InternetExplorer.Application")
oExplorer:Navigate(cUrl)
oExplorer:Visible:=.F. // IE invisible

// Las siguientes 4 lineas son para pausar la carga de una pagina, omitelas si no te son necesarias
//WaitSeconds(5) // deshabilito, no hace falta
WHILE oExplorer:Busy
HB_IDLESLEEP(1)
ENDDO

// Guardamos en texto del resultado de la web
cResult:=oExplorer:Document:Body:InnerText
oExplorer:End()


IF "OK"$cResult
ALERT("El envio del SMS fue un exito")
ENDIF

RETURN cResult

Re: Envio de SMS

Posted: Tue Jan 31, 2017 1:51 pm
by TOTOVIOTTI
Hola Ivan...
me interesa lo que publicas...
Serías tan amable de adjuntar un ejemplo completo del envío de SMS?
No entiendo como enlazas la función ConsultaWeb con el envío de los mensajes...
Gracias!
Roberto

Re: Envio de SMS **SOLUCIONADO**

Posted: Mon Mar 27, 2017 11:47 am
by jbrita
Ivan me interesa, puedes compartir el codigo completo
gracias