Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   enviar sms por internet desde mi aplicación (https://www.clubdelphi.com/foros/showthread.php?t=63894)

testosi 07-03-2009 20:22:07

enviar sms por internet desde mi aplicación
 
Estimados, se que se ha tocado este tema con anterioridad pero he leído creo que la mayoría de los hilos y no he logrado llegar a una solución para enviar sms, desde mi aplicación Delphi a través de Internet, sin importar que tipo de conexión este utilizando. Estaré muy agradecido si en este hilo me indican como hacerlo, sin enviarme a otros hilos.

Desde ya muchas gracias, y disculpen si toco temas ya tratados, pero la verdad no me sirvieron de mucha ayuda los hilos que leí y estoy empezando a desesperarme por tratar de enviar sms desde mi aplicación. Todo lo que he intentado no resultó. Sepan disculpar mi tono de desesperación.

Cordialmente.
TesTosi.

vejerf 09-03-2009 10:23:32

Hola Testosi,

No soy un experto ni mucho menos, pero creo que para enviar SMS necesitas al menos un módulo GSM (el mc35iT por ejemplo). Teniendo un módulo y sus comandos AT es muy sencillo hacerlo, pero claro esto tiene su coste. Si lo que pretendes es hacer una aplicación que envíe SMS de forma gratuita creo que no se puede.

Saludos!

testosi 09-03-2009 10:33:58

Gracias por responder vejerf, aún así sigo investigando.

Cordialmente.
TesTosi

BlackDaemon 11-03-2009 19:53:59

Hola

Lo que quieres es enviar un sms utilizando un servicio externo a tu aplicación ? (una web por ejemplo) o quieres enviar un sms desde la misma app utilizando hardware adicional como te comentarion con aterioridad, un modem GSM y comandos AT es fácil, y si tomas la otra opción es igual fácil, solo tendrías que usar el componente idHTTP de las indy y mirar sus funciones get y post y enviar ahí el parametro exacto que recibe el servidor

saludos!

testosi 12-03-2009 02:46:24

Gracias por contestar BlackDaemon, mi intención es enviar por cualquier tipo de medio ya sea por GSM, Banda Ancha, Dial up. O sea necesito que tenga la flexibilidad de enviar a través de una página web (como servidor externo a la aplicación para enviar SMS, que ya encontré) o si conecta un celular a la PC. O sea (y valga la redundancia), las dos opciones que me preguntaste son las que necesito implementar. Te agradeceré mucho si me das una mano.

Cordialmente
TesTosi

BlackDaemon 12-03-2009 14:44:23

Hola

Si es por las 2 opciones entonces entonces vamos por la que utiliza una aplicación web externa, pero para eso necesito conocer la página, en si lo que hay que hacer como te dije es utilizar o bien idHTTP de los indy o directamente WiniNet para enviar/recibir datos al servidor, ya se por POST o GET, depende como lo haga la aplicación web, sin conocer como lo hace no te puedo decir más, pero la idea va por ahí, puedes buscar en el foro hay muchos ejemplos del envío de parámetros usando las 2 opciones que te di.

Saludos!

testosi 12-03-2009 16:15:29

Gracias por contestar nuevamente, el sitio web es www.radiosabalera.com.ar/sms . Por otro lado ya ví esos hilos son bastantes claros de como usar los métodos POST y GET pero mi inconveniente es como establecer los parámetros de la página web para enviar las peticiones. Te agradecería que ingresaras al sitio indicado y me dijeras cuales son dichos parámetros y como los puedo identificar ya sea para esta página web o para cualquier otra.
Desde ya muchas gracias por tu ayuda.

Cordialmente
TesTosi

BlackDaemon 12-03-2009 16:54:09

Hola

Bueno, según he visto envían algo así:

-----------------------------2625256275629%0D%0AContent-Disposition%3A+form-data%3B+name=%22enviar%22%0D%0A%0D%0AEnviar%0D%0A-----------------------------2625256275629%0D%0AContent-Disposition%3A+form-data%3B+name&%22numero%22%0D%0A%0D%0Anumero%0D%0A-----------------------------2625256275629%0D%0AContent-Disposition%3A+form-data%3B+name=%22mensaje%22%0D%0A%0D%0Aaqui_el_mensaje%0D%0A-----------------------------2625256275629%0D%0AContent-Disposition%3A+form-data%3B+name&%22sep%22%0D%0A%0D%0A+++%0D%0A-----------------------------2625256275629%0D%0AContent-Disposition%3A+form-data%3B+name=%22remitente%22%0D%0A%0D%0aquielremitente%0D%0A-----------------------------2625256275629--%0D%0A


lo hace aquí:

POST http://sms.whsites.net/control.php HTTP/1.1
Host: sms.whsites.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 Paros/3.2.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Referer: http://sms.whsites.net/phone.php
Content-Type: multipart/form-data; boundary=---------------------------2625256275629
Content-Length: 554

Entonces quedaría enviar por POST algo así

enviarSMS('http://sms.whsites.net/control.php? + todoloantetior);

con "todoloanterior" me refiero al primer chorizo que puse

luego te tendría que responder con algo, seguramente un html donde buscas algo que indique que se enviado correctamente o falló el envío


Saludos!

PD no estoy seguro de que sea así, no lo he probado por que no sé un número válido

BlackDaemon 12-03-2009 17:00:48

Hola

Bueno, mirando un poco el código he visto que usan un .js para recibir los datos y procesarlos, en si es este

http://sms.whsites.net/phone.js

Pero creo que no les gusta que le miren el código ya que lo tienen codificado con una función, pero bueno, lo decodificas con las mismas funciones de js, bueno, yo no sé js pero mirando el código veo que usan unescape y busqué por ello en google y fácilmente pude leer el texto ya entendible, el cual pondré a continuación para que veas lo que hacen, y los campos en si

Código PHP:

/* COPYRIGHT (C)2007 WWW.iSMS.COM.AR */ document.write(unescape("<script type="text/javascript">
function home() { 
if (window==window.top) { 
window.location='http://sms.radiosabalera.com.ar/'; 


if (window==window.top) { 
window.location='http://sms.radiosabalera.com.ar/'; 


if(window.opera) { 
window.history.go(1); 


var css_browser_selector = function() {var ua=navigator.userAgent.toLowerCase(),is=function(t){return ua.indexOf(t) != -1;},h=document.getElementsByTagName('html')[0],b=(!(/opera|webtv/i.test(ua))&&/msie\s(\d)/.test(ua))?('ie ie'+RegExp.$1):is('firefox/2')?'gecko ff2':is('firefox/3')?'gecko ff3':is('gecko/')?'gecko':is('opera/9')?'opera opera9':/opera\s(\d)/.test(ua)?'opera opera'+RegExp.$1:is('konqueror')?'konqueror':is('chrome')?'chrome webkit safari':is('applewebkit/')?'webkit safari':is('mozilla/')?'gecko':'',os=(is('x11')||is('linux'))?' linux':is('mac')?' mac':is('win')?' win':'';var c=b+os+' js'; h.className += h.className?' '+c:c;}(); 

function buttonSt(o, sens) { 
if(o) { 
if(sens == 1) { 
o.style.backgroundColor = '#E0DFE3'; 
o.style.cursor = 'default'; 
}else{ 
o.style.backgroundColor = '#CFCED2'; 
o.style.cursor = 'default'; 




//onsubmit="
setTimeout('sysReset()',300); return true;
function sysReset() { 
var i; 
for (i = 0; (i < document.forms.length); i++) { 
document.forms[i].reset(); 
document.sms.numero.value = ''; 
document.sms.mensaje.value = ''; 
document.sms.remitente.value = ''; 



//onkeypress="
return isnumberkey(event);
function isnumberkey(evt) { 
var charCode = (evt.which) ? evt.which : event.keyCode 
if (charCode > 31 && (charCode < 48 || charCode > 57)) 
return false; 
return true; 


//onkeyup="
return ismaxlength(this);
function ismaxlength(obj) { 
var mlength=obj.getAttribute? parseInt(obj.getAttribute('maxlength')) : '' 
if (obj.getAttribute && obj.value.length>mlength) 
obj.value=obj.value.substring(0,mlength) 


function waitSt() { 
document.getElementById('numero').style.color = '#9696A0'; 
document.getElementById('mensaje').style.color = '#9696A0'; 
document.getElementById('remitente').style.color = '#9696A0'; 


function readySt() { 
document.getElementById('numero').style.color = '#5A5A65'; 
document.getElementById('mensaje').style.color = '#5A5A65'; 
document.getElementById('remitente').style.color = '#5A5A65'; 


function toSend() { 
//soundManager.play('button'); 
window.focus(); 
waitSt(); 


function toReset() { 
//soundManager.play('button'); 
window.focus(); 
waitSt(); 
sysReset(); 
reset(); 


var isIE = navigator.appName.toLowerCase().indexOf('internet explorer')+1; 
var isMac = navigator.appVersion.toLowerCase().indexOf('mac')+1; 

function SoundManager(container) { 
// DHTML-controlled sound via Flash 
var self = this; 
this.movies = []; // movie references 
this.container = container; 
this.unsupported = 0; // assumed to be supported 
this.defaultName = 'default'; // default movie 
  
this.FlashObject = function(url) { 
var me = this; 
this.o = null; 
this.loaded = false; 
this.isLoaded = function() { 
if (me.loaded) return true; 
if (!me.o) return false; 
me.loaded = ((typeof(me.o.readyState)!='undefined' && me.o.readyState == 4) || (typeof(me.o.PercentLoaded)!='undefined' && me.o.PercentLoaded() == 100)); 
return me.loaded; 

this.mC = document.createElement('div'); 
this.mC.className = 'movieContainer'; 
with (this.mC.style) { 
// "
hide" flash movie 
position = 'absolute'; 
left = '-256px'; 
width = '64px'; 
height = '64px'; 

var html = ['<object classid="
clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"><param name="movie" value="'+url+'"><param name="quality" value="high"></object>','<embed src="'+url+'" width="1" height="1" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>']; 
if (navigator.appName.toLowerCase().indexOf('microsoft')+1) { 
this.mC.innerHTML html[0]; 
this.this.mC.getElementsByTagName('object')[0]; 
} else { 
this.mC.innerHTML html[1]; 
this.this.mC.getElementsByTagName('embed')[0]; 

document.getElementsByTagName('div')[0].appendChild(this.mC); 


this.addMovie = function(movieName,url) { 
self.movies[movieName] = new self.FlashObject(url); 


this.checkMovie = function(movieName) { 
movieName movieName||self.defaultName
if (!
self.movies[movieName]) { 
self.errorHandler('checkMovie','Exception: Could not find movie',arguments); 
return 
false
} else { 
return (
self.movies[movieName].isLoaded())?self.movies[movieName]:false



this.errorHandler = function(methodName,message,oArguments,e) { 
writeDebug('<div class="error">soundManager.'+methodName+'('+self.getArgs(oArguments)+'): '+message+(e?' ('+e.name+' - '+(e.message||e.description||'no description'):'')+'.'+(e?')':'')+'</div>'); 


this.play = function(soundID,loopCount,noDebug,movieName) { 
if (
self.unsupported) return false
movie self.checkMovie(movieName); 
if (!
movie) return false
if (
typeof(movie.o.TCallLabel)!='undefined') { 
try { 
self.setVariable(soundID,'loopCount',loopCount||1,movie); 
movie.o.TCallLabel('/'+soundID,'start'); 
if (!
noDebugwriteDebug('soundManager.play('+self.getArgs(arguments)+')'); 
} catch(
e) { 
self.errorHandler('play','Failed: Flash unsupported / undefined sound ID (check XML)',arguments,e); 




this.stop = function(soundID,movieName) { 
if (
self.unsupported) return false
movie self.checkMovie(movieName); 
if (!
movie) return false
try { 
movie.o.TCallLabel('/'+soundID,'stop'); 
writeDebug('soundManager.stop('+self.getArgs(arguments)+')'); 
} catch(
e) { 
// Something blew up. Not supported? 
self.errorHandler('stop','Failed: Flash unsupported / undefined sound ID (check XML)',arguments,e); 



this.getArgs = function(params) { 
var 
params?params.length:0
if (!
x) return ''
var 
result ''
for (var 
i=0i<xi++) { 
result += (i&&i<x?', ':'')+(params[i].toString().toLowerCase().indexOf('object')+1?typeof(params[i]):params[i]); 

return 
result 


this.setVariable = function(soundID,property,value,oMovie) { 
// set Flash variables within a specific movie clip 
if (!oMovie) return false
try { 
oMovie.o.SetVariable('/'+soundID+':'+property,value); 
// writeDebug('soundManager.setVariable('+self.getArgs(arguments)+')'); 
} catch(e) { 
// d'oh 
self.errorHandler('setVariable','Failed',arguments,e); 



this.setVariableExec = function(soundID,fromMethodName,oMovie) { 
try { 
oMovie.o.TCallLabel('/'+soundID,'setVariable'); 
} catch(
e) { 
self.errorHandler(fromMethodName||'undefined','Failed',arguments,e); 



this.callMethodExec = function(soundID,fromMethodName,oMovie) { 
try { 
oMovie.o.TCallLabel('/'+soundID,'callMethod'); 
} catch(
e) { 
// Something blew up. Not supported? 
self.errorHandler(fromMethodName||'undefined','Failed',arguments,e); 



this.callMethod = function(soundID,methodName,methodParam,movieName) { 
movie self.checkMovie(movieName||self.defaultName); 
if (!
movie) return false
self.setVariable(soundID,'jsProperty',methodName,movie); 
self.setVariable(soundID,'jsPropertyValue',methodParam,movie); 
self.callMethodExec(soundID,methodName,movie); 


this.setPan = function(soundID,pan,movieName) { 
self.callMethod(soundID,'setPan',pan,movieName); 


this.setVolume = function(soundID,volume,movieName) { 
self.callMethod(soundID,'setVolume',volume,movieName); 

// constructor - create flash objects 
if (isIE && isMac) { 
this.unsupported 1


if (!
this.unsupported) { 
this.addMovie(this.defaultName,'soundcontroller.swf'); 
// this.addMovie('rc','rubber-chicken-audio.swf'); 



function 
SoundManagerNull() { 
// Null object for unsupported case 
this.movies = []; // movie references 
this.container null
this.unsupported 1
this.FlashObject = function(url) {} 
this.addMovie = function(name,url) {} 
this.play = function(movieName,soundID) { 
return 
false

this.defaultName 'default'


function 
writeDebug(msg) { 
var 
document.getElementById('debugContainer'); 
if (!
o) return false
var 
document.createElement('div'); 
d.innerHTML msg
o.appendChild(d); 


var 
soundManager null

function 
soundManagerInit() { 
soundManager = new SoundManager(); 


function 
successSound() { 
soundManager.play('success'); 

</script>")) 

Aquí vemos claramente el nombre de los campos

document.sms.numero.value = '';
document.sms.mensaje.value = '';
document.sms.remitente.value = '';

Saludos!

testosi 12-03-2009 18:08:11

Estimado BlackDaemon, lo indicado en la Respuesta Nro. #8 no se como implementarlo en Delphi. Te agradecería si pudieras ser un poco más claro.
Y con respecto a la #9, no lo puedo probar en estos momentos ya que estoy en mi trabajo, pero cuando lo haga te comento.

Gracias por tu ayuda.

Cordialmente
TesTosi

tomast 02-01-2011 00:37:03

tienes que comprobar 2-waysms.com

webmasterplc 05-01-2011 20:53:23

Hermano Como Estas Yo Estoy Haciendo Algo Parecido A Lo Que Necesitas Pero Ya Me Esta Funcionando, Hay Que Saber Si Usas Un Gateway O Algo El Que Yo Estoy Desarrollando Es Mediante Post O Get, Aunq8ue Se Me Va A Complicar Porque Aun No S Eme Permite Colocar Direcciones Web Y En El Codigo Uso Eso Saludos Dame Datos Y Te Ayudo

newtron 10-01-2011 14:32:40

Hola, en la web www.altiria.net tienes todo lo que necesitas para enviar sms desde tu aplicación. Te facilitan los componentes para integrarlos en tu aplicación sin grandes problemas. Lo único es que los mensajes son pagados, tienes que comprar bonos de X mensajes para poder enviarlos.

Saludos

Casimiro Notevi 10-01-2011 14:54:49

Cita:

Empezado por webmasterplc (Mensaje 386728)
Hermano Como Estas Yo Estoy Haciendo Algo Parecido A Lo Que Necesitas Pero Ya Me Esta Funcionando, Hay Que Saber Si Usas Un Gateway O Algo El Que Yo Estoy Desarrollando Es Mediante Post O Get, Aunq8ue Se Me Va A Complicar Porque Aun No S Eme Permite Colocar Direcciones Web Y En El Codigo Uso Eso Saludos Dame Datos Y Te Ayudo

¿Y por qué escribes de esa manera?, debe ser pesado estar pulsando la mayúscula en cada palabra :confused:

Chris 10-01-2011 17:21:50

Cita:

Empezado por Casimiro Notevi (Mensaje 387079)
¿Y por qué escribes de esa manera?, debe ser pesado estar pulsando la mayúscula en cada palabra :confused:

Jajajaja. Yo también noté esa peculiar forma de escribir de este muchacho. Pero créeme que no está sólo. Yo personalmente conozco a dos personas ya bien adultas que escriben de esta manera. Es costumbre y su manera de escribir incluso a mano. De la misma forma en que algunos escriben en letra de carta y otros lo hacemos en molde. Incluso hay algunos que combinan ambos tipos de letras.

Casimiro Notevi 10-01-2011 17:27:16

Sí, aunque lo decía un poco por llamar la atención, me parece que el vbulletin hace eso cuando se ha escrito todo en mayúsculas :)
Voy a probar.

Casimiro Notevi 10-01-2011 17:27:37

Esto Es Una Prueba Todo En Mayúsculas... Veremos Cómo Sale.

Casimiro Notevi 10-01-2011 17:28:39

je.je.je... es eso, que escribe TODO en mayúsculas.

Seguramente no ha leído nuestra guía de estilo.

Jose_salazar 22-09-2011 15:00:00

hola webmasterplc como hago para ver el codigo fuente estoy tratando de hacer algo parecido pero tengo muchas dudas

Casimiro Notevi 22-09-2011 15:22:50

Cita:

Empezado por Jose_salazar (Mensaje 413001)
hola webmasterplc como hago para ver el codigo fuente estoy tratando de hacer algo parecido pero tengo muchas dudas

Bienvenido a clubdelphi, por favor, no olvides leer nuestra guía de estilo, gracias.


La franja horaria es GMT +2. Ahora son las 00:28:49.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi