Bramka SMS od Google
Oficjalnie Google takiej usługi przynajmniej w Polsce nie udostępnia. Można to jednak osiągnąć w sposób pośredni, który chciałbym dzisiaj przedstawić. Jest bardzo prawdopodobne, że już niebawem, stosowanie takich rozwiązań będzie zbędne, bo ceny usług transmisji danych tanieją, a telefony swoją funkcjonalnością przypominają coraz bardziej PDA.
Spośród aplikacji Google, powiadomienia SMS na tą chwilę możemy otrzymywać jedynie Google Calendar. Dzięki bardzo dobrej polityce tej firmy, do większości ich aplikacji dostępne jest API, które sprawia, że ich integracja ze swoimi rozwiązaniami jest znacznie prostsza. Calendar API jest świetnie udokumentowane, wystarczyła chwila i narzędzie do wysyłania SMS’ów było gotowe.
Do pełni szczęścia potrzebne jest konto w Google, a na nim Gmail i kalendarz. Posiadając własną domenę oraz uruchomione Google Apps, można założyć sobie dedykowane konto np. powiadomienia@domena.pl co jest znacznie elastyczniejszym rozwiązaniem.
Wymagania: Python 2.4+, Python Client Library
#!/usr/bin/python
__author__ = 'mw AT nme.pl'
__version__ = '1.1'
__date__ = 'pią lip 31 10:42:26 CEST 2009'
class setup:
class google:
login = 'KONTO@GOOGLE'
password = 'HASŁO'
retries = 3
from elementtree import ElementTree
import gdata.calendar.service
import gdata.service
import atom.service
import gdata.calendar
import atom
import getopt
import sys
import string
import time
class CalendarNotify:
def __init__(self):
self.cal_client = gdata.calendar.service.CalendarService()
self.cal_client.email = setup.google.login
self.cal_client.password = setup.google.password
self.cal_client.source = 'api'
self.cal_client.ProgrammaticLogin()
def reminder(self,event,minutes):
for a_when in event.when:
if len(a_when.reminder) > 0:
a_when.reminder[0].minutes = minutes
else:
a_when.reminder.append(gdata.calendar.Reminder(minutes=minutes))
self.cal_client.UpdateEvent(event.GetEditLink().href, event)
def event(self,title,where=None):
try:
# add event
event = gdata.calendar.CalendarEventEntry()
event.title = atom.Title(text=title)
#event.content = atom.Content(text=content)
if where:
event.where.append(gdata.calendar.Where(value_string=where))
start_time = time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime(time.time() + 180))
end_time = time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime(time.time() + 180 + 60))
event.when.append(gdata.calendar.When(start_time=start_time, end_time=end_time))
new_event = self.cal_client.InsertEvent(event, '/calendar/feeds/default/private/full')
# add reminder
self.reminder(new_event,1)
except:
return False
return True
def parse(args):
where = None
if len(args):
if args[0][0] == '@':
where = args.pop(0)
count = 0
while count < setup.retries:
if cal.event(' '.join(args),where):
break
count += 1
try:
cal = CalendarNotify()
except:
print >>sys.stderr, 'Unable to login to Google Calendar!'
exit(1)
if __name__ == '__main__':
args = sys.argv
name = args.pop(0)
if not len(args):
print >>sys.stderr, 'Usage: %s [@where] message\n' % name
exit(1)
parse(args)
Uruchamiając skrypt można podać opcjonalny parametr @lokalizacja, a następnie podajemy treść powiadomienia – przykładowa komenda:
./sms.py @firma awaria bazy danych
Mbank Mobile: E-mail jako SMS
Zdecydowałem się na skorzystanie z oferty wirtualnego operatora komórkowego Mbank Mobile, którego najnowsza oferta okazała się być prawie dokładnie taką, jakiej potrzebowałem.
Brakowało mi w ich ofercie informacji – czy (lub w jaki sposób) można wysłać sobie samemu na komórkę, smsy z Internetu. Każdy kto ma styczność z administracją serwerami lub aplikacjami, może potrzebować tego rodzaju powiadomień o problemach lub zdarzeniach.
Jak się okazało po włożeniu karty do telefonu – Mbank Mobile jest wirtualnym operatorem Plusa, zatem wysyłanie maili na 48xxxxxxxxx@text.plusgsm.pl działa normalnie.
Zanim jednak włożyłem kartę do telefonu… przygotowałem sobie rozwiązanie które:
- wykorzystuje powiadomienia SMS w aplikacji Google Calendar z poziomu skryptu
- uruchomiłem własny mail2sms uzupełniając rozwiązanie o funkcjonalność obsługi dedykowanego konta w usłudze Google Apps
- ostatecznie uruchomiłem na swoim koncie w OVH całą usługę
Dla własnych potrzeb zdecydowałem się ostatecznie na rozwiązanie oparte o Google – mam nadzieję, że komuś również się przyda
