Back-End

13 dez, 2002

Sistema para envio de mensagens SMS (celular)

Publicidade

Neste artigo vamos aprender a
criar um sistema de envio de mensagens SMS para celular,
em ASP.

Este exemplo utiliza a componente de
e-mail e é preciso formatar algumas informações
como número do telefone, além de verificar
se o número de caracteres não ultrapasse o permitido.

Obs. Cada operadora de telefonia
celular tem uma política para envio de SMS.

Os códigos em azul
são em ASP, os que estão em cinza
são HTML e Javascript em verde.

Quando formos programar, usaremos como
exemplo a Operadoras de Protugal pois são as
que conseguimos todas as informações (números
possíveis, números de caracteres, etc…)
Depois, basta você ter as informações
das nacionais e substituir.

Ficheiro: Default.htm





vlink="#FFFFFF" alink="#FFFFFF">

cellspacing="0" cellpadding="0"
height="100%" align="center" vspace="0"
hspace="0">









face="Verdana, Arial, Helvetica, sans-serif"
size="5" color="#022941">Serviço
de mensagens escritas através de e-mail

name="SMS" onSubmit="MM_validateForm(‘document.SMS.DeNome’,
‘document.SMS.DeNome’,’R’,’document.SMS.NumeroTelemovel’,
‘document.SMS.NumeroTelemovel’,’RinRange910000000:969999999′,
‘document.SMS.Mensagem’,’document.SMS.Mensagem’,’R’);return
document.MM_returnValue"
>
cellspacing="2" cellpadding="2">









color="#FFFFFF">:.
SMS – Serviço Mensagens Escritas

De:

  
size="40" maxlength="20">


size="2" color="#022941">Para
(nº de telemóvel):


  
size="9" maxlength="9">


size="2" color="#022941">Mensagem:

  



value=" Enviar ">
value=" Limpar ">


color="#022941">Por:
José
Barros




A utilização de JavaScript é apenas
para verificar se os campos estão preenchidos antes
de fazer o post, o que permite poupar algum tempo.

Agora é necessário recolher esta informação
numa outra página e depois "tratá-la".

Continuamos…

Ficheiro: Confirma.asp



<%

‘ Dimensionando
as constantes.
dim denome
dim Numero
dim mensagem
dim errol
dim contagem
dim NumeroErrado
dim assunto
dim mailpara

‘ Através deste
passo recolhemos os dados do formulário

‘ O nome de quem
envia:
denome = Request.form("DeNome")

‘ O número do celular
para onde é enviada a mensagem:
Numero = Request.form("NumeroTelemovel")

‘ Isto é para que
o número passe de página para página…
session("Numero")=Numero

‘ Mensagem a enviar
Mensagem = Request.form("Mensagem")

‘ Vamos verificar se foi ultrapassado o limite de carateres.
‘ Eu usei 500 pois a OPTIMUS
‘aceita até 640 caracteres.
‘ Para que o serviço funcione pode-se diminuir de valor…
contagem=len(mensagem)

‘ Os valores do
goby serão referenciados de seguida.
If contagem>=500 Then
goby="0"
else
goby="1"
End If

‘ O assunto (Subject)
assunto="Mensagem enviada por " & denome
& "."

‘ Atribuimos um
valor para a constante NBumeroErrado, caso o 
‘número não comece por 91, 93 ou 96.
NumeroErrado="0"

‘Opera = aos primeiros
2 dígitos do número.
OPera=midB(Numero,1,3)

‘Para o caso o
número ser OPTIMUS
if OPera=93 then
mailpara=Numero&"@sms.optimus.pt"

‘caso contrário
else

‘para o caso seja
TMN, operadora de Portugal
if OPera=96 then
mailpara=Numero&"@mail.tmn.pt"

‘caso contrário
else

‘Para o caso ser
TELECEL, operadora de Portugal
if OPera=91 then
mailpara=Numero&"@sms.telecel.pt"
‘Caso não seja de nenhum, existe um erro, o número introduzido
é errado…
else
NumeroErrado="1"
end if

end if

end if

‘ Já temos valores
para apresentar resultados
‘ Já sabemos se foi ultrapassado o limite de caracteres
e se o número 
‘ que foi introduzido está correto.
‘ Se estas duas condições estiverem corretas, ótimo,
podemos
‘ prosseguir, caso contrário, teremos que corrigi-las.
%>


vlink="#FFFFFF" alink="#FFFFFF">

cellspacing="0" cellpadding="0"
height="100%" align="center" vspace="0"
hspace="0">




cellspacing="0" cellpadding="0"
height="100%">





valign="top"> color="#022941">Confirmação



<%
‘ Caso o goby seja "0", significa que foi
ultrapassado o limite de caracteres…
if goby="0" then
%>

border="0" cellspacing="2" cellpadding="2">









:.
Erro
face="Verdana, Arial, Helvetica, sans-serif">O
campo da mensagem não pode conter mais do que 500 caracteres.

value=" <<– Retroceder " onClick="parent.history.back();
return false;">

<%
‘ Caso contrário, goby >< 0, passemos à fase seguinte,
número 
‘ correto ou número errado?
else

‘ Caso o número
esteja errado:
if NumeroErrado="1" then
%>

border="0" cellspacing="2" cellpadding="2">









:.
Erro


Este
serviço
só está disponível
apenas para redes portuguesas,
Optimus (93 xxx xx xx), Telecel
(91 xxx xx xx),
TMN (96 xxx xx xx).

face="Verdana, Arial, Helvetica, sans-serif">O
número que você introduziu (
color="#022941"><%=session("Numero")%> color="#022941" face="Verdana, Arial,
Helvetica, sans-serif">),

não
é de nenhum operador, deste modo, não
nos é possível entregar a sua
mensagem.



value=" <<– Retroceder " onClick="parent.history.back();
return false;"
>


<%

‘ Se chegamos a
este ponto, está todo correto, o utilizador pode 
‘ agora confirmar o envio ou então voltar para corrigir
algo.
Else

‘ agora criamos
mais um "form" com "Hidden Fields"
isto porque a componente que está instalada
‘no servidor que eu estou só aceita dados já atribuídos
ou através de
‘um "form", não aceita variáveis…
%>

action="SMSsend.asp" name="SMSsend">
cellspacing="2" cellpadding="2">


















face="Verdana, Arial, Helvetica, sans-serif"
size="4" color="#FFFFFF">:.
Confirme se é isto que pretende enviar
DE
:

  
<%=denome%>


name="denome" value="<%=denome%>">
Para
:

   
<%
‘ Aqui dizemos qual aOperadora móvel em questão.
Response.Write session("Numero")

if MidB(session("Numero"),1,3)=93
then
Response.Write(" ( OPTIMUS )")
end if
if MidB(session("Numero"),1,3)=96 then
Response.Write(" ( TMN )")
end if
if MidB(session("Numero"),1,3)=91 then
Response.Write(" ( TELECEL )")
end if
%>

name="NomePara" value="<%=session("Numero")%>">


value="
<%=mailpara%>">


value="
<%=assunto%>">
Mensagem:


   <%=Mensagem%>

value="<%=Mensagem2%>">

value=" Sim, enviar. ">
value=" Não, retroceder. "
onClick="parent.history.back();
return false;"
>


<%

‘ Fechamos os IF’s…

end if
end if
%>






Para finalizar, vamos enviar a mensagem.
A componente de e-mail existente deverá alterar para
a que você usa.
O processo é semelhante.

Ficheiro: SMSsend.asp



SMSsend.asp
vlink="#FFFFFF" alink="#FFFFFF">

cellspacing="0" cellpadding="0"
height="100%" align="center" vspace="0"
hspace="0">




cellspacing="0" cellpadding="0">






valign="top">
s
valign="top">



<%

Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Mailer.FromName = "Nome"
Mailer.FromAddress= "email@host.pt"
Mailer.RemoteHost = "O seu host: ex.: mail.host.pt
"
Mailer.Priority = 1
Mailer.AddRecipient Request.Form("NomePara"),
Request.Form("emailpara")
Mailer.Subject = Request.Form("assunto")
Mailer.BodyText = Request.Form("mensagem")

if Mailer.SendMail
then
msgenv=1
else
msgenv=0
errol=Chr(34)& Mailer.Response &Chr(34)
end if

if msgenv=1 then
%>


size="3"> A sua
mensagem foi enviada com sucesso para o n.º
<%=session("Numero")%>.

Aproveite também para size="3">enviar

a outra pessoa.


<%
else

%>



Ocorreu
um erro ao enviar a mensagem.

O erro foi:
<%=errol%> face="Verdana, Arial, Helvetica, sans-serif">.

Se este erro persistir reporte-o ao webmaster, usando
o botão
que se segue.

Desde já obrigado.

value="
<%=errol%>">


value=" Notificar webmaster ">
.


<%
end if

‘ Muito importante
!!! convém ter isto no final, pois assim acaba com qualquer
sessão !! e liberta o servidor…
session.abandon
%>





Um abraço a todos usuários
iMasters e boa programação. Qualquer cosia
que precisarem, estamos por aqui!