en de fr es ja it pt

2 декабря 2012 г.

Бесплатные sms уведомления через google calendar

Задача: получать по смс уведомления от своего скрипта
Решение: настроить на gmail фильтр ставящий метку на нужные письма, создать скрипт в google docs который при появлении писем с нужной меткой создает в google calendar событие по которому мне отправляется бесплатное смс уведомление. Потом из скрипта отправлять себе письма попадающие под фильтр.

Шаг 1: включение смс уведомлений в google calendar и создание календаря

1.1 - Откройте Google calendar -> Settings -> вкладка Mobile Setup, добавьте и верифицируйте номер телефона.
1.2 - Перейдите на вкладку Calendars -> Create new calendar, Calendar name например "sms"

Шаг 2: создание метки и фильтра в gmail

2.1 - Откройте Google mail -> Settings -> Labels -> Create new label, Label name например "sms"
2.2 - Перейдите на вкладку Filters -> Create a new filter, я выбрал фильтрацию по теме письма, куда записал секретный ключ (например "smsnotify_QzRX59Hpn86R36Gg" - теперь только письма с такой темой будут считаться нужными для отправки уведомлений) -> Create filter with this search -> выберите следующие чекбоксы: "Skip the Inbox (Archive it)", "Apply the label: sms", "Never send it to Spam" и нажмите Create filter

Шаг 3: настройка скрипта в google docs

3.1 - Откройте Google docs (drive), Create -> Spreadsheet. В меню выберите Tools -> Script editor... -> Blank project. Скопируйте и отредактируйте следующий код:
// Gmail label name
var label_name = 'sms';
 
// Calendar name
var calendar_name = 'sms';
 
function send_sms() {
  try {
    var label = GmailApp.getUserLabelByName(label_name)
    var currentTime = new Date().getTime();
    var threads = label.getThreads();
    for(var t = 0; t < threads.length; t++) {
      var thread_messages = threads[t].getMessages();
      for(var m = 0; m < thread_messages.length; m++) {
        var message = thread_messages[m];
        if(message.isUnread()) {
          var from = message.getFrom();
          var body = message.getBody();
          var now = new Date().getTime();
          var calendar_date = new Date(now + 60 * 1000);
          var calendar_title = body;
          CalendarApp.getCalendarsByName(calendar_name)[0].createEvent(calendar_title,
calendar_date, calendar_date).addSmsReminder(0); 
        }
      }
      threads[t].markRead();
    }
  } catch(error){}
}
3.2 - В меню выберите File -> Save, Project name например "sms".
3.3 - В меню выберите Resources -> All your triggers -> Click here to add one now. В Events выберите Time Driven | Minutes Times | Every minute и нажмите Save. Авторизуйте доступ скрипта к google mail и calendar нажав Authorize

Теперь можете проверить работу этой связки отправив себе письмо, которое попадет под созданный в пункте 2.2 фильтр. В течении нескольких (обычно 2-3) минут вы должны получить смс с текстом письма.

Для простых уведомлений из скрипта схема немного усложнена, но при таком подходе можно быстро сделать уведомления и о других письмах.
Все настраивалось и без проблем работало на своем домене прикрепленном к google.
Идея взята отсюда

Комментариев нет:

Отправить комментарий