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">
height="100%" align="center" vspace="0"
hspace="0">
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">
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:
rows="4">
value=" Enviar ">
value=" Limpar ">
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">
height="100%" align="center" vspace="0"
hspace="0">
height="100%">
<%
‘ Caso o goby seja "0", significa que foi
ultrapassado o limite de caracteres…
if goby="0" then
%>
Erro
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 não
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">),
é 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 if MidB(session("Numero"),1,3)=93
name="NomePara" value="<%=session("Numero")%>">
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")
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
%>
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
vlink="#FFFFFF" alink="#FFFFFF">
height="100%" align="center" vspace="0"
hspace="0">
s
<%
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
%>
<%
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!