associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

WebSMS

Receita: Web SMS

Diariamente, eu envio várias mensagens para alguns telefones celulares, mas as vezes é um pouco trabalhoso abrir o browser só pra entrar no site da operadora (no caso, Telemig Celular) e enviar a mensagem. Resolvi fazer esse módulo que valida e envia a mensagem. Não deve ser difícil aproveitar a idéia, (e usar a mesma interface), para os sites de outras operadoras.

Código

   1 import urllib
   2 
   3 
   4 class MessageError(Exception):
   5     pass
   6 
   7 class Message(object):
   8     def __init__(self):
   9         self.valid = False
  10         self.url = "http://200.152.210.59/cgi-bin/waura.exe"
  11         self.frm = {'operadora':"1",
  12                      'servico':"3",
  13                      'totalChars':"0",
  14                      'msg_total':"",
  15                      'Tel_Orig':"",
  16                      'Mensagem':"",
  17                      'DDD':"",
  18                      'Tel_Dest':"",
  19                      'Nome_Orig':"",
  20                      'Mensagem1':"",
  21                      'totalCounter':"145",
  22                      }
  23         
  24     def setAreaCode(self, code):
  25         self.frm['DDD'] = str(code)
  26         self.valid = False
  27 
  28     def setDestination(self, dest):
  29         self.frm['Tel_Dest'] = str(dest)
  30         self.valid = False
  31         
  32     def setSender(self, sender):
  33         self.frm['Nome_Orig'] = str(sender)
  34         self.valid = False
  35 
  36     def setMessage(self, message):
  37         self.frm['Mensagem1'] = str(message)
  38         self.valid = False
  39         
  40     def validate(self):
  41         if self.valid:
  42             return True, "message not changed"
  43         if not self.frm['Mensagem1']:
  44             return False, "no message to send"
  45         if not self.frm['Tel_Dest']:
  46             return False, "no destination"
  47         if self.frm['DDD'] not in [str(x) for x in range(31, 39)]:
  48             return False, "invalid area code"
  49         if not self.frm['Tel_Dest'].isdigit():
  50             return False, "invalid destination number"
  51 
  52         text1 = self.frm['Mensagem1']
  53         text2 = self.frm['Nome_Orig']
  54         text3 = self.frm['Tel_Orig']
  55         len1 = len(text1)
  56         len2 = len(text2)
  57         len3 = len(text3)
  58         total = len1 + len2 + len3
  59 
  60         self.frm['totalChars'] = str(total)
  61         self.frm['totalCounters'] = str(145 - total)
  62         self.frm['msg_total'] = text1
  63         
  64         if total > 145:
  65             return False, "message length exceeded"
  66 
  67 
  68         self.frm['target'] = "WebSMS"
  69         self.frm['Mensagem'] = self.frm['Mensagem1']
  70         self.frm['Mensagem1'] = ""
  71 
  72         self.valid = True
  73         
  74         return True, "OK"
  75     
  76     def encode(self):
  77         isvalid, msg = self.validate()
  78 
  79         if not isvalid:
  80             raise MessageError(msg)
  81 
  82         params = urllib.urlencode(self.frm)
  83         return params
  84 
  85     def send(self):
  86         data = self.encode()
  87         url = self.url
  88 
  89         results = urllib.urlopen(url, data)
  90         return results

Volta para CookBook.


PedroWerneck