구글 캘린더를 이용하여 SMS 알림이 사용하기 좀 도와주세요~ (python 또는 perl)
구글 캘린더는 스캐쥴을 관리하며, 지정한 시간이 되었을때 사용자에게 popup, email, sms 등의 방법으로 알람을 해줍니다.
이런 특성과 구글 캘린더 API를 이용하여, 파이썬 또는 펄로 무료 SMS 알림이를 구현할 수 있나 봅니다.
아마도.. 구글 캘린더의 편법이용, 남용 일 수도 있겠네요.
아래의 샘플 코드는 http://www.randomshouting.com/2011/02/06/Free-SMS-notifications-from-Google.html 에서 얻은 파이썬 소스코드 입니다.
import atom import gdata.calendar import gdata.calendar.service import time TIME_FORMAT = '%Y-%m-%dT%H:%M:%S.000Z' CALENDAR_URL = 'http://www.google.com/calendar/feeds/default/private/full' class GoogleSms: def __init__(self, username, password): self.username = username self.password = password service = gdata.calendar.service.CalendarService() service.email = username service.password = password service.source = 'GoogleSms' service.ProgrammaticLogin() self.calendar_service = service def send(self, message): event_time = time.strftime(TIME_FORMAT, time.gmtime(time.time()+60)) event = gdata.calendar.CalendarEventEntry() event.title = atom.Title(text=message) event.content = atom.Content(text=message) reminder = gdata.calendar.Reminder(minutes=1) reminder.method = 'sms' when = gdata.calendar.When(event_time) when.reminder.append(reminder) event.when.append(when) try: # Add the entry to calendar cal_event = self.calendar_service.InsertEvent(event, CALENDAR_URL) except gdata.service.RequestError, request_exception: raise if __name__ == '__main__': sms = GoogleSms('account@gmail.com', 'yourpassword') sms.send('Alert!')
구글캘린더에서 SMS 수신이 가능하게끔 세팅을 마친후
위의 소스코드에서 구글 계정과 패스워드 를 입력하여 테스트를 해보았습니다.
하지만, 해당 일정이 정상적으로 구글캘린더에 삽입이 되고, SMS알람도 정상적으로 등록이 되기는 하는데
실제로 SMS이 오지는 않습니다
(물론 구글캘린더에서 직접 일정을 입력하고 SMS알람을 설정하면 정상적으로 수신됩니다)
무엇이 문제일까요?
구글이 위와 같은 남용을 막기위해 조치를 취해서 안되는걸까요?
아니면 소스코드에 문제가 있는걸까요?
참고로 펄로 작성된 소스코드는 http://advent.perl.kr/2010/2010-12-02.html 이곳에 있습니다.
하지만 이 역시 일정이 등록이 되는데,
$entry->reminder('sms', 'minutes', 1); 라는 부분 자체가 작동하지 않는듯 합니다. (SMS알람이 등록조차 되지 않음)
혹시 아시는 분 있으시면 조언좀 부탁드립니다~
저도 함 해봤는데... 한번에 잘 되지는
저도 함 해봤는데... 한번에 잘 되지는 않더군요.
수시간 후에 다시 해보니 문자가 오더군요.
루비 코드로 며칠 전 테스트 해봤습니다.
일정과 SMS알람을 등록하는 코드입니다.
원래 perl 코드를 보면 private 주소를 입력하고 어쩌구저쩌구 되어 있던데..
아래처럼 간단하게 해도 작동하더군요.
첫 시도부터 (달력에는 SMS 알람 등록되어 있음을 확인) SMS는 오지 않았지만, 수시간 후에 다시 해보니 SMS가 잘 오더군요.
그런가요?
처음엔 안되고 수시간후에 되나요????? (조금 이상하네요..)
혹시, 처음에는 API를 이용해서 해당 소스코드로 일정을 추가한후 -> 웹사이트에서 시간을 수정하거나 한건 아닌가요? (이럴경우는 SMS가 오긴 오던데..)
저는 무슨짓을 해봐도... API를 이용한 일정을 입력할경우엔... SMS는 죽어도 안되더라구요... ㅠㅠ
(API를 이용해서 SMS와 popup을 동시에 입력할경우 popup만 작동)
펄 달력 기사 저자입니다.
음 확인해보니 다소 문제가 있네요. 예전에 따놓은 private 주소로 하면 잘되는데 최근 갱신한 private 주소로 하면 안되는 현상이 있음을 확인했습니다. 문제가 뭔지 알아보도록 하겠습니다. ;)
치즈~ ;)
답변 감사합니다.
그렇죠? 잘 안되는 문제가 발생하죠?
혹시 문제를 알게 되시면 꼭좀 알려주세요~~
감사합니다.
ps. http://stackoverflow.com/questions/6756940/not-able-to-get-sms-alert-when-a-calendar-entry-is-added-through-code 의 질문을 보니, 이미 몇달전부터 같은 문제가 있어보입니다.
아마 구글에서 SMS 남용을 막은거 같네요 ㅠㅠ
제가 만든 프로그램도
구글 Open API로 제가 만든 구글캘린더, 구글주소록 프로그램도 한번 써보세요.
SKT, KT, 천리안 무료문자를 이용해 일정말고도 문자전송할 수도 있지요.
http://capofcom.tistory.com/
구글 Open API는 일정 데이터를 핸들링하는 기술을 제공하기때문에
데이터베이스처럼 코딩능력만 있으면 자신이 좋아하는 방식으로 단장할 수 있는데
제가 만든 이프로그램에서 제일 자부심(?)을 갖는건
이벤트 시간설정할 때 24시간 시계를 마우스로 드래그앤드랍으로 쉽게 한점이지요. ^^
댓글 달기